相关文章
看一看:pic167f877简介
PIC16F877中的定时器模块
PIC 16F877基本上有三个定时器模块。这些定时器模块终端还与其他功能多路复用,以处理备用功能。这些定时器模块通常由符号timer-0、timer-1和timer-2表示。这些模块有助于在芯片内执行各种定时和计数功能。
定时器-0模块
定时器-0模块的主要定时/计数功能如下所示。
- 定时器-0模块内置8位定时器/计数器
- 它可以很容易地读/写
- 内置8位软件可编程预标量功能
- 轻松选择内部/外部时钟脉冲
- 从FFh值到00h值溢出的中断
- 外部时钟脉冲的边缘选择
定时器-0模块的框图如下图所示。定时器模式通常通过清除寄存器中的T0CS位来选择。在定时器模式下,当定时器0模块随每个指令周期增加时,写入TMR0寄存器,在接下来的两个指令周期内禁止增加。用户可以通过将调整后的值写入TMR0寄存器来解决此问题。通过在计数器模式下设置位T0CS来选择计数器模式。定时器0将在引脚RA4/T0CKI的每个上升沿或下降沿上递增。递增边缘由定时器0源边缘选择位T0SE确定。清除位T0SE选择上升沿。预定标器在定时器0模块和看门狗定时器之间互斥共享。
定时器-0中断
TMR0中断仅在TMR0寄存器从值FFh溢出到00h时激活。此溢出设置位TMR0IF。可通过清除位TMR0IE来屏蔽中断。在重新启用该中断之前,必须通过定时器0模块中断服务例程清除软件中的位TMR0IF。TMR0中断无法将处理器从睡眠中唤醒,因为计时器在睡眠期间关闭。与定时器0模块相关的主寄存器如下表所示。
定时器1模块
定时器1模块是一个16位定时器/计数器单元。也就是说,它由两个8位(8+8)寄存器(TMR1H,TMR1L)组成,这些寄存器易于读写。TMR1寄存器是TMR1H和TMR1L的一对,它的值从0000h增加到FFFFh,并滚动到0000h。
定时器1模块基本上在两种不同模式下工作。他们是
1) 定时器模式
2) 计数器模式
在定时器模式下,通过使用时钟选择位(TMR1CS)选择定时器1模块的工作模式。定时器1在每个指令周期中增加。但在计数器模式下,它会在外部时钟输入的每个上升沿上增加。定时器1引脚可通过设置/清除控制位(TMR1ON)轻松启用/禁用。该定时器1引脚还具有内部复位输入功能。它可以由两个CCP模块中的任何一个生成。
下图给出了定时器1模块的框图。
定时器模式下的定时器1操作
通过清除TMR1CS位,可以轻松选择定时器模式。在此模式下,定时器的输入时钟为FOSC/4。同步控制位T1SYNC无效,因为内部时钟始终同步。计时器1在同步模式下的操作
计数器模式
通过设置定时器1同步计数器选择位(TMR1CS),选择同步计数器模式。在此模式下,当设置位T1OSCEN时,引脚RC1/T1OSI/CCP2上时钟输入的每个上升沿上的定时器递增,或当位T1OSCEN清除时,引脚RC0/T1OSO/T1CKI上的定时器递增。
计时器1计数器操作
定时器1通常在两种模式下工作。定时器1可在同步或异步模式下工作,具体取决于定时器1同步计数器选择(TMR1CS)位的设置。当定时器1使用外部源递增时,递增发生在上升沿上。在计数器模式下启用计时器1后,在计数器开始增加之前,模块必须首先具有下降沿。计时器1在同步模式下的操作
计数器模式
通过设置位TMR1CS选择计数器模式。在此模式下,当设置位T1OSCEN时,引脚RC1/T1OSI/CCP2上时钟输入的每个上升沿上的定时器递增,或当位T1OSCEN清除时,引脚RC0/T1OSO/T1CKI上的定时器递增。如果清除T1SYNC,则外部时钟输入与内部相位时钟同步。同步在预分频器阶段之后完成。预分频器级是一个异步纹波计数器。
在此配置中,在睡眠模式期间,由于同步电路关闭,即使存在外部时钟,计时器1也不会增加。然而,预分频器将继续增加。
异步计数器模式下的计时器1操作
如果设置了控制位T1SYNC(T1CON<2>),则外部时钟输入不同步。计时器继续与内部相位时钟异步递增。计时器将在睡眠期间继续运行,并可在溢出时生成中断,从而唤醒处理器。但是,需要在软件中采取特殊预防措施来读取/写入计时器。在异步计数器模式下,计时器1不能用作捕获或比较操作的时基。
定时器1振荡器
晶体振荡器电路内置在引脚T1OSI(输入)和T1OSO(放大器输出)之间。它通过设置控制位T1OSCEN(T1CON<3>)启用。该振荡器为低功率振荡器,额定值高达200 kHz。它将在睡眠期间继续运行。它主要用于32 kHz晶体。下表显示了定时器1振荡器的电容器选择。定时器1振荡器与LP振荡器相同。
用户必须提供软件延时,以确保振荡器正确启动。各种频率的电容器选择如下表所示。
定时器1定时器/计数器模块的寄存器内存组织如下表所示。
定时器2模块
定时器2是一个带有预分频器和后分频器的8位定时器。它可用作CCP模块PWM模式的PWM(脉宽调制)时基。定时器2模块的框图如下图所示。
TMR2寄存器可读写,并在任何设备重置时清除。输入时钟(FOSC/4)具有1:1、1:4或1:16的预刻度选项,由控制位T2CKPS1:T2CKPS0(T2CON<1:0>)选择。定时器2模块有一个8位周期寄存器PR2。计时器2的值从00h开始递增,直到与PR2匹配,然后在下一个递增周期重置为00h。PR2是一个可读写寄存器。复位时,PR2寄存器初始化为FFh。TMR2的匹配输出通过一个4位后定标器(该后定标器提供1:1到1:16的缩放比例,包括1:1到1:16的缩放比例)生成TMR2中断(锁存在标志位TMR2IF(PIR1<1>)。定时器2可以通过清除控制位TMR2ON(T2CON<2>)来关闭,以最小化功耗。
定时器2模块的寄存器存储器组织如下表所示。
1.评论
‘在定时器模式下,当定时器0模块随每个指令周期增加时,写入TMR0寄存器,在接下来的两个指令周期内禁止增加。’
我不能理解这一点。。请告诉我哪两个指令周期??