《微机原理及应用》多媒体课件江南大学第六章MCS-51单片机的定时/计数器第七章MCS-51单片机的串行接口第八章MCS-51单片机的中断系统第四部分MCS-51单片机的内部功能系统若有疑问,请致信shengweifeng@jiangnan.edu.cn《微机原理及应用》多媒体课件江南大学第六章MCS-51单片机的定时/计数器6.1定时/计数器工作方式与原理6.2定时/计数器的四种工作模式6.3MCS-51定时/计数器的控制和状态寄存器6.5定时/计数器应用中的注意问题6.4四种工作模式的定时常数计算返回章节菜单《微机原理及应用》多媒体课件江南大学定时器/计数器是一种应用非常广泛的硬件逻辑电路,它可以完成两种不同的方式工作“定时”、“计数”,MCS-51单片机有2个这样的定时器/计数器,分别是定时器/计数器T0和定时器/计数器T1。定时器/计数器的核心是16位加法计数器,物理地址在SFR中的TH0、TL0是定时器/计数器0加法计数器的高8位和低8,TH1、TL1是定时器/计数器1加法计数器的高8位和低8位。6.1定时器/计数器工作方式与原理《微机原理及应用》多媒体课件江南大学1.计数:对外部的事件(脉冲)进行统计。MCS-51T0(T1)端口外部脉冲外部设备作计数器用时,16位加法计数器分别对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数。每输入一个脉冲(下降沿,2个机器周期),加法计数器增加1。加法计数溢出时可向CPU发出请求信号。计数器最高频率为fosc/24原理很明显外部事件的发生是随机的,单片机不可能预知外部事件何时发生,只能进行统计其发生的次数。当达到所要求的计数值时,单片机进行相应的操作。《微机原理及应用》多媒体课件江南大学2.定时:用于产生一个标准的时间间隔;如20ms,100ms等。单片机使用这种方式可以产生一个符合某一要求的脉冲方波(如下图)。20mS40mSMCS-51Px.y输出波形作定时器使用时,16位加法计数器对内部机器周期脉冲计数。由于机器周期Tcy是定值,所以计数也成了定时。定时器最高频率为fosc/12原理《微机原理及应用》多媒体课件江南大学加法计数器的初值可以由程序设定,设置的初值不同,加法计数器到溢出的时间就不同,计数值或定时时间也就不同。在定时器/计数器的工作过程中,加法计数器的内容可用程序读回CPU。D7D6D5D4D3D2D1D0TFx计数脉冲CP溢出标志8位的加法计数器定时/计数器的基本模型原理《微机原理及应用》多媒体课件江南大学3.定时/计数器的结构及工作原理:N位增量计数器TFx系统内部时钟fosc启动控制TRx外部脉冲T0或T1引脚定时/计数控制C/T计数器溢出(中断信号)计数脉冲CPC/T=0C/T=1MCS-51单片机定时器模型(1):如何控制启动定时器/计数器?思考题:(2):如何控制是定时还是计数?(3):如何控制定时/计数的长短?原理注意《微机原理及应用》多媒体课件江南大学由启动控制开关TRx来控制计数器是否计数:当TRx=0时:计数器的计数脉冲被断开,所以停止工作;当TRx=1时:计数器的计数脉冲输入端与信号源接通,计数器开始计数(工作)。定时、计数方式由C/T控制。当C/T=0时:多路器选择的是系统时钟(fosc/12),即定时方式;当C/T=1时:多路器选择的是外部(T0或T1引脚)输入,即计数方式。初值寄存器中的初值是用来设定定时/计数长短的参数。注意:加法计数器TH1溢出后,必须用程序重新对TH1、TL1设置初值,否则下一次TH1、TL1将从0开始加法计数。返回原理《微机原理及应用》多媒体课件江南大学6.2定时/计数器的四种工作模式模式0:13位计数器模式模式1:16位计数器模式模式2:8位自动重装初值模式模式3:拆分/组合扩展8位模式《微机原理及应用》多媒体课件江南大学1,模式0:13位计数器模式(以T1为例)13位计数器在某一个初值的基础上加1计数,当计数器计满为全“1”,再来一个计数脉冲时,就产生一个“溢出中断信号”,使TF1=1。TH1TL1震荡器1/12(8位)(低5位)TF1中断启动控制T1引脚TR1GATEINT1高三位弃用C/T=0C/T=1返回13位加1计数器GATE=0时,TR1=1开始定时/计数;GATE=1时(门控方式),TR=1且INT1=1时,开始工作。此种方式主要用于测量加在INT1脚上一个正脉冲的脉宽。模式《微机原理及应用》多媒体课件江南大学16位计数器在某一个初值的基础上加1计数,当计数器计满为全“1”,再来一个计数脉冲时,就产生一个“溢出中断信号”,使TF1=1。GATE=0时,TR1=1开始定时/计数;GATE=1时(门控方式),TR=1且INT1=1时,开始工作。此种方式主要用于测量加在INT1脚上一个正脉冲的脉宽。TL1TH1震荡器1/12(8位)(8位)TF1中断启动控制T1引脚TR1GATEINT1C/T=0C/T=12,模式1:16位计数器模式(以T1为例)16位加1计数器模式《微机原理及应用》多媒体课件江南大学由TL1做计数器,TH1做初值寄存器,工作前TL1,TH1分别预置相同的初值。TL1计数后,当产生溢出,使TF1=1的同时,将TH1中的初值自动重装TL1。TL1继续计数……,此模式主要用于做串行口波特率发生器(下一章讲述)。TL1(8位)TH1(8位)震荡器1/12TF1中断控制T1引脚TR1GATEINT1C/T=1C/T=03,模式2:8位自动重装初值模式(以T1为例)8位加1计数器8位初值寄存器模式《微机原理及应用》多媒体课件江南大学在这种模式中,单片机将T0和T1重新进行“拆分、组合”。将T0变为由TH0,TL0组成的两个独立的8位定时/计数器。TL0震荡器1/12TF0中断控制T0引脚TR0GATEINT0C/T=0C/T=1TH0TF1中断控制TR1fosc/12在模式3时的模式中定时器T0的结构图4,模式3拆分/组合扩展模式(仅对T0有效)模式《微机原理及应用》多媒体课件江南大学注意:模式3时T0(TH0,TL0)及T1的各自特点:1,TH0计数脉冲来自内部fosc,所以它只能处于”定时”方式;2,TH0分别借用了定时器T1的TR1和TF1为自己服务,使TH0能象TL0那样用TR1启动定时,并用TF1来作为TH0的溢出中断的标志;3,此时,由于T1缺少了启动控制信号TR1和溢出中断标志TF1,那么在模式3时,T1是如何启动和工作?没有溢出中断标志TF1,则T1就不用中断方式工作(实际上连查询也不行);没有启动控制信号TR1,TMOD设置完以后就可以开始工作,并且让它事先设定为自动重装模式(模式2、一般作为串行口的波特率发生器)。4,模式3就是将单片机原有的T0、T1两个计数器变成三个独立的计数器。模式《微机原理及应用》多媒体课件江南大学在模式3时T0,T1的电路结构图TL0八位定时/计数器TH0八位定时器T1(TL1,TH1)自动重装模式TF0TF1将T0分解为两个计数器TL0和TH0,其中TH0借用了T1的TR1和TF1T1已无TR1,TF1功能,建议T1做波特率发生器TH0、TL0和T1三个计数器模式返回《微机原理及应用》多媒体课件江南大学6.3定时/计数器的控制和状态寄存器GATE选通门:GATE=0时,只要TRx=1,加法计数器就开始工作。一种通用模式;GATE=1时,为“门控方式”,只有INTx=TRx=“1”时,加法计数器工作,一种用于测量INTx脚高电平脉冲的宽度的模式。GATEC/TM1M0GATEC/TM1M0定时/计数器1定时/计数器01,模式控制寄存器TMOD(SFR的地址:89H)《微机原理及应用》多媒体课件江南大学C/T计数、定时方式选择位:C/T=1时,计数方式。C/T=0时,定时方式。M1、M0模式选择:确定四种工作模式。M1、M0工作模式00模式0(13位)01模式1(16位)10模式2(8位自动重装)11模式3(8位拆分组合)注意:TMOD不能位寻址,只能用直接寻址方式访问字节地址单元,如MOVTMOD,#20H。控制《微机原理及应用》多媒体课件江南大学2,控制寄存器TCON(SFR地址:88H)TF0定时/计数器T0的溢出标志:当加法计数器发生溢出时硬件自动置位,即TF0=1,向CPU发出信号,提醒CPU作出相应处理。TR0定时/计数器T0的控制位:由软件设定:TR0=1加法计数器开始工作;TR0=0加法计数器停止计数。TF1TR1TF0TR0----控制(低4位在第8章讲述)《微机原理及应用》多媒体课件江南大学TF1定时/计数器T1的溢出标志:当加法计数器发生溢出时硬件自动置位,即TF1=1,向CPU发出信号,提醒CPU作出相应处理。TR1定时/计数器T1的控制位:由软件设定:TR1=1加法计数器开始工作;TR1=0加法计数器停止计数。TF1TR1TF0TR0----控制寄存器TCON(SFR地址:88H)返回(低4位在第8章讲述)控制《微机原理及应用》多媒体课件江南大学6.4四种模式定时常数计算模式计数位数最大计数值模式013位Tmax=213=8192模式116位Tmax=216=65536模式2,38位Tmax=28=256T=(Tmax-TC)×Tcy其中,T:定时时间;Tmax:计数最大值;TC:计数初值;Tcy:计数器计数脉冲的周期,Tcy=fosc/12,若fosc=12MHz时,Tcy=1μЅ。《微机原理及应用》多媒体课件江南大学(1)模式0定时常数计算计数方式:计数值N=213-初始值x定时方式:定时时间T=(213-初始值x)×Tcy500us例:设单片机晶振频率fosc=6MHZ,要求P1.0脚输出500us的方波信号,该方波信号的周期用定时器T1确定,采用查询方法实现。1.晶振频率fosc=6MHZ,机器周期=12/fosc=2us,定时时间T=500us/2=250us,对于模式0的13位计数器,(最大定时时间16384us),根据方程(213-x)×2us=250us可求得初始值x=1F83H=0001,1111,1000,0011B(计算值)--→1111,1100,0000,0011B=FC03H(设定值)。2.若将定时器T1设为定时模式0,则TMOD=00H;《微机原理及应用》多媒体课件江南大学参考程序:ORG0000HMOVTMOD,#00H;定时模式0MOVTH1,#0FCH;初始值MOVTL1,#03HSETBTR1;启动定时器LOOP:JNBTF1,LOOPMOVTH1,#0FCH;重置初始值MOVTL1,#03HCLRTF1CPLP1.0;输出值取反AJMPLOOPEND500us250us250us定时常数计算《微机原理及应用》多媒体课件江南大学(2)模式1定时常数计算计数方式:计数值N=216-初始值x定时方式:定时时间T=(216-初始值x)×Tcy同一例题:设单片机晶振频率fosc=6MHZ,要求P1.0脚输出500us的方波信号,该方波信号的周期用定时器T1确定。1.对于模式1的16位计数器,根据方程(216-x)×2us=250us可求得初始值x=FF83H;2.将定时器T1设为定时模式1,则TMOD=10H。参考程序类同模式0例题定时常数计算《微机原理及应用》多媒体课件江南大学参考程序:ORG0000HMOVTMOD,#10H;定时模式1MOVTH1,#0FFH;初始值MOVTL1,#83HSETBTR1;启动定时器LOOP:JNBTF1,LOOPMOVTH1,#0FFH;重置初始值MOVTL1,#83HCLRTF1CPLP1.0;输出值取反AJMPLOOPEND500us250us250us定时常数计算《微机原理及应用》多媒体课件江南大学(3)模式2定时常数计算计数方式:计数值N=28-初始值x定时方式:定时时间T=(28-初始值x)×Tcy同一例题:设单片机晶振频率fosc=6MHZ,要求P1.0脚输出500us的方波信