|
我这个秒表程序为什么十位显示的时候个位就不现实?代码如下
[复制链接]
#include
unsigned char code tab[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f};
unsigned time=0;//为一秒的计数周期
unsigned char count=0;//为59秒的计数周期
unsigned char a,b;//a为十位上的数,b为个位上的数
delay(unsigned int s )//延时函数几MS
{
unsigned char i;
while(s--)
for(i=0;i<240;i++);
}
display(unsigned char shiwei,unsigned char gewei)//显示函数 肯定是这里出了问题
{
P2=0XFE;
P0=tab[gewei];
delay(100);
P0=0XFF;
P2=0XFD;
P0=tab[shiwei];
delay(5000);
P0=0XFF;
}
void timer0() interrupt 1//定时器0的中断函数入口程序
{
TH0=0x3c;
TL0=0xb0;
time++;
if(time==20)
{
time=0;
count++;
if(count==59)
count=0;
}
}
void main()
{
TMOD=0x01;//定时器0工作方式1
TH0=0x3c;
TL0=0xb0;//设置初值为50MS
EA=1;
ET0=1;
TR0=1;
while(1)
{
a=count/10;
b=count%10;
display(a,b);
}
}
我在硬件上验证过,具体现象是:首先是个位从1开始,等一会显示2,然后3,一直到9。然后十位变成1,也就是10,虽然个位在向上加的时候,十位保持住了1,但个位每次加1,十位就和他一起闪一次。不知道我说清楚了没有,就像电子秒表一样显示。也就是用两个数码管循环显示0到59,两个数之间的时间间隔为一秒。本人不才,老是麻烦大家,望大家帮我。谢谢了
|
|