|
在51上用C写一个计时的程序,碰到一个问题,哪里不对呢?
[复制链接]
#include
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar code weitable[]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf};
uchar oclock,min;
uint num;
uint aa;
delay(uchar n)
{uint i,AI;
for (i=n;i>0;i--)
for (AI=100;AI>0;AI--);
}
/*display(uint number)
{
}*/
void time() interrupt 1
{
TH0=(65536-46053)/256;
TL0=(65536-46053)%256;
aa++;
}
void main()
{
uchar shi,ge;
TH0=(65536-46053)/256;
TL0=(65536-46053)%256;
TMOD=1;
EA=1;
ET0=1;
TR0=1;
if(aa==100)
{
num++;
aa=0;
}
shi=num/10;
ge=num%10;
while(1)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[shi];
dula=0;
delay(2);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[ge];
dula=0;
delay(2);
}
}
想用LED显示一个计秒的程序,第过一段时间在LED的前两位上数字加一,但不知哪里出错了,总是显示“00”,后来调示发现num++这句没有起做用,(就是if(aa==100){num++;aa=0;})这段程序没有起作用。aa变量是在累加,计时器也在工作。把num++放入中断函数中去,num++起作用了,但display函数不运行了。这是怎么回事呢?
|
|