pic单片机定时器2实现按键按下后led灯一直闪烁,闪烁频率1s一次
时间: 2024-05-05 09:15:05 浏览: 179
以下是AT89C52单片机定时器2实现按键按下后LED灯一直闪烁,闪烁频率1s一次的代码:
```
#include <reg52.h>
sbit LED = P1^0; //定义P1.0为LED控制引脚
sbit KEY = P3^2; //定义P3.2为按键输入引脚
void Timer2Init(void); //定时器2初始化函数
void main()
{
Timer2Init(); //初始化定时器2
while(1)
{
if(KEY == 0) //当按键按下时
{
LED = ~LED; //LED灯取反
while(!KEY); //等待按键释放
}
}
}
void Timer2Init(void)
{
RCAP2H = 0x3C; //设置定时器2重载值为0x3C00,定时1s
RCAP2L = 0x00;
T2CON = 0x04; //设置定时器2为模式1,启动定时器2
EA = 1; //开启总中断
ET2 = 1; //开启定时器2中断
}
void Timer2() interrupt 5 //定时器2中断函数
{
static unsigned char count = 0; //静态计数器
TH2 = 0x3C; //重新装载定时器2重载值
TL2 = 0x00;
count++; //计数器加1
if(count == 50) //当计数器累计到50时,即1s
{
count = 0; //计数器清零
LED = ~LED; //LED灯取反
}
}
```
上述代码中,我们通过定时器2中断实现了LED灯1s一次的闪烁。当按键按下时,LED灯会一直闪烁。按键释放后,LED灯停止闪烁。定时器2的重载值为0x3C00,即计数器累计到50时,定时1s。
阅读全文