《PIC11定时器计数器TMR1解析》由会员分享,可在线阅读,更多相关《PIC11定时器计数器TMR1解析(33页珍藏版)》请在金锄头文库上搜索。
1、PIC11PIC11定时器计数器定时器计数器TMR1TMR1解析解析 可可可可以以以以与与与与CCPCCP模模模模块块块块配配配配合合合合使使使使用用用用,实实实实现现现现输输输输入入入入捕捕捕捕捉捉捉捉或或或或输输输输出出出出比较功能。比较功能。比较功能。比较功能。 TMR1TMR1由二个由二个由二个由二个8 8位寄存器位寄存器位寄存器位寄存器TMR1HTMR1H和和和和TMR1LTMR1L对对对对组成的组成的组成的组成的1616位定时器计数器位定时器计数器位定时器计数器位定时器计数器,可以由软件读写,可以由软件读写,可以由软件读写,可以由软件读写,这二个寄存器都是和这二个寄存器都是和这二个
2、寄存器都是和这二个寄存器都是和RAMRAM统一编址的,地址分别统一编址的,地址分别统一编址的,地址分别统一编址的,地址分别为为为为0EH0EH和和和和0FH0FH 。 TMR1H:TMR1LTMR1H:TMR1L寄存器对,从寄存器对,从寄存器对,从寄存器对,从0000H0000H递增到递增到递增到递增到FFFFHFFFFH(0(065535)65535)之后再返回到之后再返回到之后再返回到之后再返回到0000H0000H时,就会产生溢出,时,就会产生溢出,时,就会产生溢出,时,就会产生溢出,并且将溢出中断标志位并且将溢出中断标志位并且将溢出中断标志位并且将溢出中断标志位TMR1IFTMR1IF
3、设置为设置为设置为设置为1 1。如果此。如果此。如果此。如果此时相关的中断使能位时相关的中断使能位时相关的中断使能位时相关的中断使能位TMR1IETMR1IE和和和和GIEGIE都为都为都为都为1 1,就会,就会,就会,就会引起引起引起引起CPUCPU的中断响应。的中断响应。的中断响应。的中断响应。 TMR1TMR1的的的的触触触触发发发发信信信信号号号号源源源源可可可可来来来来自自自自内内内内部部部部系系系系统统统统时时时时钟钟钟钟、外外外外部部部部触触触触发发发发信信信信号号号号或或或或自自自自带带带带时时时时基基基基振振振振荡荡荡荡器器器器信信信信号号号号;因因因因此此此此即即即即可可可
4、可以以以以工工工工作作作作于于于于定定定定时时时时器器器器模模模模式式式式,又又又又可可可可工工工工作作作作于于于于计计计计数数数数器器器器模模模模式式式式,还可以用作实时时钟还可以用作实时时钟还可以用作实时时钟还可以用作实时时钟RTCRTC模式;模式;模式;模式;9.2 TMR19.2 TMR1相关的寄存器相关的寄存器相关的寄存器相关的寄存器 与与与与TMR1TMR1有关的寄存器如下表所列。这些寄有关的寄存器如下表所列。这些寄有关的寄存器如下表所列。这些寄有关的寄存器如下表所列。这些寄存器中的前存器中的前存器中的前存器中的前3 3个的功能及其作用,在个的功能及其作用,在个的功能及其作用,在个
5、的功能及其作用,在“ “中断系统中断系统中断系统中断系统” ”中已经介绍。在此先介绍中已经介绍。在此先介绍中已经介绍。在此先介绍中已经介绍。在此先介绍T1CON T1CON 控制寄存器。控制寄存器。控制寄存器。控制寄存器。TMRlTMRl控制寄存器控制寄存器控制寄存器控制寄存器T1CONT1CON TICON TICON只用到其低只用到其低只用到其低只用到其低6 6位,最高位,最高位,最高位,最高2 2位未用。其位未用。其位未用。其位未用。其各位的含义如下:各位的含义如下:各位的含义如下:各位的含义如下: lT1CKPS1T1CKPS1T1CKPS0T1CKPS0:分频器分频比选择位,如分频器
6、分频比选择位,如分频器分频比选择位,如分频器分频比选择位,如表表表表3.23.2所列所列所列所列lT1OSCEN:TMR1自带振荡器使能位。自带振荡器使能位。 1=允许允许TMR1振荡器起振;振荡器起振; 0=禁止禁止TMR1振荡器起振。振荡器起振。lT1SYNCT1SYNC:TMR1TMR1外外外外部部部部输输输输入入入入时时时时钟钟钟钟与与与与系系系系统统统统时时时时钟钟钟钟同同同同步步步步控控控控制制制制位位位位。该该该该位位位位只只只只有有有有在在在在TMR1TMR1工工工工作作作作于于于于计计计计数数数数器器器器方方方方式式式式(TMR1CS=1)(TMR1CS=1)才有效:才有效:
7、才有效:才有效: 1=TMR11=TMR1外部输入时钟与系统时钟不保持同步;外部输入时钟与系统时钟不保持同步;外部输入时钟与系统时钟不保持同步;外部输入时钟与系统时钟不保持同步;0=TMR10=TMR1外部输入时钟与系统时钟保持同步;外部输入时钟与系统时钟保持同步;外部输入时钟与系统时钟保持同步;外部输入时钟与系统时钟保持同步; 当当当当TMR1TMR1工作于定时器方式,该位不起作用。工作于定时器方式,该位不起作用。工作于定时器方式,该位不起作用。工作于定时器方式,该位不起作用。 l lTMR1CSTMR1CS:时钟源选择位。时钟源选择位。时钟源选择位。时钟源选择位。 1=1=选选选选择择择择
8、外外外外部部部部时时时时钟钟钟钟源源源源,即即即即时时时时钟钟钟钟信信信信号号号号来来来来源源源源于于于于外外外外部引脚或者自带振荡器;部引脚或者自带振荡器;部引脚或者自带振荡器;部引脚或者自带振荡器; 0=0=选择内部时钟源选择内部时钟源选择内部时钟源选择内部时钟源l lTMR1ONTMR1ON:TMR1TMR1使使使使能能能能控控控控制制制制位位位位,这这这这点点点点不不不不同同同同于于于于TMR0TMR0。 1=1=启用启用启用启用TMR1TMR1,使,使,使,使TMR1TMR1进入活动状态;进入活动状态;进入活动状态;进入活动状态; 0=0=关闭关闭关闭关闭TMR1TMR1,使,使,使
9、,使TMR1TMR1退出活动状态。退出活动状态。退出活动状态。退出活动状态。9.3 TMR19.3 TMR1的电路结构的电路结构的电路结构的电路结构 TMR1TMR1模块的内部结构如下图所示。模块的内部结构如下图所示。模块的内部结构如下图所示。模块的内部结构如下图所示。核心部分由核心部分由核心部分由核心部分由TMR1H:TMR1LTMR1H:TMR1L构成;构成;构成;构成;一一一一个个个个与与与与门门门门G1G1,对对对对送送送送入入入入计计计计数数数数器器器器的的的的触触触触发发发发信信信信号号号号,起起起起到到到到是否允许通行的控制作用。是否允许通行的控制作用。是否允许通行的控制作用。是
10、否允许通行的控制作用。一一一一个个个个信信信信号号号号复复复复用用用用器器器器MUX1MUX1,允允允允许许许许触触触触发发发发信信信信号号号号来来来来自自自自两两两两个个个个不同的路径。不同的路径。不同的路径。不同的路径。同同同同步步步步控控控控制制制制逻逻逻逻辑辑辑辑,将将将将经经经经过过过过外外外外部部部部引引引引脚脚脚脚送送送送入入入入的的的的触触触触发发发发信信信信号,与单片机内部的系统时钟进行同步。号,与单片机内部的系统时钟进行同步。号,与单片机内部的系统时钟进行同步。号,与单片机内部的系统时钟进行同步。 3 3位位位位宽宽宽宽的的的的预预预预分分分分频频频频器器器器,允允允允许许
11、许许选选选选择择择择四四四四种种种种不不不不同同同同的的的的分分分分频频频频比比比比1:11:1、1:21:2、1:41:4或或或或l:8l:8。 在在在在对对对对寄寄寄寄存存存存器器器器对对对对TMR1H:TMR1LTMR1H:TMR1L进进进进行行行行写写写写操操操操作作作作时,可以使预分频器被清时,可以使预分频器被清时,可以使预分频器被清时,可以使预分频器被清0 0。 另另另另一一一一个个个个信信信信号号号号复复复复用用用用器器器器MUX2MUX2,允允允允许许许许触触触触发发发发信信信信号号号号有有有有两两两两个个个个不不不不同同同同的的的的来来来来源源源源:一一一一个个个个是是是是由
12、由由由内内内内部部部部系系系系统统统统时时时时钟钟钟钟产产产产生生生生的的的的指指指指令令令令周周周周期期期期;另另另另一一一一个个个个是是是是取取取取自自自自于于于于外外外外部部部部引引引引脚脚脚脚的的的的触触触触发发发发信信信信号号号号或或或或自自自自带振荡器。带振荡器。带振荡器。带振荡器。一一一一个个个个施施施施密密密密特特特特触触触触发发发发器器器器G2G2,用用用用于于于于对对对对来来来来自自自自外外外外部部部部引引引引脚脚脚脚的的的的触触触触发信号或自带振荡器产生的时钟信号进行整形。发信号或自带振荡器产生的时钟信号进行整形。发信号或自带振荡器产生的时钟信号进行整形。发信号或自带振荡
13、器产生的时钟信号进行整形。一个由受控三态门一个由受控三态门一个由受控三态门一个由受控三态门G3G3构成的独立的低频低功耗晶构成的独立的低频低功耗晶构成的独立的低频低功耗晶构成的独立的低频低功耗晶体振荡器,用来为体振荡器,用来为体振荡器,用来为体振荡器,用来为TMR1TMR1提供独立于系统时钟的时提供独立于系统时钟的时提供独立于系统时钟的时提供独立于系统时钟的时间基准信号,如图间基准信号,如图间基准信号,如图间基准信号,如图3.43.4所示。所示。所示。所示。 只只只只有有有有当当当当使使使使能能能能端端端端T1OSCENT1OSCEN为为为为高高高高电电电电平平平平时时时时,振振振振荡荡荡荡器
14、器器器才才才才能能能能够够够够工工工工作作作作;而而而而当当当当T1OSCENT1OSCEN为为为为低低低低电电电电平平平平时时时时,非非非非门门门门G3G3的的的的输输输输出出出出端端端端呈呈呈呈现现现现高高高高阻阻阻阻状状状状态态态态,振振振振荡荡荡荡器器器器不不不不能能能能工工工工作作作作,此此此此时时时时,工工工工作作作作于于于于计计计计数数数数器器器器方方方方式式式式的的的的TMR1TMR1的的的的触触触触发发发发信信信信号,从号,从号,从号,从T1OSOT1OSO端加入。端加入。端加入。端加入。9.4 TMR19.4 TMR1的工作原理的工作原理的工作原理的工作原理 TMR1TMR
15、1有有有有定定定定时时时时器器器器方方方方式式式式和和和和计计计计数数数数器器器器方方方方式式式式;计计计计数数数数器器器器方方方方式式式式又又又又分分分分为为为为同同同同步步步步计计计计数数数数器器器器方方方方式式式式和和和和异异异异步步步步计计计计数数数数器器器器方方方方式。式。式。式。TMR1TMR1的工作信号共有的工作信号共有的工作信号共有的工作信号共有4 4种获取方式:种获取方式:种获取方式:种获取方式:由内部系统时钟提供;由内部系统时钟提供;由内部系统时钟提供;由内部系统时钟提供;从从从从RC0RC0T1OSOT1OSOT1CKIT1CKI口线输入;口线输入;口线输入;口线输入;
16、从从从从RC1RC1T1OSIT1OSICCP2CCP2口线输入;口线输入;口线输入;口线输入;自带振荡器产生。自带振荡器产生。自带振荡器产生。自带振荡器产生。l lTMR1TMR1的工作方式由的工作方式由的工作方式由的工作方式由TMR1CSTMR1CS确定。确定。确定。确定。 当当当当TMR1CS=0TMR1CS=0, TMR1 TMR1工作于定时器方式,工作于定时器方式,工作于定时器方式,工作于定时器方式, TMR1TMR1的的的的1616位位位位计计计计数数数数器器器器在在在在每每每每个个个个指指指指令令令令周周周周期期期期到到到到来来来来时时时时增增增增加加加加;当当当当TMR1CS=
17、1TMR1CS=1,TMR1TMR1工工工工作作作作于于于于计计计计数数数数器器器器方方方方式式式式,TMR1TMR1的的的的1616位位位位计计计计数数数数器器器器在在在在每每每每个个个个外外外外部部部部时时时时钟钟钟钟输输输输入入入入的的的的上上上上升升升升沿到来时增加。沿到来时增加。沿到来时增加。沿到来时增加。 l l一一一一旦旦旦旦TMR1TMR1自自自自带带带带振振振振荡荡荡荡器器器器被被被被使使使使能能能能(T1OSCEN=1)(T1OSCEN=1),RC1RC1T1OSIT1OSICCP2CCP2和和和和RC0RC0T1OSOT1OSOT1CKIT1CKI引引引引脚脚脚脚就就就就
18、自自自自动动动动设设设设为为为为专专专专用用用用引引引引脚脚脚脚,此此此此时时时时TRISCTRISC方方方方向向向向寄寄寄寄存器存器存器存器bit1bit1和和和和bit0bit0的值将失效。的值将失效。的值将失效。的值将失效。 当当当当对对对对寄寄寄寄存存存存器器器器TMR1HTMR1H或或或或TMR1LTMR1L进进进进行行行行赋赋赋赋值值值值时时时时,预分频器将会自动清预分频器将会自动清预分频器将会自动清预分频器将会自动清0 0。9.4.1 9.4.1 禁止禁止禁止禁止TMR1TMR1工作工作工作工作 TMRlTMRl比比比比TMR0TMR0多多多多一一一一种种种种选选选选择择择择,即
19、即即即可可可可以以以以被被被被关关关关闭闭闭闭。具具具具体体体体方方方方法法法法是是是是,将将将将TMRlTMRl使使使使能能能能位位位位TMR1ONTMR1ON清清清清0 0。此此此此时时时时,与与与与门门门门G1G1的的的的一一一一只只只只引引引引脚脚脚脚被被被被低低低低电电电电平平平平封封封封锁锁锁锁,因因因因此此此此使使使使得得得得累累累累加加加加计计计计数数数数器器器器维维维维持持持持静静静静止止止止状状状状态态态态。等等等等效效效效电电电电路路路路如如如如图图图图3.53.5所示。所示。所示。所示。9 9.4.2 .4.2 定时器工作方式定时器工作方式定时器工作方式定时器工作方式
20、当当当当TMR1CS=0TMR1CS=0时时时时,TMR1TMR1工工工工作作作作于于于于定定定定时时时时器器器器方方方方式式式式,时时时时钟钟钟钟来来来来自自自自内内内内部部部部foscfosc4 4指指指指令令令令周周周周期期期期。在在在在此此此此情情情情况况况况下下下下,同同同同步步步步控控控控制制制制信信信信号号号号T1SYNCT1SYNC不不不不起起起起作作作作用用用用,因因因因为为为为,TMR1TMR1的的的的输输输输入入入入信信信信号号号号与与与与系系系系统统统统时时时时钟钟钟钟总总总总是是是是同同同同步步步步的的的的。其其其其等等等等效效效效电电电电路路路路如如如如图图图图3.
21、63.6所所所所示示示示。这这这这种种种种模模模模式式式式常常常常用用用用来来来来延延延延时时时时、定时功能。定时功能。定时功能。定时功能。9.4.3 9.4.3 计数器工作方式计数器工作方式计数器工作方式计数器工作方式 当当当当TMRlCS=1TMRlCS=1,TMR1TMR1工工工工作作作作于于于于计计计计数数数数器器器器方方方方式式式式,时时时时钟钟钟钟来来来来源源源源于于于于外外外外部部部部引引引引脚脚脚脚或或或或自自自自带带带带振振振振荡荡荡荡器器器器。TMR1TMR1累累累累加计数器在触发信号的上升沿递增。加计数器在触发信号的上升沿递增。加计数器在触发信号的上升沿递增。加计数器在触
22、发信号的上升沿递增。 TMR1TMR1在在在在计计计计数数数数器器器器方方方方式式式式时时时时,存存存存在在在在输输输输入入入入触触触触发发发发信信信信号与系统时钟同步的问题。图号与系统时钟同步的问题。图号与系统时钟同步的问题。图号与系统时钟同步的问题。图3.83.8所示。所示。所示。所示。 控控控控制制制制位位位位T1SYNCT1SYNC的的的的设设设设定定定定,既既既既可可可可以以以以选选选选择择择择同同同同步步步步方方方方式式式式,也也也也可可可可以以以以选选选选择择择择异异异异步步步步方方方方式式式式。工工工工作作作作于于于于计计计计数数数数方方方方式式式式时,时,时,时,TMRlTM
23、Rl的触发信号有三种获取方法:的触发信号有三种获取方法:的触发信号有三种获取方法:的触发信号有三种获取方法:vv第第第第1 1种:当种:当种:当种:当T1OSCEN=0T1OSCEN=0时,外部触发信号从时,外部触发信号从时,外部触发信号从时,外部触发信号从T1OSOT1OSOT1CKIT1CKI引脚输入,如图引脚输入,如图引脚输入,如图引脚输入,如图3.9(a)3.9(a)所示;所示;所示;所示; vv第第第第2 2种,当种,当种,当种,当T1OSCEN=1T1OSCEN=1时,并且振荡器外部不时,并且振荡器外部不时,并且振荡器外部不时,并且振荡器外部不接石英晶体时,外部触发信号从引脚接石英
24、晶体时,外部触发信号从引脚接石英晶体时,外部触发信号从引脚接石英晶体时,外部触发信号从引脚T1OSIT1OSI输入输入输入输入( (如图如图如图如图3.9(b)3.9(b)所示;所示;所示;所示;vv第第第第3 3种:当种:当种:当种:当T1OSCEN=1T1OSCEN=1,并且振荡器外部引脚,并且振荡器外部引脚,并且振荡器外部引脚,并且振荡器外部引脚接有石英晶体时,接有石英晶体时,接有石英晶体时,接有石英晶体时,TMR1TMR1是通过振荡器产生的时是通过振荡器产生的时是通过振荡器产生的时是通过振荡器产生的时钟脉冲上升沿实现增量的钟脉冲上升沿实现增量的钟脉冲上升沿实现增量的钟脉冲上升沿实现增量
25、的( (如图如图如图如图3.9(c)3.9(c)所示。所示。所示。所示。同步计数器工作方式同步计数器工作方式同步计数器工作方式同步计数器工作方式 当当当当T1SYNCT1SYNC=0=0,TMR1TMR1工工工工作作作作在在在在同同同同步步步步方方方方式式式式。此此此此时时时时,外外外外部部部部输输输输入入入入信信信信号号号号要要要要与与与与系系系系统统统统时时时时钟钟钟钟脉脉脉脉冲冲冲冲在在在在相相相相位位位位上上上上进进进进行行行行同同同同步步步步。此此此此时时时时假假假假如如如如单单单单片片片片机机机机进进进进入入入入了了了了睡睡睡睡眠眠眠眠模模模模式式式式,即即即即使使使使有有有有外外
26、外外部部部部触触触触发发发发信信信信号号号号输输输输入入入入,TMR1TMR1也也也也不不不不会会会会增增增增加加加加,因为同步逻辑电路被关闭,如下图所示。因为同步逻辑电路被关闭,如下图所示。因为同步逻辑电路被关闭,如下图所示。因为同步逻辑电路被关闭,如下图所示。 异步计数器工作方式异步计数器工作方式异步计数器工作方式异步计数器工作方式 当当当当T1SYNCT1SYNC=1=1时,时,时,时,TMRlTMRl工作在异步方式。此工作在异步方式。此工作在异步方式。此工作在异步方式。此时,外部输入信号不与系统时钟脉冲相位进行同时,外部输入信号不与系统时钟脉冲相位进行同时,外部输入信号不与系统时钟脉冲
27、相位进行同时,外部输入信号不与系统时钟脉冲相位进行同步。此时若单片机处于睡眠模式时,计数器随着步。此时若单片机处于睡眠模式时,计数器随着步。此时若单片机处于睡眠模式时,计数器随着步。此时若单片机处于睡眠模式时,计数器随着外部触发信号所进行的增量操作不受影响,如图外部触发信号所进行的增量操作不受影响,如图外部触发信号所进行的增量操作不受影响,如图外部触发信号所进行的增量操作不受影响,如图3.113.11所示。所示。所示。所示。 工工工工作作作作在在在在异异异异步步步步计计计计数数数数器器器器方方方方式式式式期期期期间间间间,对对对对于于于于TMR1TMR1寄寄寄寄存器对的读取、写入操作应特别注意
28、。存器对的读取、写入操作应特别注意。存器对的读取、写入操作应特别注意。存器对的读取、写入操作应特别注意。读读读读取取取取操操操操作作作作:当当当当对对对对寄寄寄寄存存存存器器器器对对对对TMR1HTMR1LTMR1HTMR1L进进进进行行行行读读读读操操操操作作作作时时时时,可可可可以以以以分分分分两两两两次次次次进进进进行行行行。但但但但是是是是,在在在在读读读读取取取取期期期期间间间间存在存在存在存在TMR1TMR1的低字节向高字节产生进位的可能性。的低字节向高字节产生进位的可能性。的低字节向高字节产生进位的可能性。的低字节向高字节产生进位的可能性。此此此此时时时时TMR1H:TMR1LT
29、MR1H:TMR1L可可可可能能能能正正正正巧巧巧巧发发发发生生生生从从从从00FFH00FFH到到到到0100H0100H或从或从或从或从FFFFHFFFFH到到到到0000H0000H之类的递增。之类的递增。之类的递增。之类的递增。 若若若若TMR1H:TMR1LTMR1H:TMR1L正正正正好好好好从从从从00FFH00FFH到到到到0100H0100H递递递递增增增增,先先先先读读读读TMR1HTMR1H再再再再读读读读TMR1LTMR1L,则则则则会会会会读读读读到到到到0000H0000H的的的的错错错错误误误误结结结结果果果果;而而而而先先先先读读读读TMR1LTMR1L再再再再
30、读读读读TMR1HTMR1H,则则则则会会会会读到读到读到读到01FFH01FFH的错误结果。的错误结果。的错误结果。的错误结果。 同同同同理理理理若若若若正正正正巧巧巧巧发发发发生生生生TMR1H:TMR1LTMR1H:TMR1L从从从从FFFFHFFFFH到到到到 0000H0000H的的的的 递递递递 增增增增 , 无无无无 论论论论 是是是是 先先先先 读读读读 TMR1HTMR1H再再再再 读读读读TMR1LTMR1L,或或或或先先先先读读读读TMR1LTMR1L再再再再读读读读TMRlHTMRlH,都都都都可可可可能能能能会会会会产产产产生生生生错错错错误误误误结结结结果果果果。也
31、也也也就就就就是是是是说说说说,在在在在分分分分为为为为两两两两个个个个字字字字节节节节来来来来读读读读取取取取TMR1TMR1时时时时,可可可可能能能能会会会会出出出出现现现现错错错错误误误误结结结结果果果果。下下下下面面面面是是是是一一一一段段段段实实实实用用用用程程程程序序序序片片片片段段段段,可可可可以以以以避避避避免免免免在在在在不不不不断断断断运运运运行行行行时时时时读读读读取取取取TMR1TMR1而发生错误。而发生错误。而发生错误。而发生错误。 BCF INTCON, GIE ;BCF INTCON, GIE ;所有中断被禁止所有中断被禁止所有中断被禁止所有中断被禁止 MOVF
32、TMR1H, W ; MOVF TMR1H, W ;读取高字节读取高字节读取高字节读取高字节 MOVWF TMPH ; MOVWF TMPH ;暂存到暂存到暂存到暂存到TMPHTMPH MOVF TMR1L, W ; MOVF TMR1L, W ;读取低字节读取低字节读取低字节读取低字节 MOVWF TMPL ; MOVWF TMPL ;暂存到暂存到暂存到暂存到TMPLTMPL MOVF TMR1H, W ; MOVF TMR1H, W ;读取高字节读取高字节读取高字节读取高字节 SUBWF TMPH, W ; SUBWF TMPH, W ;用第用第用第用第2 2次读取值减第次读取值减第次读取
33、值减第次读取值减第1 1次读取值次读取值次读取值次读取值 BTFSC STATUS, Z. ; BTFSC STATUS, Z. ;结果为结果为结果为结果为0 0否?否?否?否? GOTO CONTINUE ; GOTO CONTINUE ;是是是是! !无溢出,结果正确,结束读操作无溢出,结果正确,结束读操作无溢出,结果正确,结束读操作无溢出,结果正确,结束读操作 MOVF TMR1H, W ; MOVF TMR1H, W ;否否否否! !重新读取重新读取重新读取重新读取 MOVWF TMPH ; MOVWF TMPH ;暂存到暂存到暂存到暂存到TMPHTMPH MOVF TMR1L, W
34、; MOVF TMR1L, W ;读取低字节读取低字节读取低字节读取低字节 MOVWF TMPL ; MOVWF TMPL ;暂存到暂存到暂存到暂存到TMPLTMPL BSF INTCON, GIE ;BSF INTCON, GIE ;放开全局中断屏蔽位放开全局中断屏蔽位放开全局中断屏蔽位放开全局中断屏蔽位 CONTINUE ; CONTINUE ;继续执行其他程序继续执行其他程序继续执行其他程序继续执行其他程序 写入操作:写入操作:写入操作:写入操作:当对当对当对当对TMR1TMR1进行写操作时,如果计数器进行写操作时,如果计数器进行写操作时,如果计数器进行写操作时,如果计数器正在递增,可能
35、会产生一个不确定值。因此,先正在递增,可能会产生一个不确定值。因此,先正在递增,可能会产生一个不确定值。因此,先正在递增,可能会产生一个不确定值。因此,先让计数器停止运行,再写入所希望的值。让计数器停止运行,再写入所希望的值。让计数器停止运行,再写入所希望的值。让计数器停止运行,再写入所希望的值。 假如非要在假如非要在假如非要在假如非要在TMR1TMR1不间断运行的情况下写入,不间断运行的情况下写入,不间断运行的情况下写入,不间断运行的情况下写入,那么,就应该首先清零那么,就应该首先清零那么,就应该首先清零那么,就应该首先清零TMR1LTMR1L,以确保在它向,以确保在它向,以确保在它向,以确
36、保在它向TMR1HTMR1H寄存器发生溢出进位之前,有足够长寄存器发生溢出进位之前,有足够长寄存器发生溢出进位之前,有足够长寄存器发生溢出进位之前,有足够长的递增距离,尽量避免溢出进位。随即装载的递增距离,尽量避免溢出进位。随即装载的递增距离,尽量避免溢出进位。随即装载的递增距离,尽量避免溢出进位。随即装载TMR1HTMR1H寄存器,然后装载寄存器,然后装载寄存器,然后装载寄存器,然后装载TMR1LTMR1L寄存器。推寄存器。推寄存器。推寄存器。推荐程序段如下:荐程序段如下:荐程序段如下:荐程序段如下: BCF INTCON, GIE ;BCF INTCON, GIE ;所有中断被禁止所有中断
37、被禁止所有中断被禁止所有中断被禁止 CLRF TMR1L ; CLRF TMR1L ;清除低字节,确保不会发生向高字节的进位清除低字节,确保不会发生向高字节的进位清除低字节,确保不会发生向高字节的进位清除低字节,确保不会发生向高字节的进位 MOVLW HI_BYTE ; MOVLW HI_BYTE ;取高字节给定值取高字节给定值取高字节给定值取高字节给定值 MOVWF TMR1H, F ; MOVWF TMR1H, F ;装载高字节寄存器装载高字节寄存器装载高字节寄存器装载高字节寄存器 MOVLW LO_BYTE ; MOVLW LO_BYTE ;取低字节给定值取低字节给定值取低字节给定值取低
38、字节给定值 MOVWF TMR1L, F ; MOVWF TMR1L, F ;装载低字节寄存器装载低字节寄存器装载低字节寄存器装载低字节寄存器 BSF INTCON, GIE ; BSF INTCON, GIE ;放开全局中断屏蔽位放开全局中断屏蔽位放开全局中断屏蔽位放开全局中断屏蔽位 CONTINUE ; CONTINUE ;继续执行其他程序继续执行其他程序继续执行其他程序继续执行其他程序9.5 9.5 定时器计数器定时器计数器定时器计数器定时器计数器TMR1TMR1的应用举例的应用举例的应用举例的应用举例 qq例例例例1 1 蠕动灯蠕动灯蠕动灯蠕动灯l l实现的功能实现的功能实现的功能实现
39、的功能 把演示板上的把演示板上的把演示板上的把演示板上的8 8只发光二极管只发光二极管只发光二极管只发光二极管D0D0D7D7,设设设设计为计为计为计为“ “进三步,退两步进三步,退两步进三步,退两步进三步,退两步” ”的蠕动前进的方式依次发的蠕动前进的方式依次发的蠕动前进的方式依次发的蠕动前进的方式依次发光,即发光的规律是:光,即发光的规律是:光,即发光的规律是:光,即发光的规律是: D0D1D2D3D2D1D2D3D4DD0D1D2D3D2D1D2D3D4D3D2 D3D4D5+D4+.3D2 D3D4D5+D4+.。并且在各个并且在各个并且在各个并且在各个状态之间切换时,插入一个状态之间
40、切换时,插入一个状态之间切换时,插入一个状态之间切换时,插入一个l l4s4s的延时。的延时。的延时。的延时。 硬件电路规划:硬件电路规划:硬件电路规划:硬件电路规划: 电路如图电路如图电路如图电路如图10.1210.12所示。由所示。由所示。由所示。由RCRC振荡器为电路提振荡器为电路提振荡器为电路提振荡器为电路提供系统时钟信号,其频率按供系统时钟信号,其频率按供系统时钟信号,其频率按供系统时钟信号,其频率按4MHz4MHz计算。计算。计算。计算。 硬件电路规划:硬件电路规划:硬件电路规划:硬件电路规划: 电路如图电路如图电路如图电路如图10.1210.12所示。由所示。由所示。由所示。由R
41、CRC振荡器为电路提供系统振荡器为电路提供系统振荡器为电路提供系统振荡器为电路提供系统时钟信号,其频率按时钟信号,其频率按时钟信号,其频率按时钟信号,其频率按4MHz4MHz计算。计算。计算。计算。 软件设计思路软件设计思路软件设计思路软件设计思路 利用利用利用利用TMR1TMR1产生产生产生产生1/4s1/4s的延时。具体方法是,利用的延时。具体方法是,利用的延时。具体方法是,利用的延时。具体方法是,利用中断方式和反复装载初始值的方式,将预分频器的分中断方式和反复装载初始值的方式,将预分频器的分中断方式和反复装载初始值的方式,将预分频器的分中断方式和反复装载初始值的方式,将预分频器的分频比设
42、定为频比设定为频比设定为频比设定为1:41:4。下面计算。下面计算。下面计算。下面计算TMR1TMR1的的的的1616位寄存器的初值。位寄存器的初值。位寄存器的初值。位寄存器的初值。 TMR1TMR1的初值的初值的初值的初值 因为系统时钟为因为系统时钟为因为系统时钟为因为系统时钟为4MHZ4MHZ,那么机器周期为那么机器周期为那么机器周期为那么机器周期为1s1s。 延迟时间为延迟时间为延迟时间为延迟时间为1 14s=250,000s4s=250,000s。 假设初值为假设初值为假设初值为假设初值为X X,则以下公式成立:则以下公式成立:则以下公式成立:则以下公式成立: 4*(65536-X)*
43、1 s = 250,000s4*(65536-X)*1 s = 250,000s X= 65536- (250,000/4)= 3,036=0BDCH X= 65536- (250,000/4)= 3,036=0BDCH T1CON T1CON的的的的控制字控制字控制字控制字 要求:分频比设定为要求:分频比设定为要求:分频比设定为要求:分频比设定为1:41:4,定时模式,先关闭,定时模式,先关闭,定时模式,先关闭,定时模式,先关闭TMR1TMR1,则控制字为:则控制字为:则控制字为:则控制字为:0010 0000 = 20H0010 0000 = 20H。 程序流程图:程序流程图:程序流程图:
44、程序流程图:主程序流程图和中断服务子程序流程图,主程序流程图和中断服务子程序流程图,主程序流程图和中断服务子程序流程图,主程序流程图和中断服务子程序流程图,分别如图分别如图分别如图分别如图3.133.13和图和图和图和图3.143.14所示。所示。所示。所示。PCL EQU 02H ;PCL EQU 02H ;程序计数器低字节寄存器地址程序计数器低字节寄存器地址程序计数器低字节寄存器地址程序计数器低字节寄存器地址STATUS EQU 3H ;STATUS EQU 3H ;状态寄存器地址状态寄存器地址状态寄存器地址状态寄存器地址Z EQU 2H ;Z EQU 2H ;状态寄存器中的状态寄存器中的
45、状态寄存器中的状态寄存器中的0 0标志位的位地址标志位的位地址标志位的位地址标志位的位地址INTCON EQU 0BH ;INTCON EQU 0BH ;中断控制寄存器地址中断控制寄存器地址中断控制寄存器地址中断控制寄存器地址PORTC EQU 7H ;PORTC EQU 7H ;端口端口端口端口C C的数据寄存器地址的数据寄存器地址的数据寄存器地址的数据寄存器地址TRISC EQU 87H ;TRISC EQU 87H ;端口端口端口端口C C的方向控制寄存器地址的方向控制寄存器地址的方向控制寄存器地址的方向控制寄存器地址COUNT EQU 20H ;COUNT EQU 20H ;定义一个计
46、数器变量寄存器定义一个计数器变量寄存器定义一个计数器变量寄存器定义一个计数器变量寄存器RP0 EQU 5H ;RP0 EQU 5H ;状态寄存器中的页选位状态寄存器中的页选位状态寄存器中的页选位状态寄存器中的页选位RP0RP0TMR1L EQU 0EH ;TMR1TMR1L EQU 0EH ;TMR1低字节寄存器地址低字节寄存器地址低字节寄存器地址低字节寄存器地址TMR1H EQU 0FH ;TMR1TMR1H EQU 0FH ;TMR1高字节寄存器地址高字节寄存器地址高字节寄存器地址高字节寄存器地址PIR1 EQU 0CH ;PIR1 EQU 0CH ;第一中断标志寄存器第一中断标志寄存器第
47、一中断标志寄存器第一中断标志寄存器PIE1 EQU 8CH ;PIE1 EQU 8CH ;第一中断使能寄存器第一中断使能寄存器第一中断使能寄存器第一中断使能寄存器T1CON EQU 10H ;TMR1T1CON EQU 10H ;TMR1控制寄存器控制寄存器控制寄存器控制寄存器_ _TMR1LB EQU 0DCH ;TMR1TMR1LB EQU 0DCH ;TMR1低字节寄存器初始值低字节寄存器初始值低字节寄存器初始值低字节寄存器初始值TMR1HB EQU 0BH ;TMR1TMR1HB EQU 0BH ;TMR1高字节寄存器初始值高字节寄存器初始值高字节寄存器初始值高字节寄存器初始值 ORG
48、 0000H ORG 0000H NOP NOP GOTO MAIN GOTO MAIN ORG 0004H ORG 0004H ;* TMR1;* TMR1延时子程序延时子程序延时子程序延时子程序(1/4S)*(1/4S)*DELAY BCF PIR1,0 ;DELAY BCF PIR1,0 ;清除清除清除清除TMR1TMR1溢出标志位溢出标志位溢出标志位溢出标志位 BCF T1CON,0 ; BCF T1CON,0 ;关闭关闭关闭关闭TMR1TMR1计数器计数器计数器计数器 MOVLW TMR1LB ;TMR1 MOVLW TMR1LB ;TMR1低字节赋初值低字节赋初值低字节赋初值低字节
49、赋初值 MOVWF TMR1L MOVWF TMR1L MOVLW TMR1HB ;TMR1 MOVLW TMR1HB ;TMR1高字节赋初值高字节赋初值高字节赋初值高字节赋初值 MOVWF TMR1H MOVWF TMR1H MOVF COUNT,0 ;COUNT MOVF COUNT,0 ;COUNT作为查表地址偏移量送作为查表地址偏移量送作为查表地址偏移量送作为查表地址偏移量送WW CALL READ ; CALL READ ;调用读取显示信息子程序调用读取显示信息子程序调用读取显示信息子程序调用读取显示信息子程序 MOVWF PORTC ; MOVWF PORTC ;将查表得到的驱动码
50、送显将查表得到的驱动码送显将查表得到的驱动码送显将查表得到的驱动码送显 INCF COUNT,1 ; INCF COUNT,1 ;计数器加计数器加计数器加计数器加1 1 MOVLW D40 ; MOVLW D40 ;表中只有表中只有表中只有表中只有4040个元素,计数值只能个元素,计数值只能个元素,计数值只能个元素,计数值只能=039=039 SUBWF COUNT,0 ; SUBWF COUNT,0 ;检查计数器检查计数器检查计数器检查计数器=40? =40? ; ;BTFSC STATUS, Z ;BTFSC STATUS, Z ;否否否否! !跳一步跳一步跳一步跳一步 CLRF COUN
51、T ; CLRF COUNT ;是是是是! !应该回到应该回到应该回到应该回到0 0 RETFIE ; RETFIE ; 中断返回中断返回中断返回中断返回;* *;* *MAIN BSF STATUS, RP0 ;MAIN BSF STATUS, RP0 ;设置文件寄存器的体设置文件寄存器的体设置文件寄存器的体设置文件寄存器的体1 1 MOVLW 00H MOVLW 00H MOVWF TRISC MOVWF TRISC BSF PIE1,0 ; BSF PIE1,0 ;开放开放开放开放TMR1TMR1中断使能位中断使能位中断使能位中断使能位 BCF STATUS,RP0 ; BCF STAT
52、US,RP0 ;恢复到文件寄存器的体恢复到文件寄存器的体恢复到文件寄存器的体恢复到文件寄存器的体0 0 MOVLW 24H ; MOVLW 24H ;设置控制寄存器:暂时不打开设置控制寄存器:暂时不打开设置控制寄存器:暂时不打开设置控制寄存器:暂时不打开TMR1TMR1 MOVWF T1CON ; MOVWF T1CON ;预分频器设为预分频器设为预分频器设为预分频器设为1:41:4 MOVLW 0C0H ;GIE=1,PEIE=1 MOVLW 0C0H ;GIE=1,PEIE=1 MOVWF INTCON MOVWF INTCON CLRF COUNT ; CLRF COUNT ;清清清清0
53、 0计数器计数器计数器计数器( (即查表索引值即查表索引值即查表索引值即查表索引值) ) MOVLW TMR1LB ;TMR1 MOVLW TMR1LB ;TMR1低字节赋初值低字节赋初值低字节赋初值低字节赋初值 MOVWF TMR1L MOVWF TMR1L MOVLW TMR1HB ;TMR1MOVLW TMR1HB ;TMR1高字节赋初值高字节赋初值高字节赋初值高字节赋初值 MOVWF TMR1H MOVWF TMR1HLOOP LOOP BSFBSF T1CON,0 ; T1CON,0 ; 启动启动启动启动TMR1TMR1开始计数开始计数开始计数开始计数 GOTO LOOP ; GOT
54、O LOOP ;等待等待等待等待TMR1TMR1超时溢出中断超时溢出中断超时溢出中断超时溢出中断;*;*读取显示信息的查表子程序读取显示信息的查表子程序读取显示信息的查表子程序读取显示信息的查表子程序*READ ADDWF PCL,1 ;READ ADDWF PCL,1 ;地址偏移量加当前地址偏移量加当前地址偏移量加当前地址偏移量加当前PCPC值值值值 RETLW B10000000 ; RETLW B10000000 ;显示信息码,下同显示信息码,下同显示信息码,下同显示信息码,下同 RETLW B01000000 RETLW B01000000 RETLW B00100000 RETLW
55、B00100000 RETLW B00010000 RETLW B00010000 RETLW B00100000 RETLW B00100000 RETLW B01000000 RETLW B01000000 RETLW B00100000 RETLW B00100000 RETLW B00010000 RETLW B00010000 RETLW B00001000 RETLW B00001000 RETLW B00010000 RETLW B00010000 RETLW B00100000 RETLW B00100000 RETLW B00010000 RETLW B00010000 RE
56、TLW B00001000 RETLW B00001000 RETLW B00000100 RETLW B00000100 RETLW B00001000 RETLW B00001000 RETLW B00010000 RETLW B00010000 RETLW B00001000 RETLW B00001000 RETLW B00000100 RETLW B00000100 RETLW B00000010 RETLW B00000010 RETLW B00000100 RETLW B00000100 RETLW B00001000 RETLW B00001000 RETLW B0000010
57、0 RETLW B00000100 RETLW B00000010 RETLW B00000010 RETLW B00000001 RETLW B00000001 RETLW B00000010 RETLW B00000010 RETLW B00000100 RETLW B00000100 RETLW B00000010 RETLW B00000010 RETLW B00000001 RETLW B00000001 RETLW B10000000 RETLW B10000000 RETLW B00000001 RETLW B00000001 RETLW B00000010 RETLW B00000001 RETLW B10000000 RETLW B01000000 RETLW B10000000 RETLW B00000001 RETLW B10000000 RETLW B01000000 RETLW B00100000 RETLW B01000000 END结束结束