keil代码at89c52倒计时提醒系统29秒倒计时9秒时led灯全亮
时间: 2023-11-12 10:09:04 浏览: 95
秒表_keil_秒表_AT89C51秒表_
5星 · 资源好评率100%
以下是基于AT89C52单片机的Keil C51代码,实现了一个29秒倒计时,当倒计时到达9秒时,LED灯全亮的提醒系统。
```
#include <reg52.h>
#define LED P1
void delay(unsigned int i) // 延时函数
{
unsigned int j;
for(j = 0; j < i; j++);
}
void main()
{
unsigned int i;
unsigned char flag;
TMOD = 0x01; // 定时器0工作在模式1下(16位计数器,定时/计数)
TH0 = 0xFC; // 定时器0的高8位初始值为0xFC
TL0 = 0x18; // 定时器0的低8位初始值为0x18
TR0 = 1; // 启动定时器0
flag = 0; // 标志位初始化为0
while(1)
{
if(TF0 == 1) // 定时器0溢出
{
TF0 = 0; // 清除定时器0溢出标志位
TH0 = 0xFC; // 定时器0的高8位重置为0xFC
TL0 = 0x18; // 定时器0的低8位重置为0x18
if(flag == 0) // 还未到达9秒
{
LED = ~LED; // LED灯取反
i++; // 计数器加1
if(i == 29) // 倒计时到达29秒
{
flag = 1; // 标志位置为1
i = 0; // 计数器清零
LED = 0x00; // LED灯灭
}
}
else // 到达9秒
{
LED = 0xFF; // LED灯全亮
delay(10000); // 延时等待
LED = 0x00; // LED灯灭
flag = 0; // 标志位重置为0
i = 0; // 计数器清零
}
}
}
}
```
代码中使用了定时器0来实现倒计时功能,当定时器0溢出时,LED灯状态会发生改变。当倒计时到达9秒时,LED灯会全亮,并延时一段时间后熄灭。
阅读全文