《嵌入式系统概论-单片机基础》单片机之定时计数器.ppt

上传人:tia****nde 文档编号:12726529 上传时间:2020-05-19 格式:PPT 页数:46 大小:645KB
返回 下载 相关 举报
《嵌入式系统概论-单片机基础》单片机之定时计数器.ppt_第1页
第1页 / 共46页
《嵌入式系统概论-单片机基础》单片机之定时计数器.ppt_第2页
第2页 / 共46页
《嵌入式系统概论-单片机基础》单片机之定时计数器.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
嵌入式系统概论,单片机基础,定时/计数器,教学目的:了解80C51系列单片机内部定时器/计数器的结构与工作原理;能够采用查询方式对定时器/计数器的4种工作模式编程、应用。教学重点:1.定时/计数器的工作原理;2.定时器方式1、2的编程、应用。教学难点:1.工作方式寄存器和定时/计数器控制寄存器的设置2.定时/计数器初值的设置,80C51定时器/计数器及其应用,在单片机应用和控制系统中,经常需要对某个控制对象定时进行控制。这种定时一般可采用两种方法。一是利用延时程序来实现,但这样会降低CPU的工作效率;另外一种方法就是通过一个可编程的实时时钟或可编程的时钟接口芯片来实现。这种方法可以使CPU与时钟并行工作,并且不会影响CPU的效率。除定时外,还有一些是对某种事件的计数结果来进行控制的,因此,单片机内部均设有可编程的定时器/计数器。80C51单片机内有两个16位定时/计数器,即定时器T0和定时器T1,它们都具有定时和事件计数的功能,可用于定时控制延时,对外部事件计数和检测等场合。,6.1单片机的定时器/计数器的工作原理,80C51定时/计数器基本概念,在实时测量控制应用系统中,常需要定时控制及对外界事件进行计数。定时:定时是对周期固定、已知的脉冲计数。计数:其实质就是对外部输入的周期不固定的脉冲计数。8051单片机中的定时器和计数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片机内部提供一个稳定的计数源进行定时的。这个计数源是由单片机的晶振经过12分频后获得的一个脉冲源。所以定时器计数脉冲的时间与晶振有关。,N个方波,脉冲间隔不等下降沿计数,.3.1定时计数器的结构,计数定时计数器的实质是加计数器(位),其原理类似于古代用来计时的水钟:,假设计满一小时需要100,000,000滴,这称为水钟的计数容量,16位定时/计数器的计数容量是65536,单片机是对脉冲个数计数,计数器每接收到一个脉冲,计数值加1,,当接收满65535个脉冲后,再来一个脉冲,计数值清0表明这一轮计数结束,同时将标志位TF0或TF1置1。,80C51定时/计数器基本原理,定时单片机内部的计数器用作定时器时,是对标准的时钟进行了计数,每来一个时钟脉冲,计数器加1,只要保证计数脉冲的间隔相等,则计数值就代表了时间的流逝。,6.1单片机的定时器/计数器的工作原理,80C51定时/计数器的结构,80C51单片机内部有两个16位的可编程定时计数器T0、T1。可编程是指其功能如工作方式、定时时间、量程、启动方式等均可由指令来确定和改变。80C51单片机有6个8位寄存器用于T0、T1的控制与管理,其访问地址依次为8AH8DH,每个寄存器均可单独访问。16位的T0、T1寄存器是用于存放定时或计数初值与当前值的,两个特殊功能寄存器TCON和TMOD是用于管理与控制定时计数器工作的。,80C51的16位定时计数器实质上是一个加1计数器,其控制电路受软件控制、切换。通过软件可以设置为4种工作方式,每种方式都可以用作定时或者计数。不同的工作方式,计数器长度分别为:16位、13位和8位。,80C51定时/计数器的原理,当80C51的16位选择定时/计数器作为定时器工作时:计数器的加1信号由振荡器12分频信号产生。经过一个机器周期,计数器增1,直至计满溢出为止。对于标准频率12MHz的80C51,T=1s。若需要改变定时时间,可改变定时器的初值或选择定时器的长度(8位、13位、16位)。,80C51定时/计数器的原理,特点:波形间隔相等,时间确定,N个方波,当80C51的16位定时/计数器作为计数器工作方式时:通过引脚T0(P3.4)、T1(P3.5)对外部信号计数。外部脉冲的下降沿触发计数,计数器在每个机器周期的S5P2期间对引脚电平采样,如果一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1.检测一个由1至0的跳变需要两个机器周期。对于频率12MHz的80C51,T=2s。计数器的最高计数频率为0.5MHz。,80C51定时/计数器的原理,80C51定时/计数器的控制方法,80C51的定时计数器是一个可编程部件,在定时计数器工作之前,CPU须将一些命令(控制字)写入定时计数器的特殊功能寄存器中。这个过程称作“定时计数器的初始化”。在初始化过程中,须将工作方式控制字写入工作方式寄存器(TMOD),工作状态控制字写入控制寄存器(TCON),赋予定时计数器初值。控制与管理定时/计数器T0和T1工作的特殊功能寄存器有2个,工作方式寄存器TMOD(89H)和定时/计数器控制寄存器TCON(88H)。,工作方式寄存器TMOD(89H),工作方式寄存器TMOD用于控制T0、T1的工作方式和4种工作模式。其中低4位用于控制T0,高4位用于控制T1。其格式如下:,定时器T1,定时器T0,GATE:门控位C/T:计数/定时选择M1M0:工作方式选择,工作方式寄存器TMOD(89H),GATE=0,只要(定时/计数器控制寄存器TCON)中TR0(TR1)置1,即可启动定时器T0(T1)开始工作。当GATE=1时,除需要将(定时/计数器控制寄存器中)TR0(TR1)置1外,还需要使INT0(INT1)为高电平,才能启动相应的定时器开始工作。C/T=0,选择定时器工作方式,对机器周期脉冲计数定时。C/T=1,选择计数器工作方式,对T0(T1)引脚输入的负脉冲下降沿计数。M1、M0位:T0(T1)工作方式选择位,定时/计数控制寄存器TCON(88H),控制寄存器TCON:TCON的作用是控制定时器的启/停,标志定时器的溢出和中断情况。TCON在SFR的字节地址为88H,可位寻址。,D7(D5)TF1(0)定时器1(0)溢出标志。当定时器溢出时由硬件使TF1(0)置1,申请中断。进入中断服务程序后,由硬件自动清0,查询方式下用软件清0。D6(D4)TR1(0)定时器1(0)运行控制位。TR1(0)=0关闭定时器;TR1(0)=1启动定时器当系统复位时,TCON的所有位均清0。,定时/计数器的控制关系,定时/计数器的功能,定时功能-计数输入信号是内部时钟脉冲,计数频率是振荡频率的1/12。,计数功能-计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。,定时/计数器的核心部件是二进制加1计数器(TH0、TL0)或(TH1、TL1)。,TCON(88H),TMOD(89H),定时/计数器的结构,定时/计数器结构,80C51单片机内有2个独立的16位的可编程定时/计数器T0和T1。它们的结构相似。还有1个工作方式寄存器TMOD和1个控制寄存器TCON。下面是T0的结构如图所示:(现在是定时状态,且GATE=0是否开始定时取决于控制寄存器的TR0控制。),振荡器,12,C/T=0,C/T=1,+,加1计数器,TF0,合/断,T0,TR0,GATE0,INT0,工作方式寄存器TMOD(89H),振荡器,12,C/T=0,C/T=1,+,加1计数器,TF0,合/断,T0,TR0,GATE0,INT0,CT:用来确定T0(T1)是工作在计数方式还是工作在定时方式。CT=0为定时方式。CT=1为计数方式。即对外部引脚的外部输入脉冲计数,外部引脚T0(1)上输入的每一个脉冲的负跳变使计数值加1,M1和M0:两位用来确定T0(T1)的具体工作模式。M1、M0的四种组合刚好与四种工作模式对应,分别是方式0、方式1、方式2、方式3。GATE0(1):门控标志位。当GATE0(1)=0,且TR0(1)=1时,启动T0(1)开始工作;当GATE0(1)=1时,定时计数器的启动除了受TR0(1)控制外,还受INT0引脚的控制。此时当TR0(1)=1且INT0引脚上出现高电平时才能启动定时计数器。,TMOD,定时/计数控制寄存器TCON(88H),振荡器,12,C/T=0,C/T=1,+,加1计数器,TF0,合/断,T0,TR0,GATE0,INT0,TCON,TF0(1):T0(1)溢出中断标志位。当T0(1)计数溢出时,TF0(1)=1。在允许中断的情况下,CPU响应T0(1)中断,转向T0(1)中断服务程序,此时由硬件自动将TF0(1)清0。该标志位可由软件查询,也可用软件清0或置1。TR0(1):为T0(1)启动控制位。当TR0(1)=1时,启动T0(1);TR0(1)=0时,关闭T0(1)。该位由软件进行设置。,振荡器,12,C/T=0,C/T=1,+,加1计数器,TF0,合/断,T0,TR0,GATE0,INT0,80C51单片机内部有两个16位的定时/计数器T0和T1。每个定时/计数器占用两个特殊功能寄存器(C/T=0定时C/T=1计数)T0由TH0和TL0两个8位计数器组成,字节地址分别是8CH和8AH。T1由TH1和TL1两个8位计数器组成,字节地址分别是8DH和8BH。用于存放定时或计数的初值。当计数器工作时,其值随计数脉冲做加1变化。,计数寄存器,TH0,TL0,由于T0由TL0(低8位)和TH0(高8位)组成;T1由TH0和TH1组成。所以T0、T1都是16位计数器。但是若将它们设置成不同的工作方式,其计数长度(最大值)和计数方式都可变化。内部定时计数器一共有四种工作方式,由TMOD的相关位设置。,定时/计数器的的工作方式寄存器TMOD(89H),M1和M0:两位用来确定T0(T1)的具体工作模式。M1、M0的四种组合刚好与四种工作模式对应。定时/计数器工作模式如下:,定时器T1,定时器T0,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,在方式0下,定时/计数器T0和T1的方式0都是相同的。仅以T0为例。此时T0构成一个13位的计数器,由TH0的8位和TL0的低5位组成,TL0的高3位未用,满计数值为213。(C/T=0定时C/T=1计数)T0启动后立即加1计数,当TL0的低5位计数溢出时向TH0进位,TH0计数溢出则对相应的溢出标志位TF0置位,以此作为定时器溢出中断标志。当单片机进入中断服务程序时,由内部硬件自动清除该标志。,TH0,D5,方式0,D4,D3,D2,D1,D0,TL0,当选择了定时或计数工作方式后,定时/计数脉冲却不一定能到达计数器输入端,只有当控制开关合上时,计数脉冲才能到达计数器输入端,开始加1计数。控制开关闭合的条件如下:GATE=0时,开关的打开、合上取决于TR0,只要TR0是1,开关就合上,计数脉冲得以畅通无阻,而如果TR0等于0则开关断开,计数脉冲无法通过,因此定时/计数是否工作,只取决于TR0。GATE=1时,控制开关不仅要由TR0来控制,而且还要受到引脚的控制,只有TR0为1,且INT0引脚也是高电平,开关才合上,计数脉冲才得以通过。,计数器,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,在方式1下,定时/计数器T0和T1的方式1都是相同的。以下仅以T0为例。T0构成一个16位的计数器,由TH0的8位和TL0的8位组成,满计数值为216。(C/T=0定时C/T=1计数)T0启动后立即加1计数,当TL0计数溢出时向TH0进位,TH0计数溢出则对相应的溢出标志位TF0置位,以此作为定时器溢出中断标志。当单片机进入中断服务程序时,由内部硬件自动清除该标志。,TH0,TL0,方式1,计数器,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,在方式2下,定时/计数器T0和T1的方式2都是相同的。以下仅以T0为例。TH0和TL0被当作两个8位计数器,计数过程中,TH0寄存8位初值并保持不变,由TL0进行8位计数。当低8位计数溢出时,除了可产生中断申请外,还将TH0中保存的内容向TL0重新装人,以便于重新计数,而TH0中的初值仍然保留,以便下次再行对TL0进行重装。方式2对于连续计数比较有利。这时不需要在溢出后用软件重新装入计数初值,而是可以自动装入,但此时计数的长度将受到很大的限制,只有28=256次。,TH0,TL0,方式2,计数器,振荡器,12,C/T=0,C/T=1,+,TF0,合/断,T0,TR0,GATE0,INT0,方式3只适用于定时/计数器T0。这种工作方式下,定时/计数器T0被拆成2个独立的定时/计数器来用。,TL0,方式3,计数器,振荡器,12,TF1,TH0,计数器,TR1,合/断,只有定时器T0设置为方式3。定时器T0在方式3下,16位计数器拆开为两个独立工作的8位计数器TL0和TH0。若TL0来说它既可以按计数方式工作,也可以按定时方式工作,除了仅用8位寄存器TL0外,与工作方式1相同,可定时,也可计数。(3)而TH0则只能用作简单的内部定时功能,占用原定时器T1的控制位TR1、TF1,同时占用T1的中断源,其开启和关闭仅受TR1置1清0控制。,一般情况下,当定时/计数器T0处于工作方式3时,定时/计数器T1可工作为方式0、1、2,但由于此时其已没有控制通断和溢出中断的功能,T1只能作为串行口的波特率发生器使用,或不需要中断的场合。,定时/计数器的初始化与启动,在使用定时/计数器前,都要对其初始化,使其按照设定的功能工作。初始化步骤一般如下:确定工作方式对TMOD赋值。预置定时或计数的初值可直接将初值写入TH0、TL0或TH1、TL1。在对T0和T1初始化后,即可准备启动定时/计数器工作。初始化时,规定用软件启动则将TR0或TR1置1;若规定由外部中断引脚电平启动,必须给外引脚加启动电平。,再以水钟为例,当水不断落下,下面容器中的水不断变多,最终总有一滴水使得容器完全充满。这时如果再有一滴水落下,就会发生“溢出”。与此类似,16位定时计数器计满65536个脉冲时,也会发生溢出。定时计数器溢出后标志位TF0(或TF1)由0变1,由此能够引发定时中断(在中断定时方式下),这就像定时的时间一到,闹钟就会响一样。如果采用12的晶振,对应的脉冲周期是微秒,计满65536个脉冲所对应的时间就是65.536ms。,3定时/计数值的设置,定时/计数器初值的确定方法,再回到水钟的例子上去:刚才假设下面容器滴入100,000,000滴水才会满,现在我们在开始滴水之前先放入一勺水,这样问题就解决了。,计数器的道理是一样的,只要用预置数的方法先在计数容器内存入一个初值(通常称为时间常数),如我们要计100,那就存入65436,只要再来100个脉冲,就刚好会溢出。,计数器初值的设置,定时/计数器初值的确定方法,在主频为12MHz的情况下,80C51的每个脉冲(机器周期)是1微秒,则计满65536个脉冲需65.536毫秒,如要定时10毫秒则存入初值55536,(10毫秒是10000微秒,需计数10000个脉冲)。可见,定时器的定时时间长短与系统时钟和定时器初值有关。,定时器初值的设置,定时/计数器初值的确定方法,定时/计数器初值的确定方法,由于不同的工作方式下,计数器的位数不同,因而最大计数值也不同,确定定时/计数器初值的具体方法如下:现假设最大计数值为M,那么各方式下的M值如下:方式0:M2138192方式1:M21665536方式2:M28256方式3:定时器0分成两个8位计数器,所以两个M均为256。因为定时/计数器是做“加1”计数,并在计满溢出时产生中断,因此初值X可以这样计算:XM计数值标准80C51时钟频率为12MHz,计数器每次加1所需的时间为1s,如果产生1ms的定时时间,需“加1”1000次,1000即计数值。如果要求在方式一下工作,则初值XM计数值=64536=C113H上式表示如果初值为64536,再计1000个脉冲就到了65536,此时定时器溢出。一旦溢出,计数器中的值就会变0,正好产生1ms的定时时间。,定时器T0(T1)的工作方式(方式0方式1),通过对M1、M0位的设置,T0可选择4种工作方式,T1可选择3种工作方式。本节将介绍这4种工作方式的结构、特点及工作过程。方式0和方式1:结构和工作原理基本相同,只是方式0为13位计数器方式,方式1为16位计数器方式。,定时器T0(T1)的工作方式(方式2),方式2:计数常数可自动再装入的8位计数器方式。TH0保持初值,当TL0计数溢出时则置位TF0,并将TH0初值再次装入TL0,继续计数,重复循环不止。,定时器T0的工作方式(方式3),方式3:只有定时器T0可以设置方式3。此时,定时器T0被拆为两个独立的8位计数器TL0、TH0。原T0的控制位及引脚等,均用于TL0的控制,可定时也可计数。TH0只可用作简单的内部定时功能,占用定时器T1的控制位TR1、TF1和中断源,其启动、关闭仅受TR1置1和清0。,定时器T0应用举例(方式一),例:在P1.1端口输出周期为2ms的方波,晶振fosc6MHz。解:采用T0的定时功能,对P1.1端口每隔1ms取反一次即可得到周期为2ms方波。(注:1ms=1000s),定时器的初始化:TMOD的设定:工作方式1(M1M0=01)T0为定时器(C/T=0)内部TR0控制启动计数器初值计算:定时时间=(最大计数值计数器初值)机器周期即:1000s=(65536计数器初值)1261s。得:计数器初值=65036=FE0CH,定时器T0应用举例(方式一),ORG2000HMOVTMOD,#01HMOVTL0,0CH;给TL0置初值MOVTH0,0FEH;给TH0置初值SETBTR0;启动T0LP1:JBCTF0,LP2;查询计数溢出TF0=1转,且TF0清0AJMPLP1LP2:MOVTL0,0CH;重新设置计数初值MOVTH0,0FEHCPLP1.1;输出取反AJMPLP1;重复循环,定时器T1应用举例(方式一),用单片机的T1定时完成日历时钟秒、分、时的定时,fosc=12MHz。首先完成1S(秒)的定时,每计满60S,分钟加1;每计满60min,时钟的时加1;计满24h,时钟清0,然后从0h开始重复上述过程。采用软件计数实现实时时钟控制。用T1定时50ms,工作于模式1。T=Mx12/fosc=65536x12/(12x106Hz)=65536s=65.536mST1定时50mS(50000s),T1的初始值X为X=M-计数值=65536-50000=15536=3CB0H设置软件计数单元:50H单元为秒计数,计满20次为1秒钟;51H单元为分计数,计满60次为1分钟;52H单元为小时计数,计满60次为1小时;53H单元为日计数,计满24次为1日;然后程序不断循环。,定时器T1应用举例(方式一),MOV50H,#20H;定时1S循环次数MOV51H,#60H;定时1min循环次数MOV52H,#60H;定时1h循环次数MOV53H,#24H;24h循环次数MOVTMOD,#10H;T1定时,模式1MOVTH1,#3CH;赋初值MOVTL1,#0B0HSETBTR1;启动T1L2:JBCTF1,L1;查询计数溢出TF1=1,转L1该位清0SJMPL2L1:MOVTH1,#3CH;赋初值MOVTL1,#0B0HDJNZ50H,L2;未到1S继续循环MOV50H,#20DJNZ51H,L2;未到1min继续循环MOV51H,#60DJNZ52H,L2;未到1h继续循环MOV52H,#60DJNZ53H,L2;未到24h继续循环MOV53H,#24SJEMPL2,定时器T0应用举例(方式二计数),用定时器T0方式二计数,每计满100次,将P1.0端取反。外部计数信号由T0(P3.4)脚引入,每产生1次负跳变计数器加1,由程序查询TF0。方式二具有初值自动装入功能。初值X=28-100=156=9CHTH0=TL0=9CH,TMOD=06H,定时器T0(T1)应用举例(方式二),MOVTMOD,#06H;设置为方式二计数MOVTH0,#9CH;赋初值MOVTL0,#9CHSETBTR0;启动T0DEL:JBCTF0,REP;查询计数溢出SJMPDELREP:CPLP1.0;输出取反SJMPDEL,简易方波发生器,利用定时/计数器T0,工作于方式0,采用查询方式,在P1.0引脚输出频率为500Hz的方波(周期是2ms),并用示波器进行观察(晶振采用12MHz)。,背景知识1方波产生原理使P1.0引脚的输出状态定时翻转,则该端口能输出一定频率的方波。2方式0的时间常数初值定时/计数器工作于方式0状态下,定时/计数的长度是13位。应用前面给出的时间常数初值的计算公式X=8192-t(fosc/12)我们可以很方便地计算出时间常数初值,但在将其装入定时/计数器的TH、TL寄存器时,必须要注意:将计算结果的高8位装入TH0、低5位装入TL0,这一环节是非常容易出错的。,简易方波发生器,简易方波发生器,以T0方式0产生500Hz的方波(周期是2ms)为例,需要进行1ms的定时,时间常数初值X=8192-110-3(12106/12)=8192-1000=7192=1C18H=0001110000011000B则(TL0)=00011000B=18H,(TH0)=11100000B=0E0H定义TMOD=00000000B,简易方波发生器,ORG0000HLJMPMAIN;跳至主程序MAIN:MOVTMOD,#00H;置T0工作于方式0MOVTH0,#0E0H;装入时间常数初值MOVTL0,#18HSETBTR0;启动T1LOOP:JNBTF0,LOOP;查询等待CLRTF0;清TF1CPLP1.0;P1.0取反MOVTH0,#0E0H;重新装入时间常数初值MOVTL0,#18HAJMPLOOP;继续生成波形END,END,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!