用C语言写一段基于51单片机开关定时器及中断的代码
时间: 2024-01-25 21:02:19 浏览: 80
以下是一段基于51单片机开关定时器及中断的代码,实现了定时器1的中断功能:
```
#include <reg51.h>
// 定义计数器初值,10毫秒
#define TIMER1_VALUE 65536-10000/12
// 定义中断标志位
volatile unsigned char Timer1Flag = 0;
// 定时器1中断服务程序
void Timer1_ISR() interrupt 3
{
TH1 = TIMER1_VALUE / 256;
TL1 = TIMER1_VALUE % 256;
Timer1Flag = 1;
}
int main()
{
// 初始化定时器1
TMOD |= 0x10; // 设置定时器1为模式1
TH1 = TIMER1_VALUE / 256;
TL1 = TIMER1_VALUE % 256;
TR1 = 1; // 启动定时器1
// 开启总中断
EA = 1;
while(1)
{
if(Timer1Flag)
{
// 定时器1中断处理
// ...
Timer1Flag = 0;
}
}
}
```
在主函数中,我们先初始化定时器1为模式1,然后开启定时器1,并开启总中断。在一个无限循环中,我们不断检查定时器1的中断标志位,一旦标志位被置位,就进行定时器1中断处理,并把标志位清零。定时器1的中断服务程序用来重新设置计数器初值,并将中断标志位置位。
阅读全文