设计要求:
两个数码管实现从59开始显示倒计时时钟。
硬件电路连接
程序
#include<reg52.h>
unsigned char second,timer;
void t1_init() //中断初始化
{
TMOD=0x10; //软件启动定时器T1,方式1 0001 0000
IE=0x88; //EA=1;ET1=1;开总中断,开定时器T1中断 1000 1000
TH1=0x3c;
TL1=0xb0; //置入初值3CB0(H),15536(D),单次定时时间为50ms
TR1=1; //使能定时器T1中断
}
void main()
{
t1_init();
second=59; //从59开始倒计数
timer=0;
while(1);
}
void t1_func() interrupt 3 //定时器T1中断函数
{
TH1=0x3c; //重装初值
TL1=0xb0;
if(timer<20) //50ms*20=1s
{
timer=timer+1;
}
else if(timer==20) //1s时间到
{
timer=0;
if(second==0)
{
second=59;
}
else
{
second=second-1; //倒计时减1
}
}
P2=second/10; //取整数表示十位
P3=second%10; //取余数表示个位
}