版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章定时/计数器定时/计数器的结构及工作原理定时/计数器方式和控制寄存器定时/计数器的工作方式定时/计数器的编程举例运行中读定时/计数器值定时/计数器2单片机的51子系列有两个16位的定时/计数器:定时器0和定时器1。均可用作定时器或事件计数器,为单片机系统提供计数和定时功能。以实现控制系统中所要求的定时或延时控制、外部事件计数。52子系列单片机(8032/8052)除了有上述2个定时/计数器外,还有一个定时计数器2,后者的功能比前两者强。5.1定时/计数器的结构及工作原理定时/计数器的核心部件是一个加1计数器,其脉冲有两个来源:外部脉冲源、系统的时钟振荡器。计数器对两个脉冲源之一进行输入计数,每输入一个脉冲,计数值加1。当计数到计数值为全1时,再输入一个脉冲就使计数值回零,同时从最高位溢出一个脉冲使特殊功能寄存器TCON(定时器控制寄存器)的某一位TFx置1,作为计数器的溢出中断标志。定时/计数器的结构框图振荡器÷12加1计数器TFx中断TX端C/T=0C/T=1控制信号TRx若工作于定时状态,则表示定时时间到;若工作于计数状态,则表示计数回零。所以,加1计数器的基本功能是对输入脉冲进行计数。用作定时器时,在每个机器周期计数器加1,所以可以把它看作累加机器周期,1个机器周期包括12个振荡周期,则计数频率为振荡频率的十二分之一。工作于何种方式,取决于脉冲源,当脉冲源为时钟振荡器(等间隔脉冲序列)时,由于计数脉冲为一时间基准,脉冲数乘以脉冲间隔就是定时时间,表现为定时功能;当脉冲源为间隔不等的外部脉冲发生器时,就是外部事件的计数器,表现为计数功能。用作计数器时,计数脉冲来自外部输入引脚T0或T1,当输入信号发生一个由1到0的跳变时,计数器加1。在每个机器周期的S5P2期间采样外部输入信号,当一个周期的采样值为高电平、下一个周期的采样值为低电平时,计数器加1。新的计数值在紧接着检测到一个跳变后的下一个周期的S3P1期间在寄存器中出现。即在第一个机器周期的S5P2检测到高电平,在第二个机器周期的S5P2检测到低电平,在第三个机器周期的S3P1改变计数值。由于识别一个从1到0的跳变要用两个机器周期,所以最快的计数频率是振荡器频率的二十四分之一。对外部输入信号的占空比没有限制,为确保某一给定的电平在变化之前至少被采样一次,该信号至少保持一个完整的机器周期。图中的两个模拟开关,前者决定定时/计数器工作状态:计数还是定时;后者受控制信号的控制,决定脉冲源是否加到计数器输入端,即决定了加1计数器的开启与运行。对输入信号的基本要求>Tp>TpTp为机器周期在实际线路中,这两个模拟开关由TMOD与TCON的相应位控制。用户可通过对TMOD和TCON的各位进行写入或更改操作,从而选择不同的工作状态或启动工作,并可设置相应的控制条件,即定时/计数器是可编程的。16位的加1计数器由两个8位的特殊功能寄存器THx和TLx组成(x=0或1)。由特殊功能寄存器TMOD控制,可被程控为不同的组合状态,从而形成定时/计数器的四种工作方式。TMOD、TCON与T0、T1结构框图微处理器μPTH1TL1TH0TL0TCONTMOD工作方式工作方式5.2定时/计数器方式和控制寄存器由结构框图可以看到,特殊功能寄存器TMOD和TCON用来确定定时/计数器的工作方式,并控制其功能。每当执行一条改变TMOD和TCON内容的指令时,所改变的值在下一条指令的第一个机器周期的S1P1期间进入特殊功能寄存器,并立即产生效果。TMOD控制定时/计数器的工作方式;TCON控制定时器T0、T1的启动和停止计数,并包含了定时器的状态。5.2.1定时器工作方式控制寄存器TMOD的格式位76543210GATEC/TM1M0GATEC/TM1M0定时器1定时器0GATE:选通控制。当GATE=1时,同时INTx为高电平,且TRx置位时,选通定时器x。当GATE=0时,每当TRx置位时,就选通定时器x。C/T:选择定时器功能还是计数器功能。该位置位时选择计数器功能(计数出现在T0或T1引脚上的负跳变);该位清零时选择定时器功能(计机器周期)。M1M0:这两位指定定时/计数器的工作方式,可形成四种编码,对应四种工作方式:M1M0方式说明000TLx低5位与THx中8位构成13位计数器011TLx与THx构成16位计数器102可自动再装入的8位计数器,当TLx计数溢出时,THx内容自动装入TLx。113对定时器0,分成两个8位的计数器;对定时器1,停止计数。5.2.2定时器控制寄存器TCON的格式位76543210TF1TR1TF0TR0IE1IT1IE0IT0TF1:定时器1溢出标志位。当定时/计数器1溢出时,由内部硬件置位,申请中断。当单片机转向中断服务程序后,由内部硬件自动清除。TR1:定时器1的运行控制位。由软件置位/清除来控制定时/计数器1的开启/关闭。TF0:定时器0溢出标志位。当定时/计数器0溢出时,由内部硬件置位,申请中断。当单片机进入中断服务程序后,由内部硬件自动清除。TR0:定时器0的运行控制位。由软件置位/清除来控制定时/计数器0的开启/关闭。IE1:外部中断1边沿触发请求标志位。当IT1=0时,每个机器周期的S5P2采样INT1,若INT1为低电平,将直接触发外部中断。当IT1=1时,当第一个机器周期采样到INT1为高电平、第二个机器周期采样到INT1为低电平时,由硬件置位中断标志IE1,并以此向CPU请求中断,当CPU响应中断、转向中断服务程序后由硬件清除。
IT1:外部中断1类型控制位。控制外部中断1是选择边沿触发还是电平触发方式。当IT1=0时,选择为电平触发方式,INT1低电平有效;当IT1=1时,选择为边沿触发方式,当INT1输入脚上出现电平由高到低的负跳变时有效。IT1由软件置位或清除。IE0:外部中断1边沿触发请求标志位。当IT0=0时,每个机器周期的S5P2采样INT0,若INT0为低电平,将直接触发外部中断。当IT0=1时,当第一个机器周期采样到INT0为高电平、第二个机器周期采样到INT0为低电平时,由硬件置位中断标志IE0,并以此向CPU请求中断,当CPU响应中断、转向中断服务程序后由硬件清除。
IT0:外部中断0类型控制位。控制外部中断0是选择边沿触发还是电平触发方式。当IT0=0时,选择为电平触发方式,INT0低电平有效;当IT0=1时,选择为边沿触发方式,当INT0输入脚上出现电平由高到低的负跳变时有效。IT0由软件置位或清除。由于定时/计数器T0、T1是可编程的,所有在任何一个定时/计数器开始工作之前,必须对其写入相应的控制字。5.3定时/计数器的工作方式寄存器TMOD中的M1、M0两位的四种不同取值,导致了THx、TLx的四种不同组合,从而形成定时/计数器的四种不同工作方式。其中前三种工作方式对两者都是一样的,方式3对两者是不同的。可以说,只有定时/计数器0有方式3。5.3.1方式0振荡器÷12TFx中断Tx端C/T=0C/T=1GATEINTx端TRxTLx(低5位)THx(8位)控制&≥ll当M1M0=00时,定时/计数器被选择为工作方式0。在此工作方式下,定时/计数器构成一个13位寄存器,由THx的8位与TLx的低5位组成,TLx的高3位未用。当单片机进入中断服务程序后,再由内部硬件自动清除该标志TFx。在一般情况下,GATE=0,定时/计数器运行控制仅由TRx位的状态确定(TRx=1启动,TRx=0停止)。只有在启动计数要由外部输入INTx控制时,才使GATE=1,由框图可知,GATE=1,TRx=1时,只有INTx引脚输入高电平,Tx才被允许计数。
利用GATE的这一功能,可以很方便的测量脉冲宽度。当TLx的低5位计数溢出时,则向THx进位,THx溢出时,则把其对应的定时/计数器的溢出标志位TFx置位,并以此作为定时/计数器溢出中断标志。5.3.2方式1振荡器÷12TFx中断Tx端C/T=0C/T=1GATEINTx端TRxTLx(8位)THx(8位)控制l&≥l方式1与方式0的差别仅在于计数器的位数不同,方式1为16位的计数器,由THx作为高8位和TLx作为低8位构成。其余和方式0类似。5.3.3方式2振荡器÷12TFx中断Tx端C/T=0C/T=1GATEINTx端TRxTLx(8位)THx(8位)控制重新装入l≥l&定时/计数器构成一个自动再装入功能的8位计数器。
此时由TLx计数,而THx在此方式中作为一个数据缓冲器。当TLx计数溢出时,在置位溢出标志TFx的同时,还自动地将THx中的常数送到TLx,使TLx从刚刚装入的初值开始重新计数。再装入后,THx中的内容保持不变。5.3.4方式3T0端C/T=0C/T=1GATEINT0端TR0振荡器÷12振荡器÷12TF0中断TL0(8位)TF1中断TH0(8位)TR1控制控制l≥l&方式3可使MCS-51单片机增加一个附加的8位定时/计数器,此种方式只适应于定时/计数器0。定时/计数器1处于方式3时,相当于TR1=0,停止计数。定时/计数器0在方式3下,TL0和TH0被作为两个独立的计数器。在此方式下,TL0使用了定时器0的所有控制位:C/T、GATE、TR0、INT0和TF0;TH0则被限制为一个定时器,对机器周期计数,同时借用了定时器1的TR1和TF1,即借用了其运行控制位和溢出标志。一般来说,只有当系统需要增加一个额外的8位定时器时,才把定时/计数器0设置为方式3。当定时/计数器0工作于方式3时,由于TH0借用了定时/计数器1的运行控制位和溢出(中断)标志,此时定时/计数器1虽然可以设置为方式0、方式1和方式2,但是只能用在不需要中断控制的场合。例如,工作于自动重装载方式(方式2),作为串行通讯的波特率发生器使用。5.4定时/计数器的编程举例定时/计数器的应用编程应注意:⑴正确写入控制字,即初始化;⑵时间常数的正确计算。定时计数器操作控制次序:①确定工作方式,写入TMOD定时/计数器工作方式寄存器;②计算定时/计数初值,装入THx及TLx;③置位TRx以启动计数;④置位ETx以允许定时/计数器x中断(若需要,不需要可略);⑤置位EA以使CPU开放中断,即接收中断信号。由于定时/计数器以加1方式计数,假设计数值为x,则应装入定时/计数器的初值为:(n为不同方式下计数器的位数)。当工作于定时状态时,由于定时/计数器是计数机器周期的,而机器周期频率恒定,每个机器周期包括12个振荡周期,若晶振频率为6MHz,则:一个机器周期:计数个数为:其中:Tp为机器周期则应装入的计数初值为:例5-1.要求定时为1mS,晶振频率为12MHz。解:因为:Tc=x×Tp=1mS所以:对方式0,应装入的初值为:此时,THx=0E0H(11100XXX),TLx=18H对方式1,应装入的初值为:此时,THx=0FCH,TLx=18H例5-2.设定时/计数器T0为定时状态,工作于方式1,定时时间为2mS,每当2mS到申请中断,在中断服务程序中将A的内容左环移一次,送P1口显示。已知晶振频率为12MHz。解答:定时时间为2mS,即:Tc=x×Tp=2mS所以,计数个数为:采用方式1,应装入的时间常数为:则:TH0=0F8H,TL0=30H编程如下:ORG 0000HLJMP MAIN ;转主程序ORG 000BH ;T0中断服务程序MOV TL0,#30HMOV TH0,#0F8H ;重新送2mS时间常数初值RL A ;(A)左环移一次MOV P1,A ;送P1口显示RETMAIN:MOVTMOD,#01H;送控制方式字MOV TL0,#30H ;T0初始化MOV TH0,#0F8HMOV A,#01H ;累加器A置初值SETB TR0 ;启动T0计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断SJMP $ ;等待中断发生(无事可做)例5-3.设定时/计数器T0工作于方式3,TL0、TH0作为两个独立的8位定时/计数器,分别产生250S和500S的定时中断,使P1.1和P1.2产生500S和1000S的方波。设晶振频率为6MHz。解答:TL0计数个数:250s/2s=125初值:
28-125=131=83HTH0计数个数:500s/2s=250
初值:
28-250=6=06H编程如下:ORG 0000HLJMP MAIN ;转主程序ORG 000BH ;定时器0中断服务子程序入口LJMP TINT0ORG 001BH ;定时器1中断服务子程序入口LJMP TINT1MAIN:MOVTMOD,#03H;T0工作方式3MOV TL0,#83H ;TL0送时间常数MOV TH0,#06H ;TH0送时间常数SETB TR0 ;启动定时SETB TR1;等价于MOVTCON,#50HSETB ET0 ;允许中断SETB ET1;等价于MOVIE,#8AH
SETB EA ;CPU开中断SJMP $ ;等待TINT0: MOV TL0,#83H ;定时器0中断服务子程序 CPL P1.1 RETITINT1: MOV TH0,#06H ;定时器1中断服务子程序 CPL P1.2 RETI例5-4.设定时/计数器0工作于方式2,TL0为8位计数器,产生500s定时中断,在中断服务程序中将(A)减1,然后送P1口显示,设晶振为6MHz。编程如下: ORG 0000H AJMP MAIN ;转主程序 ORG 000BH DEC A ;T0中断服务子程序 MOV P1,A RETIMAIN:MOV TMOD,#02H ;初始化 MOV TL0,#06H ;送500S时间常数 MOV TH0,#06H SETB TR0 ;启动T0计数 SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SJMP $5.5运行中读定时/计数器值在MCS-51中,随时可以读写计数寄存器的内容,但是读取时需要特别加以注意;由于不能在同一时刻读取THx和TLx的内容。如不注意,读取的计数器有可能出错。比如先读(TLx),后读(THx),由于定时器在不断运行,读(THx)前,若恰好产生TLx溢出向THx进位,则读得的(TLx)完全不对。同样先读(THx)再读(TLx)也可能出错(同样问题)。解决错读问题的一种方法是:先读(THx),后读(TLx),再读(THx),若2次读得的(THx)没有发生变化,则可确定读得的内容是正确的,否则再重复上述读THx、TLx过程,这样读得的(THx),(TLx)就是正确的。下面程序把读得的TH0、TL0放在R1、R0中:RDTIME: MOV A,TH0 ;读(TH0) MOV R0,TL0 ;读(TL0) CJNE A,TH0,RDTIME ;比较2次读得的(TH0),不同重读
MOV R1,A RET5.6定时/计数器2只有52子系列单片机拥有定时/计数器2。定时/计数器2是一个具有16位自动重装载或捕获能力的定时/计数器,特殊功能寄存器T2CON是它的控制寄存器。定时/计数器2具有两种工作方式:定时/计数器方式和波特率发生器方式。5.6.1定时/计数器方式RCAP2HRCAP2LTH2TL2CINCINCOUTCOUTCP/RL2T2EXEXEN2EXF2中断置TF2置EXF2TF2振荡器÷12T2C/T2TR2&&≥l&≥l&用作定时器时,寄存器TH2和TL2对机器周期计数;用作计数器时,外部计数脉冲由T2(P1.0)输入,工作情况和时序关系与定时/计数器0和1的完全一样,对外部计数脉冲的要求也与定时/计数器0和1的完全一样。在定时器和计数器工作方式下,可以通过对T2CON中的控制位CP/RL2的操作来选择捕获能力或重装载能力,TH2和TL2内容的捕获或自动重装载通过一对捕获/重装载寄存器RCAP2H和RCAP2L来实现,TH2、TL2和RCAP2H、RCAP2L之间接有双向缓冲器(三态门)。当CP/RL2=1时,选择捕获功能,数据传送方向为把TH2和TL2中的内容自动装入RCAP2H和RCAP2L;当CP/RL2=0时,选择自动重装载功能,数据传送方向为把RCAP2H和RCAP2L的数据自动装入TH2和TL2。捕获或自动重装载发生在下述情况下:⑴定时器2的寄存器TH2和TL2溢出时:当寄存器TH2和TL2溢出时,如果CP/RL2=0,则打开重装载的三态缓冲器,把RCAP2H和RCAP2L的内容自动装载到TH2和TL2中,同时溢出标志TF2置位为1,申请中断。⑵当EXEN2=1且T2EX(P1.1)端的信号有负跳变时:当EXEN2=1且T2EX(P1.1)端的信号有负跳变时,根据CP/RL2是1或0,发生捕获操作或自动重装载操作,同时标志EXF2置位,申请中断。如果定时/计数器2的中断是被允许的,不管发生TF2=1还是EXF2=1,CPU都会响应中断,中断的入口地址为002BH。响应中断后,应当用软件清除中断标志,以避免无休止地发生中断。TF2、EXF2都是直接可寻址位,可采用CLRTF2和CLREXF2指令实现撤消中断申请的功能。5.6.2波特率发生器方式RCAP2HRCAP2LTH2TL2CINCINCOUTCOUTC/T2TR2OSC2T2÷2定时器1溢出SMOD=0SMOD=1"0""1""0""1"÷16RCLKTCLK÷16TXCLOCKRXCLOCKT2EXEXEN2EXF2&&波特率发生器用于控制串行口的数据传输速率。在T2CON中的RCLK和TCLK两位用于选择定时/计数器1或2作为串行通讯的波特率发生器。RCLK和TCLK两位的值用来控制2个电子开关的位置。当这两位为0时,选用定时/计数器1作为波特率发生器;当这两位为1时,选用定时/计数器2作为波特率发生器。其中RCLK选择串行通讯接收波特率发生器,TCLK选择发送波特率发生器。当选用定时/计数器2作波特率发生器时,其溢出脉冲用作串行口的时钟,时钟频率可由内部时钟决定,也可由外部时钟决定。如果C/T=0,选用外部时钟,时钟信号由T2(P1.0)端输入,每当外部脉冲负跳变时,计数器值加1,外部脉冲频率不能超过振荡器频率的1/24。由于溢出时,RCAP2H和RCAP2L的内容自动装载到TH2和TL2,所以波特率的值还决定于装载值。
当定时/计数器2用作波特率发生器时,如果EXEN2置位,则T2EX端的信号发生负跳变时,EXF2将置位,但不会发生重装载或捕获操作,此时T2EX可以作为一个附加的外部中断源。在波特率工作方式下,TH2、TL2和RCAP2H、RCAP2L的内容不能读或被修改。5.6.3定时/计数器2控制寄存器T2CONTR2EXEN2TCLKRCLKEXF2TF2含义01234567位TF2(T2CON.7):定时器2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024水稻买卖合同
- 0×5=?(说课稿)-2024-2025学年三年级上册数学北师大版
- 不动产融资租赁协议范本(2024版)版B版
- 2024年简化版借款合同范本版B版
- 2024美容院连锁店员工薪酬及福利待遇合同范本3篇
- 个人消费微贷合同范本(2024年版)版
- 福建省南平市塔前中学高一数学理下学期期末试卷含解析
- 2024月子中心消防设施节能改造与优化合同3篇
- 多地取还车协议书(2篇)
- 个人房产抵押借款合同范本2024年版版B版
- 2024年四川省成都市中考数学试卷(含解析)
- 【人民日报】72则金句期末评语模板-每页4张
- 零缺陷质量意识
- 2024河北中考化学仿真卷52
- 借款债务股东共同承担协议
- 门诊导诊课件
- 大学生职业生涯规划小学英语教育
- 阿甘正传书籍
- (正式版)JTT 1497-2024 公路桥梁塔柱施工平台及通道安全技术要求
- 中国省市地图模板可编辑模板课件
- 三年级数学上册《寒假作业》
评论
0/150
提交评论