?? last.c
字號:
#include <pic16f7x.h>
unsigned short i=0,j=0;
char flag=1,Temp=0;
unsigned char d[11]={0x18,0xf9,0x2c,0x68,0xc9,0x4a,0x0a,0xf8,0x08,0x48,0xff};
unsigned char cnt=0;
unsigned char AD0[6]={1,10,2,3,4,10},AD1[6]={2,10,3,4,5,10};
unsigned char ADD0=34,ADD1=143;
unsigned char m=0;
unsigned char n=0;
unsigned int p=0;
initial()
{
GIE=1;
PEIE=1;
TMR1CS=0;//工作于定時方式
T1CKPS1=1;
T1CKPS0=0;//4分頻
PSA=0;
TMR1IF=0;// 關標志位
TMR1IE=1; //中斷使能
TMR1H=0xFC; //設置時間
TMR1L=0x17;
TRISB=0X00;
}
ADinitial()
{
ADCS1=1;
ADCS0=0; //16M/32
CHS2=0;
CHS1=0;
CHS0=0;//0通道RA0
PCFG2=0 ;
PCFG1=0 ;
PCFG0=0 ;//全部為模擬輸入口
ADON=1;
TRISA=0xff;
ADIF=0;
ADIE=1;
}
del_AD()
{
AD0[2]=ADD0/100;
AD0[3]=(ADD0%100)/10;
AD0[4]=ADD0%10;
AD1[2]=ADD1/100;
AD1[3]=(ADD1%100)/10;
AD1[4]=ADD1%10;
}
RS_ini()
{
SPBRG=0x19;//波特率為9600
BRGH=0;//低速模式
SYNC=0;//異步
SPEN=1;//串口使能位
TRMT=0;
TX9=0;//8位數據
TRISC6=0;//TX
TXEN=1;//允許發送
}
delay()
{
unsigned int zz=0;
for(zz=0;zz<0x4ff;zz++)
;
}
void main()
{
initial();
ADinitial();
RS_ini();
TMR1ON=1; //使能TMR1
ADGO=1;
while(1)
{
del_AD();
}
}
void interrupt HI_ISR()
{
if(TMR1IF)
{
TMR1IF=0;//清標志位 以便于下次的判斷
i++;
TMR1H=0xfc;
TMR1L=0x17;
if(i>500)
{
i=0;
if(m<6)
{
PORTB=d[AD0[m]];
}
else if(m<12)
{
PORTB=d[AD1[m-6]];
}
else if(m>12)
{
m=0;
PORTB=d[AD0[m]];
}
m++;
if(m%2==0)
{
TXREG=AD0[0]+0x30;
delay();
TXREG=AD0[2]+0x30;
delay();
TXREG=AD0[3]+0x30;
delay();
TXREG=AD0[4]+0x30;
delay();
TXREG='@';
delay();
TXREG=AD1[0]+0x30;
delay();
TXREG=AD1[2]+0x30;
delay();
TXREG=AD1[3]+0x30;
delay();
TXREG=AD1[4]+0x30;
delay();
TXREG='@';
}
}
}
if(ADIF)
{
ADIF=0;
flag=-flag;
if(flag==1)
{
CHS0=0;
CHS1=0;
CHS2=0;
ADD0=ADRES;
for(j=0;j<0xff;j++);
ADGO=1;
}
else
{
CHS0=1;
CHS1=0;
CHS2=0;
ADD1=ADRES;
for(j=0;j<0xff;j++);
ADGO=1;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -