1.定时器:(3个TMR0,TMR1,TMR2)
TMR0,8位位累加定时、计数寄存器,并带有预分频器。若考虑预分频器的效果,其固有定时为65ms。如果用作通用计数器,可采用外部T0CK1作为计数触发信号。
与TMR0相关的寄存器:TMR0(初始值),OPTION_REG(选择项寄存器T0CS,T0SE,PSA,PS2~PS0),INTCON(中断控制寄存器:GIE,T0IE,T0IF),TRISA(要求外部信号T0CK1担任TMR0的触发计数功能,此时该引脚必须设定为输入方式,0,RA4作为一般的输出引脚;1,作为输入引脚,为T0CK1提供一个通道)。
定时,计数从其内部工作方式分析一般表现为计数累加功能,通常是由特定的时钟脉冲来触发驱动。但这个时钟采用内部时钟,则称之为承担定时功能;也可由外部引脚输入的时钟,即触发计数,则称之为计数器功能。OPTION_REG:T0CS(T0 clock select:0内,1外)。
TMR1,16位累加定时/计数寄存器对TMR1H:TMR1L,预分频器和内置低功耗低频时基振荡器。若做通用计数器,可采用外部T1CK1作为计数触发信号。另外,利用内置的低频时基振荡器,可实现实时时钟RTC输出等功能,并可在系统休眠模式下,照常实现计数工作。还有,与CCP模块配合使用,实现输入信号边沿的捕捉和输出信号的比较功能,在频率检测和脉冲宽度测量中得到广泛应用(此时必须采用同步计数。)。(同样,T1CS选择内部系统时钟,设为定时方式;外部时钟,设为计数方式)
与TMR1相关的寄存器:INTCON(中断控制寄存器),T1CON,PIE1(perpheral外围,第一外围中断),PIR1,TMR1L,TMR1H
T1CON:TMR1ON,TMR1ON计数1启/0停。TMR1CS:时钟源选择位(0,内定时;1,外计数)。/T1SYNC:TMR1外部输入时钟与系统时钟同步控制为主动参数(只有工作于计数方式时,才能进行同步设置)0:TMR1外部引脚时钟信号或者自带振荡器信号与系统时钟保持同步;1:异步。/T1OSCEN:TMR1自带振荡器使能位,主动参数。0:禁止TMR1低频振荡器工作,1:使能。T1CKPS1~T1CKPS0预分频器的分频比选择位。T1OSO和T1OSI跨接石英晶体和电容构成很常用的振荡电路,工作频率取决于外接晶体,外接振荡器的最大好处在于即使单片机进入休眠模式,相应的器件任然能够处于工作状态。
TMR2,8位专用定时器,不能承担外部信号的计数功能。主要由一个可编程预分频器,一个可编程后分频器和一个可编程8位周期寄存器PR2等部件构成。TMR2有一个非常强大的功能,就是利用周期寄存器PR2与CCP模块进行配合,提供脉宽调制pwm功能的时基信号,可以承担各类电机的变频调速功能。在主同串行SPI模式通信中,TMR2模块还可以提供波特率时钟信号。8位周期寄存器PR2,其数值由用户输入,TMR2的计数溢出与该设置值有关,因而可产生浮动溢出效果。TMR2的计数溢出并不表示中断标志TMR2IF置位,而对溢出次数经过后分频处理后才有可能达到溢出中断的效果,是TMR2IF置位。不管哪种复位都会将TMR2寄存器清零。
相关寄存器:INTCON,PIE1,PIR1,TMR2,T2CON,PR2(定时周期寄存器)
溢出:TMR2与PR2实时对比时间的长短,一旦两者内容匹配即刻发出“溢出”信息,比较溢出并不能直接产生溢出中断,而仅仅作为后分频器的计数脉冲,只有当后分频器在产生溢出时,才回将溢出中断标志位TMR2IF置位。
分频器:预先分频对于进入TMR2的时钟信号进行分频。而后分频器主要是对比较匹配输出的时序信号进行分频,可以连续选择16种不同的分频比。
定时方式:即可承担一般的定时功能,又能够与CCP模块配合形成独特的脉宽调整PWM方式。(TMR2C触发信号来自于内部系统时钟,所以当单片机处于休眠状态时,TMR2就将停止累加计数。)作为通用定时器使用时,PR2的值固定为FFH。T=P1*P2*(256-K).浮动“溢出”周期,特别在变频电机控制中,就是利用TMR2浮动“溢出”功能获得周期可调的时基发生器,可以与CCP模块配合实现PWM脉宽调制。信号周期的大小取决于周期寄存器PR2和两个分频器所设定的分频器所设定的分频比。TMR2“溢出”周期的计算式为:T=P1*P2*(PR2+1)。
2.中断系统
PIC16F877单片机有14个中断源,每个中断源都可配置有一个中断使能位(IE)和一个中断标志位(IF)。原则上着14种中断源没有优先级之分,只能依靠软件的前后处理来满足轻重缓急,合用一个中断服务程序入口地址。中断源14个中断源可分2类:一类是基本中断源或称内部中断源3个,(外部触发中断INT,TMR0溢出中断和RB端口电平变化中断;)另一类是特殊中断源或称外部中断源共11个。
对于内部3个中断源,中断使能条件有2个:一个是中断源本身使能位,另一个是总中断使能位GIE。 对于11个外部中断源,中断使能条件有3个:一个是中断源本身使能位,二个是总中断使能位GIE,三个是外围中断使能位PEIE。(当开放多个中断源时,必须逐个判别中断源的标志位才能唯一确定真正的中断源。只有执行RETFIE,才会返回主程序断点处的下一条指令继续执行。GIE会自动清零,其他需要软件清零)。1专用存储器备份,2中断源识别(依次检测)3中断应急服务程序(中断响应时不允许出现中断嵌套)。
OPTION_REG;INTCON;PIE1(8个);PIR1(8个);PIE2(3个);PIR2(3个);