?? xiaoxian.c
字號:
#include <AT89x051.H>
unsigned char code seg[]={
63, 6, 91, 79, 102,109,125, 7,127,111 ,//;0,1,2,3,4,5,6,7,8,9
191,134,219, 207,230,237,253,135,255,239 ,//0.,1.,.... 8.,9.
0x11,0xC1, 0x63, 0x85, 0x61,0x71,0x91,0x30,0x1F,0x1D ,//A,b, C,d,E,F,H,P.,_,=
0x00,
0xC0,0x40
};
bit COMOK;
sbit NRE = 0xB2;//max485.re#
sbit WDI = 0xB5;//watchdog
sbit CE = 0xB7;//led
sbit CLK = 0x91;//led
sbit DAT = 0x90;//led
unsigned char pointer,com[5],dom[5],addr;long int a,b;
void display(unsigned char* dis);
main()
{
int i,j,k,x;
bit sw;
unsigned char l;
unsigned char dis[4];
P1_7 = 1; P1_6 = 1;
P1_5 = 1; P1_4 = 1;//回讀信號須先 setb 1
SP = 0x60; //stack head addr
WDI = 0;
COMOK= 0;
x=1;
for(i=0;i<20000;i++)WDI = !WDI;
dis[3]=P1_7;dis[2]=P1_6;dis[1]=P1_5;dis[0]=P1_4;
display(dis);
addr=P1;
addr=((addr&0xf0)|0x0a);
//addr=0xaa; //old
for(j=0;j<400;j++)
for(i=0;i<1000;i++)WDI = !WDI;
TMOD = 0x20;
TH1 = 0xff;
TL1 = 0xff;
TR1 = 1;
SCON = 0x40;
PCON = 0x80;
NRE = 0;
ET1 = 0;
ES = 1;
EA = 1;
pointer = 0;
i=0;l=10;
do {
if(i<6){
if(COMOK==0){
TH1=0xfd;//255-i;//fd:19200 fc:9600 fe:38400, ff:76800
TL1=0xfd;//255-i;//fb:4800 fa:2400
}
dis[3] = i; dis[2] = i+1;
dis[1] = i+2; dis[0] = i+3;
i++;//1234567890123456 <---
}
else{
if(COMOK==0){
TH1=0xfd;//255-l;//
TL1=0xfd;//255-l;//
if(l>15)l=0;
else l++;
}
if(sw)dis[3] = 10;
else dis[3] = 0;
dis[2] = 0; dis[1] = 0; dis[0] = COMOK;
sw=!sw;
}
WDI = !WDI;
display(dis);
for(j=0;j<10000;j++){ k=i*j; WDI = !WDI;}
}while(pointer<4);
while(x){
WDI = !WDI;
if(pointer>=4)
a=com[0]+com[1]*10+com[2]*100+com[3]*1000;
b=a;x=0; pointer=0;
display(com);}
while(1){
WDI = !WDI;
if(pointer>=4){
a=com[0]+com[1]*10+com[2]*100+com[3]*1000;
if((b-a>-50)&(b-a<50)!=0)
display(com);
b=a;
pointer=0;
}
}
}
void display(unsigned char * dis)
{
unsigned char i,j,k;
CLK = 0;CE = 0;
for(i=0;i<4;i++){
k=seg[dis[i]];
for(j=0;j<8;j++){
//if((seg[dis[i]]&(0x80>>j))==0) DAT = 1;
//else DAT = 0;
DAT = (k&0x80);
DAT = !DAT;
k = k<<1;
CLK = 0;
CLK = 1;CLK = 0;
}
}
CE = 1;
P3_4=!P3_4;
}
void receive(void) interrupt 4 using 3
{
unsigned char uc;
RI=0;
P3_4=!P3_4;
uc=SBUF;
if(uc==0x02)
{
COMOK=1; qishi=1;tingzhi=0
}
if(uc==0x03)
{
qishi=0;tingzhi=1
}
if(qishi==1)
{
if(pointer<4)
com[pointer++] = SBUF;//comtimes++%10;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -