我想倒计时14秒,但是仿真只有一位数码管在显示,而且也不动。
#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];
while(1);
}
}
}
void Light_Scan()
{
static uchar i=0;
switch(1)
{
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;
Light_Scan();
cnt++;
if(cnt>=500)
{
cnt=0;
LightFlag=1;
}
|