pic单片机用定时器t2计时5s
时间: 2023-10-02 12:10:15 浏览: 178
PIC单片机定时器详细介绍
4星 · 用户满意度95%
这是一个基于PIC单片机的定时器T2计时5秒的示例代码:
```c
#include <xc.h>
#pragma config FOSC = INTOSCIO //内部振荡器
#pragma config WDTE = OFF //看门狗定时器关闭
#pragma config PWRTE = OFF //电源复位定时器关闭
#pragma config MCLRE = OFF //MCLR引脚功能关闭
#pragma config CP = OFF //程序保护关闭
#pragma config LVP = OFF //低电压编程关闭
void main(void) {
OSCCON = 0b01110000; //内部振荡器设为8MHz
T2CON = 0b00000111; //定时器T2预分频器为1:16,使定时器时钟频率为8MHz/16=500kHz
PR2 = 124; //设定T2的重载值为124,使TMR2计数至125时产生1ms的中断
TMR2 = 0; //清零T2计数器
INTCONbits.GIE = 1; //开启全局中断
INTCONbits.PEIE = 1; //开启外设中断
PIE1bits.TMR2IE = 1; //开启T2中断
T2CONbits.TMR2ON = 1; //开启T2定时器
while (1) {} //等待T2计时完成
}
void interrupt isr(void) {
if (PIE1bits.TMR2IE && PIR1bits.TMR2IF) { //检查T2中断标志位
PIR1bits.TMR2IF = 0; //清除T2中断标志位
static unsigned int count = 0; //定义一个静态变量count,用于计数
count++; //每次中断count自增1
if (count >= 5000) { //当count累计到5000时,T2计时5s
T2CONbits.TMR2ON = 0; //关闭T2定时器
//T2计时5s的代码放在这里
}
}
}
```
代码中使用了定时器T2来计时5秒,定时器T2的时钟频率为500kHz,重载值为124,因此每计数至125时产生1ms的中断。在中断服务程序中,定义一个静态变量count用于计数,每次中断count自增1,当count累计到5000时,T2计时5s结束。在T2计时5s的代码中,可以实现相应的功能,例如点亮LED等。
阅读全文