单片机999秒倒计时程序
时间: 2024-01-07 14:04:47 浏览: 75
以下是一份基于AT89C52单片机的999秒倒计时程序:
```
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep = P1^5; // 蜂鸣器连接的IO口
void delay(uint i) // 延时函数
{
while (i--);
}
void main()
{
uint sec = 999; // 倒计时的秒数
uchar count = 0; // 记录蜂鸣器鸣叫次数
TMOD = 0x01; // 定时器0工作在模式1
TH0 = 0xFC; // 定时器0初值
TL0 = 0x66;
TR0 = 1; // 启动定时器0
while (sec > 0) // 倒计时循环
{
if (TF0 == 1) // 定时器0溢出
{
TF0 = 0; // 清除溢出标志
TH0 = 0xFC; // 重新赋初值
TL0 = 0x66;
sec--; // 秒数递减
if (sec % 10 == 0) // 每10秒蜂鸣器鸣叫一次
{
beep = 1; // 蜂鸣器鸣叫
delay(1000); // 延时1秒
beep = 0; // 蜂鸣器停止鸣叫
count++; // 记录鸣叫次数
}
}
}
while (count > 0) // 播放结束后,蜂鸣器鸣叫count次
{
beep = 1;
delay(1000);
beep = 0;
count--;
}
while (1); // 死循环
}
```
该程序使用定时器0来实现倒计时,每1秒钟会触发一次定时器0的溢出中断,将秒数递减,并且每10秒会触发一次蜂鸣器鸣叫。倒计时结束后,会根据蜂鸣器鸣叫的次数播放结束提示音。
阅读全文