|
- #include <REGX51.H>
- #define uchar unsigned char
- #define uint unsigned int
- sbit DU=P2^0;
- sbit WEI=P2^1;
- bit LightFlag=1;
- uchar code DuanMa[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- uchar LightBuf[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
- uint cnt;
- void main()
- {
- uchar num=15;
- EA=1;
- TH0=(65536-2000)/256;
- TL0=(65536-2000)%256;
- TMOD&=0XFC;
- TMOD|=0X01;
- ET0=1;
- TR0=1;
- while(1)
- {
- if(LightFlag==1)
- {
- LightFlag==0;
- num--;
- LightBuf[0]=DuanMa[num%10];
- LightBuf[1]=DuanMa[num/10%10];
- }
- if(num==0)
- {
- P0=0x00;
- LightBuf[0]=DuanMa[num%10];
- LightBuf[1]=DuanMa[num/10%10];
- }
- }
- }
- void Light_Scan()
- {
- static uchar i=0;
- switch(i)
- {
- case 0:P1=0x08;WEI=1;WEI=0;P1=LightBuf[0];DU=1;DU=0;i++;break;
- case 1:P1=0x04;WEI=1;WEI=0;P1=LightBuf[1];DU=1;DU=0;i=0;break;
- }
- }
- void Interrupt0() interrupt 1
- {
- TH0 = (65536 - 2000) / 256;
- TL0 = (65536 - 2000) % 256;
- cnt++;
- if(cnt>=500)
- {
- cnt = 0;
- LightFlag = 1;
- Light_Scan();
- }
- }
復(fù)制代碼 |
|