c51,12mhz单片机定时计数器定时两秒熄灭点亮灯,代码实现
时间: 2024-10-25 15:17:10 浏览: 14
C51单片机定时中断控制按键点亮流水灯实验课程程序设计
在C51编译器中,如果你使用8051系列单片机如AT89S52,想用定时器T0实现2秒钟的定时,可以按照以下步骤编写代码:
```c
#include <reg52.h> //包含8051寄存器定义
// 定义定时器初始化函数
void timer_init(void) {
TMOD = 0x01; // 设置TMOD为模式1,即16位自动重装定时器
TH0 = 0xFD; // 设置高8位初值,计算低8位(12MHz下,1us周期)
TL0 = 0xFA; // 计算出1000us=1ms,对应2秒为2000*1000=FAFD
}
// 定义中断服务程序
void interrupt void Timer0 Overflow() __attribute__((interrupt("TIMER0_OVF"))) {
TR0 = 0; // 熄灭LED(假设P1.0是LED)
TR0 = 1; // 再点亮LED
}
int main(void) {
timer_init(); // 初始化定时器
EA = 1; // 开启全局中断
ET0 = 1; // 启动定时器T0
while(1); // 无限循环,程序等待定时器溢出
}
阅读全文