PIC单片机通用定时器使用说明

一般所有单片机的定时器用做普通定时功能,都需要具备以下几点要素:

1. 时基:时基就是定时器的时钟来源,一般都是来源于内部时钟或外部时钟,并且一般都能设置对应的分频系数,因此要弄清楚 时基来源,分频器设置,设置完时钟来源和分频器就知道计时的最小单元。

2.当前计数器: 该寄存器反应的就是当前实时的计数值,这个计数值在每个计时最小单元的时间内加1或者减1。

3.计数匹配器:   一般向上计数的定时器肯定需要1个计数匹配器,当前计数器从0开始加1,一直加到与计数匹配器相等,则认为定时时间到,这个时候将置位对应标志位或者发出对应中断请求。也有向下计时器,从某个值一直减到0则认为定时时间到,这种定时器不需要计数匹配值。

4.定时中断控制:一般设置定时器都配合对应中断使用,当定时时间到,定时器将设置对应标志位,若使能了定时器中断,定时器将向CPU发出中断请求。

5.定时器计数开关,中断使能开关:有些定时器都有个使能开关,只有使能才开始计数,中断一般都有开关,只有在中断使能开关打开情况下,定时时间到才触发中断请求。

下面分析下PIC单片机的通用定时器TIMER0和TIMER2,并分析下其配置成通用定时器步骤

TIMER0

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个基于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等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值