求用单片机c语言编写的倒计时60s程序,为什么在百度上找的程序验证了现象不对

如题所述

嘎嘎嘎,刚好写过

60秒倒计时程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar temp,bai,shi,ge,num;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint);
void main()
{
temp=60;
num=0;
P2=0x00;

TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;

while(1)
{
shi=temp/10;
ge=temp%10;

P0=table[shi];
P2=0x02;
delay(5);

P0=table[ge];
P2=0x01;
delay(5);

}
}

void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
num++;
if(num==40)
{
num=0;
temp--;
if(temp==0)
{
temp=60;
}
}
}

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);

}追问

你的程序我编译过了试了,但不出现象,纠结死了!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-15
注意相关设置,需要根据硬件进行适当的调整追问

都调整了啊,为什么数码管上数字都不全呢,纠结了,换了别人的底板也是一样的,没现象!不过还是的谢谢你的帮助!

第2个回答  2011-06-15
定时不对,跟你的时钟,中断时间,或程序有关,这范围大了
第3个回答  2011-06-15
void T0_time()interrupt 1
改成void T0_time() interrupt 1
试一下追问

试过了,还是不行啊!你做出现像了吗?为什么我的不出现象啊?纠结!