PIC16F877单片机具有3个定时/计数器,分别是定时/计数器0(TIMER0)、定时/计数器1(TIMER1)和定时/计数器2(TIMER2)。为了叙述方便,后文中把“定时/计数器”简称为定时器。表7-1给出的是3个定时器模块功能比较。
表7-1 PIC16F877单片机中3个定时器模块功能比较
定时/计数器0(TIMER0)是一个8位的简单增量溢出型计数器,时钟源可以是内部指令时钟(来源于主频的四分频,术语表示为Fosc/4),也可以是来自RA4/T0CKI引脚的外部数字脉冲。当对内部系统时钟的标准脉冲序列进行计数时即为定时器,对外部脉冲进行计数时就作为计数器使用。当使用外部时钟时,可以选择用脉冲的上升沿或下降沿来触发,进行加1计数。为了扩大定时或计数范围,在TIMER0中设计了一个可编程预分频器。这个预分频器可以用于TIMER0,也可以用于“看门狗”定时器(WDT)。(www.daowen.com)
定时/计数器1(TIMER1)是一个16位定时/计数器,由两个可读/写的寄存器来保存计数结果。TIMER1可以从0开始加l计数,到0xFFFF后再加l计数溢出,产生溢出中断,同时计数值回到0。时钟源可以是内部系统时钟(Fosc/4),也可以是外部时钟。当对内部系统时钟的标准脉冲序列进行计数时即为定时器,对外部脉冲进行计数时就作为计数器使用。对外部时钟计数,可以选择与芯片同步工作,也可以选择与芯片异步工作。在异步工作方式下,TIMER1可以在CPU休眠状态时工作。为了扩大定时或计数范围,在定时/计数器l中也设计了一个可编程预分频器。同时,TIMER1可以配合捕捉/比较/PWM(CCP1或CCP2)工作,作为16位捕捉器或16位比较器的时基。
定时/计数器2(TIMER2)是一个8位定时/计数器,并带有一个预分频器和一个后分频器,它特别适合用做PWM的时基,芯片的任何复位都可以使TIMER2清零。在TIMER2中,还设置了一个周期寄存器PR2,当TIMER2的计数值与PR2的预置值相同(匹配)时,在下一个指令周期TIMER2会清零。匹配的输出经过后分频器置位中断标志。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。