proteus单片机实现60秒倒计时器
项目要实现的60s秒表倒计时器,用 AT89C51单片机的定时 / 计数器 T0 产生一秒的定时时间,实现 59 到 0秒的循环显示的功能。具体要求: 1)按下启动按键后,倒计时器开始工作,从60S开始倒计时。 2)再次按下启动按键后,倒计时器复位。 3)按下暂停按键后,倒计时器停止计时工作。 4)再次按下暂停按键后,倒计时器继续进行计时工作。 顺序图: 流程图: 组件图: 代码如下:
#include
unsigned char code LED[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char m,buf[4];
unsigned int shu,j;
void delay(unsigned char x)
{
unsigned char y;
for(;x>0;x--)
for(y=110;y>0;y--);
}
void dis(unsigned int temp)
{
unsigned char i;
buf[0]=0;
buf[1]=0;
buf[2]=temp/10;
buf[3]=temp%10;
for(i=0;i
TR0=~TR0;
}
void INT_1( ) interrupt 2
{
TR0=~TR0;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
shu=60;
j=0;
}
void TIME_0( ) interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
j++;
if(j==20)
{
j=0;
shu--;
if(shu==0)
TR0=0;
}
}
void main()
{
TCON=0x05;
IP=0x00;
TMOD=0x01;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
TR0=1;
IE=0x87;
shu=60;
j=1;
while(1)
{
dis(shu);
}
}
|