第6章单片微机的定时器计数器原理及应用邓ppt课件_第1页
第6章单片微机的定时器计数器原理及应用邓ppt课件_第2页
第6章单片微机的定时器计数器原理及应用邓ppt课件_第3页
第6章单片微机的定时器计数器原理及应用邓ppt课件_第4页
第6章单片微机的定时器计数器原理及应用邓ppt课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第六章第六章 单片微机的定时器单片微机的定时器/计数器计数器原理及应用原理及应用 实验五实验五 定时器定时器 P1.0、P1.1分别接两个发光二极管,分别接两个发光二极管,INT0脚接一按键做开关,按一次开关,脚接一按键做开关,按一次开关,则启动,两个发光管一亮一灭,亮灭则启动,两个发光管一亮一灭,亮灭时间均为时间均为1秒;再按一次开关,则关闭,秒;再按一次开关,则关闭,即两个发光管都灭。即两个发光管都灭。 实验六实验六 定时器、计数器定时器、计数器 P3.2口输出周期为口输出周期为2S的方波,的方波,T1口为脉冲口为脉冲输入端,记录输入的脉冲个数,脉冲个数输入端,记录输入的脉冲个数,脉冲个数

2、由由P1口所接的口所接的8个数码管显示,设一按键作个数码管显示,设一按键作为开关控制系统运行。为开关控制系统运行。6.1 概述概述6.2 定时器定时器/计数器计数器T0、T16.3 定时器定时器/计数器计数器T26.4 监视定时器看门狗监视定时器看门狗T36.5 定时器定时器/计数器的应用编程计数器的应用编程定时或计数方法:定时或计数方法: 1 1硬件法:硬件法:定时功能完全由硬件电路完成,不占定时功能完全由硬件电路完成,不占用用CPUCPU时间。时间。2 2软件法:软件定时是执行一段循环程序来进行时间软件法:软件定时是执行一段循环程序来进行时间延时。延时。3 3可编程定时器计数器:通过软件编

3、程来实现定时可编程定时器计数器:通过软件编程来实现定时时间的改变,通过中断或查询方法来完成定时功能或时间的改变,通过中断或查询方法来完成定时功能或计数功能。计数功能。6-1 概述概述定时器资源:定时器资源:80C51包含有两个包含有两个16位的定时器计数器:位的定时器计数器:T0和和T1;80C52包含有三个包含有三个16位的定时器计数器:位的定时器计数器:T0、T1、T2在在80C51系列的部分产品如系列的部分产品如Philips公司的公司的80C552中,还中,还包含有作看门狗的包含有作看门狗的8位定时器位定时器T3。定时器计数器的核心是一个加定时器计数器的核心是一个加1计数器其计数器其基

4、本功能是计数加基本功能是计数加1。计数计数 是对单片微机的是对单片微机的T0、T1 (或(或T2引脚引脚上输入的一个上输入的一个1到到0的跳变进行计数增的跳变进行计数增l。 定时定时 是对单片微机内部的机器周期进行计是对单片微机内部的机器周期进行计数,从而得到定时。数,从而得到定时。 波特率发生器波特率发生器 80C51的定时器的定时器/计数器还可计数器还可用作串行接口的波特率发生器。用作串行接口的波特率发生器。T0、T1 的内部结构简图:的内部结构简图:6.2 6.2 定时器计数器定时器计数器T0T0、T1T1图图61 61 定时器定时器/ /计数器计数器T0T0、T1T1的内部结构框图的内

5、部结构框图 T0、T1 的方式寄存器的方式寄存器TMOD6.2.1 与定时器计数器与定时器计数器T0、T1有关的特殊功能有关的特殊功能寄存器寄存器-TMOD、TCON、TH、TL、IE、IPD7 D6 D5 D4 D3 D2 D1 D0GATE C/TM1M0GATE C/TM1M0T1T0 GATE门控位门控位 图图62CT:功能选择位:功能选择位定时时钟脉冲:定时时钟脉冲:1/12fosc最高计数频率:最高计数频率:1/24foscM1、M0:工作方式选择位。:工作方式选择位。M1 M0工作方式工作方式 计数器配置计数器配置 0 0方式方式0 13位计数器位计数器 0 1方式方式1 16位

6、计数器位计数器 1 0方式方式2 自动重装载的自动重装载的8位计数器位计数器 1 1方式方式3 T0分为两个分为两个8位计数器,位计数器,T1停止计数停止计数 定时器计数器定时器计数器T0、T1 的控制寄存器的控制寄存器TCON 位地址位地址8FH8FH8EH8EH8DH8DH8CH8CH8BH8BH8AH8AH89H89H88H88H位名称位名称TF1TF1TR1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0功能功能 T1T1 中断中断标志标志启动启动T1T0T0中断中断标志标志启动启动T2中断中断标志标志触发触发方式方式中断中断标志标志 触发触发方式方式 T

7、0、T1 的数据寄存器的数据寄存器TH1、TL1,TH0、TL0 定时器定时器/计数器中断计数器中断 中断允许寄存器中断允许寄存器IE 中断矢量中断矢量 中断优先级寄存器中断优先级寄存器IPT0:有:有4种工作方式可选方式种工作方式可选方式0,1,2,3)T1:有:有3种工作方式可选方式种工作方式可选方式0,1,2) 方式方式0-13位定时器位定时器/计数器计数器(M10、M00) 最大计数值最大计数值213 = 8192,当,当fosc=12MHZ时,时,Tmax=8192S6.2.2 6.2.2 定时器计数器定时器计数器T0T0、T1 T1 的工作方式的工作方式B=TRx(GATE+INT

8、x) 方式方式1-16位定时器位定时器/计数器计数器(M10、M01) 最大计数值最大计数值216 = 65535,当,当fosc=12MHZ时,时,Tmax=65535S 方式方式2- 8位定时器位定时器/计数器自动重装载计数器自动重装载(M11、M00) 优点:定时初值可自动恢复优点:定时初值可自动恢复,TH中存放初值中存放初值;缺陷:计数范围小,最大计数值为缺陷:计数范围小,最大计数值为28= 256适用于需要重复定时,而定时范围不大的应用场合,适用于需要重复定时,而定时范围不大的应用场合,比如:作为串行口波特率发生器使用比如:作为串行口波特率发生器使用 方式方式3-仅仅T0有此方式,有

9、此方式,T1无方式无方式3中断矢量中断矢量000BH中断矢量中断矢量001BHT0T0方式方式3 3下的下的T0T0 在方式在方式3 3情况下情况下,T0,T0被拆成二个独立的被拆成二个独立的8 8位计位计数器数器TH0TH0、TL0TL0。 TL0 TL0:8 8位定时位定时/ /计数器,使用计数器,使用T0T0原有的原有的控制寄存器资源控制寄存器资源:TF0,TR0,GATE,C/T,INT0:TF0,TR0,GATE,C/T,INT0,中断矢量等;中断矢量等; TH0 TH0:8 8位定时器,占用位定时器,占用T1T1的中断溢出标的中断溢出标志志TF1,TF1,运行控制开关运行控制开关T

10、R1,TR1,中断矢量中断矢量001BH001BH,只,只能对片内机器周期脉冲计数能对片内机器周期脉冲计数 T0 T0方式方式3 3情况下的情况下的T1T1 T1 T1由于其由于其TF1TF1、TR1TR1被被T0T0的的TH0TH0占用,计占用,计数器溢出时,只能将输出信号送至串行口,数器溢出时,只能将输出信号送至串行口,即用作串行口波特率发生器。即用作串行口波特率发生器。定时器定时器/ /计数器计数器T0T0方式方式3 3时,时,T1T1的逻辑结构图的逻辑结构图80C52中的中的T2: 16位位功能:自动重装载和捕获能力功能:自动重装载和捕获能力相关寄存器:相关寄存器:8位计数器位计数器T

11、L2、TH2, 控制寄存器控制寄存器T2CON, 模式寄存器模式寄存器T2MOD,捕获寄存器捕获寄存器RCAP2L低字节和低字节和RCAP2H高字节)。高字节)。计数脉冲源:两个计数脉冲源:两个-内部机器周期及内部机器周期及 T2P10端输入的外部计数脉冲。端输入的外部计数脉冲。工作方式:工作方式: 3种种-自动重装载、捕获和波特率发生器方式自动重装载、捕获和波特率发生器方式引脚引脚T2是外部计数脉冲输入端是外部计数脉冲输入端引脚引脚T2EX是外部控制信号输入端。是外部控制信号输入端。6.3 6.3 定时器计数器定时器计数器T2T2 控制寄存器控制寄存器 T2CON位地址位地址 CFHCEHC

12、DHCCHCBHCAHC9HC8H位功能位功能 TF2EXF2RCLKTCLK EXEN2TR2C/T2CP/RL26.3.1 T26.3.1 T2中的特殊功能寄存器中的特殊功能寄存器TF2T2 溢出标志,溢出标志, T2溢出时置位并申请中断,软件清除。溢出时置位并申请中断,软件清除。在波特率发生器方式下,即在波特率发生器方式下,即RCLK1或或TCLK1时,定时器溢时,定时器溢出不对出不对TF2置位。置位。EXF2T2外部标志,外部标志,EXF2要靠软件来清除要靠软件来清除当当EXEN21,且,且T2EX引脚上出现负跳变而造成捕获或重装载引脚上出现负跳变而造成捕获或重装载时时EXF2置位,申

13、请中断。若已允许置位,申请中断。若已允许T2中断,中断,CPU将响应中断,将响应中断,转向中断服务程序。转向中断服务程序。 RCLK:接收时钟标志,软件置位或清除:接收时钟标志,软件置位或清除用以选择用以选择T2或或T1作串行口接收波特率发生器。作串行口接收波特率发生器。RCLK1时,用时,用T2溢出脉冲作为串行口的接收时钟;溢出脉冲作为串行口的接收时钟;RCLK0时,用时,用T1的溢出脉冲作接收时钟。的溢出脉冲作接收时钟。 TCLK:发送时钟标志,软件置位或清除:发送时钟标志,软件置位或清除用以选择用以选择T2或或T1作串行口发送波特率发生器。作串行口发送波特率发生器。TCLKl时,用时,用

14、T2溢出脉冲作为串行口的发送时钟;溢出脉冲作为串行口的发送时钟;TCLK0时,用时,用T1的溢出脉冲作发送时钟。的溢出脉冲作发送时钟。 EXEN2:T2外部允许标志,软件设置或清除外部允许标志,软件设置或清除允许或禁止用外部信号来触发捕获或重装载操作。允许或禁止用外部信号来触发捕获或重装载操作。EXEN2l时,若时,若T2未用作串行口的波特率发生器,则在未用作串行口的波特率发生器,则在T2EX端出现的信号负跳变时,将造成端出现的信号负跳变时,将造成T2捕获或重装载,并捕获或重装载,并置置EXF2标志为标志为 1,请求中断。,请求中断。EXEN20时,时,T2EX端的外部信号不起作用端的外部信号

15、不起作用TR2:T2运行控制位。软件设置或清除运行控制位。软件设置或清除C/T2:T2的定时器方式或计数器方式选择位。的定时器方式或计数器方式选择位。 C/T20时,定时器工作方式。计数脉冲的频率为时,定时器工作方式。计数脉冲的频率为1/12fosc C/T21时,计数器工作方式,下降沿触发。计数脉冲自时,计数器工作方式,下降沿触发。计数脉冲自T2引引脚输入,每当外部脉冲负跳变时,计数器值增脚输入,每当外部脉冲负跳变时,计数器值增1。 CPRL2:捕获重装载标志。:捕获重装载标志。 CPRL2l选择捕获功能,这时若选择捕获功能,这时若EXEN21,且,且T2EX端的信端的信号负跳变时,发生捕获

16、操作。号负跳变时,发生捕获操作。 CPRL20,选择重装载功能,这时若,选择重装载功能,这时若T2溢出或在溢出或在EXEN21条件下条件下 T2EX端信号负跳变,都会造成自动重装载操作。端信号负跳变,都会造成自动重装载操作。当当RCLKl或或TCLKl时,时,CPRL2控制位不起作用,控制位不起作用,T2 被强被强制工作于重装载方式。重装载发生于制工作于重装载方式。重装载发生于T2溢出时,常用来作波特率溢出时,常用来作波特率发生器。发生器。 方式控制寄存器方式控制寄存器T2MODD7D6D5D4D3D2D1D0-T2OE DCEN T2OE:T2输出允许位。输出允许位。当当T2OE1时,允许时

17、钟输出至时,允许时钟输出至T2引脚。引脚。仅对仅对80C5480C58有定义。有定义。DCEN:向下计数允许位:向下计数允许位DCEN=1, T2向下向下(减减)计数计数 DCEN=0, T2向上向上(加加)计数计数 数据寄存器:数据寄存器:TH2、TL2 T2有一个有一个16位的数据寄存器,是由高位的数据寄存器,是由高8位寄存器位寄存器TH2和低和低8位寄存器位寄存器TL2所组成。它们都只能字节寻址,所组成。它们都只能字节寻址,相应的字节地址为相应的字节地址为CDH和和CCH。 复位后,这两个寄存器全部清零。复位后,这两个寄存器全部清零。 捕获寄存器:捕获寄存器:RCAP2HRCAP2H、R

18、CAP2LRCAP2L T2 T2中的捕获寄存器是一个中的捕获寄存器是一个1616位的数据寄存器,由高位的数据寄存器,由高8 8位寄位寄存器存器RCAP2HRCAP2H和低和低8 8 位寄存器位寄存器RCAP2LRCAP2L所组成,相应的字节地址为所组成,相应的字节地址为CBHCBH和和CAHCAH。捕获寄存器捕获寄存器RCAP2HRCAP2H和和RCAP2LRCAP2L,用于捕获计数器,用于捕获计数器TL2TL2、TH2TH2的计数状态,或用来预置计数初值的。的计数状态,或用来预置计数初值的。TH2TH2、TL2TL2和和 RCAP2HRCAP2H、RCAP2LRCAP2L之间接有双向缓冲器

19、三态门)。之间接有双向缓冲器三态门)。复位后,两个寄存器全部清零。复位后,两个寄存器全部清零。T2的工作方式用控制位的工作方式用控制位CPRL2T2CON0和和RCLKTCLK来选择。来选择。T2有有3种工作方式,如表种工作方式,如表62所示:捕获方式、所示:捕获方式、自动重装载方式和波特率发生器方式。自动重装载方式和波特率发生器方式。 捕获方式捕获方式 在一定条件下,自动将计数器在一定条件下,自动将计数器TH2和和TL2的数据读入捕获寄存器的数据读入捕获寄存器RCAP2H和和RCAP2L,亦即,亦即TH2和和TL2内容的捕获是通过捕获寄内容的捕获是通过捕获寄存器存器RCAP2H和和RCAP2

20、L来实现的。其工作原理可参见图来实现的。其工作原理可参见图67。当当CPRL2l时,选择捕获方式。时,选择捕获方式。6.3.2 6.3.2 定时器计数器定时器计数器T2T2的工作方式的工作方式捕获操作发生于下述两种情况下:捕获操作发生于下述两种情况下:(1)寄存器寄存器TH2和和TL2溢出时,打开重装载三态缓冲器,把溢出时,打开重装载三态缓冲器,把TH2和和TL2的内容自动读入到捕获寄存器的内容自动读入到捕获寄存器RCAP2H和和RCAP2L中。同时,中。同时,溢出标志溢出标志TF2置置1,申请中断。,申请中断。 当当 EXEN2l且且 T2EXP11端的信号有负跳变时,将发端的信号有负跳变时

21、,将发生捕获操作。同时标志生捕获操作。同时标志EXF2置置1,申请中断。,申请中断。若若T2的中断是被允许的,则无论发生的中断是被允许的,则无论发生TF2l还是还是EXF2l,CPU都会响应中断。响应中断后,应用软件清除中断申请。都会响应中断。响应中断后,应用软件清除中断申请。 自动重装载方式在一定条件下,自动地将捕获寄存器RCAP2H和RCAP2L的数据装入计数器TH2和TL2中。捕获寄存器RCAP2H和RCAP2L在这里起预置计数初值的功能。对8XC52,其工作原理可参见图68。当CPRL20时,选择自动重装载方式。若T2的中断是被允许的,则无论发生TF21还是EXF21,CPU都会响应中

22、断,此中断向量的地址为002BH。响应中断后,应用软件撤除中断申请。TF2 和EXF2都是直接可寻址位,可采用CLR TF2和CLR EXF2指令实现撤除中断申请的功能。 波特率发生器方式波特率发生器方式 当当 T2CON中中 RCLK十十TCLK 1,其溢出脉冲用做串,其溢出脉冲用做串行口的时钟。行口的时钟。T2的波特率发生器方式下的结构图示于图的波特率发生器方式下的结构图示于图69中。中。RCLK选择串行通信接收波特率发生器,选择串行通信接收波特率发生器,TCLK选择发送波特率发生器,发送和接收的波特率可以不同。选择发送波特率发生器,发送和接收的波特率可以不同。 T2的输入时钟可由内部时钟

23、决定,也可由外部脉的输入时钟可由内部时钟决定,也可由外部脉冲决定。冲决定。若若CT20,选用内部时钟,对机器周期计数,计数,选用内部时钟,对机器周期计数,计数脉冲的频率为脉冲的频率为112振荡器频率振荡器频率. 若若C/T21,选用外部脉冲,该脉冲由,选用外部脉冲,该脉冲由T2端输入,每当端输入,每当外部脉冲负跳变时,计数器值增外部脉冲负跳变时,计数器值增l。外部脉冲频率不超。外部脉冲频率不超过振荡器频率的过振荡器频率的l24。 由于脉冲溢出时,RCAP2H和RCAP2L的内容会自动装载到TH2和TL2中,故波特率的值还决定于RCAP2H和RCAP2L装载初值。 RCLKTCLK还用于选择T1

24、还是T2作串行通信的波特率发生器。由图69可看出,这两位的值用来控制两个电子开关的位置。值为0时,选用T1做波特率发生器;值为1时,选用T2做波特率发生器。 当T2用做波特率发生器时,TH2的溢出不使TF2置位,不产生中断。因此,当T2用做波特率发生器时,没有必要禁止中断。 当T2用做波特率发生器时,若EXEN2置1,则T2EX端的信号产生负跳变时,EXF2将置1,但不会发生重装载或捕获操作。这时,T2EX可以作为一个附加的外部中断源。 T3俗称看门狗watchdog),它的作用是强迫单片微机进入复位状态,使之从硬件或软件故障中解脱出来。在实际应用中,由于现场的各种干扰或者程序设计错误,可能使

25、单片微机的程序进入了“ 死循环” 或“ 非程序区”(如表格数据区) 之后,在一个设定的时间内,假如用户程序没有重装T3,监视电路将产生一个系统复位信号,强迫单片微机退出“ 死循环” 或“ 非程序区” ,重新进行“ 冷启动” 或“ 热启动” 。 在飞利浦80C552中,T3由一个11位的分频器和8位定时器T3组成,如图6一10所示。6.4 6.4 监视定时器监视定时器( (看门狗看门狗)T3)T3预分频器输入为晶振预分频器输入为晶振1/12的信号,晶振为的信号,晶振为12MHz时,输入为时,输入为1MHz,而,而8位定时器位定时器T3每隔时间每隔时间t加加1:t122048/fosc 当晶振为当

26、晶振为12MHz时,时,t为为2.048ms。若若8位定时器溢出,则产生一个尖脉冲,它将复位位定时器溢出,则产生一个尖脉冲,它将复位8C552,同时,同时在在RST引脚上也将产生引脚上也将产生1个正的复位尖脉冲。个正的复位尖脉冲。T3由外部引脚由外部引脚EW和和电源控制寄存器中的电源控制寄存器中的PCON4WLE和和PCONlPD控制。控制。 EW:看门狗定时器允许,低电平有效。:看门狗定时器允许,低电平有效。 EW0时,允许看门狗定时器,禁止掉电方式;时,允许看门狗定时器,禁止掉电方式; EW1时禁止看门狗定时器,允许掉电方式。时禁止看门狗定时器,允许掉电方式。 WLE :看门狗定时器允许重

27、装标志。 若WLE置位,定时器T3只能被软件装入,装入后WLE自动清除。T3的重装和溢出,产生复位的时间间隔,由装入T3的值决定,对于8C552,其监视间隔可编程为2.048ms2.048255ms。 T3的工作过程:在T3溢出时,复位8XC552,并产生复位脉冲输出至复位引脚RST。为防止系统复位,必须在定时器T3溢出前,通过软件对其进行重装。如果发生软件或硬件故障,将使软件对定时器T3重装失败,从而T3溢出导致复位信号的产生。首先要确定系统能在不正常状态下维持多久,这段时间就设定首先要确定系统能在不正常状态下维持多久,这段时间就设定为监视定时器的最大间隔时间。为监视定时器的最大间隔时间。

28、T3是加是加1计数器,计数器,T3中装入中装入0,则监视时间间隔最长,装,则监视时间间隔最长,装入值为入值为FFH时,监视时间间隔最短时,监视时间间隔最短例:例:watchdog使用的一段程序如下:使用的一段程序如下:T3 EQU 0FFH ;定时器;定时器T3的地址的地址 PCON EQU 87H ;电源控制寄存器;电源控制寄存器PCON的地址的地址WATCH_INTV EQU 156 ;看门狗的时间间隔;看门狗的时间间隔(2.048100ms) 插在用户程序中对看门狗需要重新装入的地方:插在用户程序中对看门狗需要重新装入的地方: LCALLWATCHDOG;调用看门狗服务子程序;调用看门狗

29、服务子程序WATCHDOG:ORL PCON,10H ;允许定时器;允许定时器T3重装重装 MOV T3,WATCHINTV ;装载定时器;装载定时器T3 RET 定时器初值的计算定时器初值的计算 定时时间定时时间=脉冲数脉冲数脉冲周期机器周期)脉冲周期机器周期)定时时间定时时间t=(2L-初值初值TC) 6.5 6.5 定时器定时器/ /计数器的应用编程计数器的应用编程 6.5.1 6.5.1 定时器的应用定时器的应用机器周期时间定时时间初值LOSCLftTC2122oscf12L与工作方式有与工作方式有关,关,13、16、8定时器溢出率为定时时间的倒数定时器溢出率为定时时间的倒数fosc=

30、12MHZ时,时,1机周机周=1S;fosc=6MHZ 时,时, 1机周机周=2S解:解:工作方式工作方式0 0: 213500213500S/2S/2S=8192-250=7942S=8192-250=7942 =1F06H =1F06H =1111100000110B =1111100000110B TL0=00110B=06H TL0=00110B=06H TH0=11111000B=F8H TH0=11111000B=F8H【例】【例】 已知晶振已知晶振6MHz6MHz,要求定时,要求定时0.5ms0.5ms,试分别求,试分别求出出T0T0工作于方式工作于方式0 0、方式、方式1 1、

31、方式、方式2 2时的定时初值。时的定时初值。 工作方式工作方式1 1: T0T0初值初值 =216-=216-500500s/2s/2s=65536250=65286=FF06Hs=65536250=65286=FF06H TH0=FFH TH0=FFH;TL0=06HTL0=06H。 工作方式工作方式2 2: T0T0初值初值 =28-500=28-500s/2s/2s=256-250=6s=256-250=6 TH0=06H TH0=06H;TL0=06HTL0=06H。 从上例中看到,方式从上例中看到,方式0 0计算定时初值比较麻烦,根据公计算定时初值比较麻烦,根据公式计算出数值后,还要

32、变换一下,容易出错,不如直接用方式计算出数值后,还要变换一下,容易出错,不如直接用方式式1 1,且方式,且方式0 0计数范围比方式计数范围比方式1 1小,方式小,方式0 0完全可以用方式完全可以用方式1 1代替,方式代替,方式0 0与方式与方式1 1相比,无任何优点。相比,无任何优点。解:分析解:分析 采用方式采用方式0定时时间定时时间 t1ms=1000S定时常数:定时常数:TC=213-1000/2=8192-500=7692 = 11110000 01100B用定时器用定时器T0:TMOD=00H,TH0=F0H,TL0=0CH【例】【例】 要求在要求在 P10引脚上产生周期为引脚上产生

33、周期为2 ms的方波输出的方波输出fosc=6MHz 查询方式查询方式ORG 0000HAJMP STORG 0030HST:MOV SP,#60HMOV TMOD,#00H;方式;方式0L1:MOV TH0,#0F0H;初值;初值MOV TL0,#0CHCPL P1.0SETB TR0L2:JBC TF0,L1SJMP L2END中断方式:中断方式:ORG0000HAJMPMAINORG000BH;T0中断矢量中断矢量AJMP INQPORG0030HMAIN: MOV TMOD,00H ;设;设T0为定时器方式为定时器方式0 MOV TH0,0F0H ;写定时常数;写定时常数(定时定时1m

34、s) MOV TL0,0CH SETB TR0 ;启动;启动 T0 SETB ET0 ;允许;允许T0中断中断 SETB EA ;开放;开放CPU中断中断 AJMP $ ;定时中断等待;定时中断等待ORG2000 H ;T0中断服务程序中断服务程序 INQP: MOV TH0,0F0H ;重写定时常数;重写定时常数 MOV TL0,0CHCPL P10 ;P10变反输出变反输出 RETI 采用方式采用方式1 1定时时间定时时间 t1ms=1000S定时常数:定时常数:TC=216-1000/2=65535-500=65035 = 11111110 00001011B=FE0BH用定时器用定时器

35、T0:TMOD=01H,TH0=FEH,TL0=0BH编程与前相同编程与前相同【例】欲用【例】欲用80C51产生两个方波,一个方波周期为产生两个方波,一个方波周期为200s,另,另一个方波周期为一个方波周期为400s,该,该80C51同时使用串行口,用定时器同时使用串行口,用定时器/计数器作为波特率发生器计数器作为波特率发生器,波特率为波特率为2400, fOCS9.216 MHz 。分析:这时分析:这时T0采用方式采用方式3工作,其中,工作,其中,TL0产生产生100s定时,由定时,由 P1.0输出方波输出方波1TH0产生产生200s定时,由定时,由Pl.1输出方波输出方波2 ;T1设置为方

36、式设置为方式2,作波特率发生器用。,作波特率发生器用。计算:计算:TL0初值:初值:HBftTCLOSC3101100112 .1798 .762561210216.91010025612206618TH0初值:初值:HTCH664 .1021210216.910200256066TH1、TL1初值为:初值为:F6H编程:编程:ORG 0000H AJMP MAINORG 000BH ;TL0的中断入口的中断入口AJMP ITL0ORG 00lBH;TH0的中断入口的中断入口AJMP ITH0ORG 0100HMAIN:MOV SP, 60H;设栈指针;设栈指针MOV TMOD, 23H ;设

37、;设T0为方式为方式3,TI为为2 MOV TL0,0B3H ;设;设TL0初值初值(100s定时定时) MOV TH0,66H ;设;设TH0初值初值(200s定时定时) MOV TL1,0F6H ;设;设TL1初值初值(波特率为波特率为2400) MOV TH1, 0F6H ;设;设 TH1初值初值 SETB TR0 ;启动;启动 TL0 SETB TR1 ;启动;启动TH0 SETB ET0 ;允许;允许TL0中断中断 SETB ET1 ;允许;允许TH0中断中断 SETB EA ;CPU中断开放中断开放 AJMP ORG 0200HITL0:MOV TL0, 0B3H ;重装定时常数;

38、重装定时常数 CPL P10 ;输出方波;输出方波1(200s) RETIITH0:MOV TH0,66H ;重装定时常数;重装定时常数CPL P11 ;输出方波;输出方波2(400s) RETI不用方式不用方式3 3,能,能否只用否只用T0T0产生产生两个时间?两个时间?【例】假如一个用户系统已使用了两个外部中断源,即【例】假如一个用户系统已使用了两个外部中断源,即INT0和和INT1,用户系统要求从,用户系统要求从P1.0引脚上输出一个引脚上输出一个5kHz的方波,并的方波,并要求采用定时器要求采用定时器/计数器作为串行口的波特率发生器,另外还需计数器作为串行口的波特率发生器,另外还需要再

39、增加一个外部中断源。要再增加一个外部中断源。6.5.2 6.5.2 计数器的应用计数器的应用分析分析:除两个外中断除两个外中断(INT0、INT1外,还需要两个定时器外,还需要两个定时器5KHZ和波特率发生器和一个计数器扩展外中断)和波特率发生器和一个计数器扩展外中断)把把T0设置为方式设置为方式3: TL0设置为计数器,设置为计数器, TH0只能做只能做8位定时器位定时器产生产生5KHz方波),方波),T1就作为波特率发生器,设为方式就作为波特率发生器,设为方式2。频率频率5kHz即周期为即周期为200s,则定时时间,则定时时间100s,若采用,若采用12MHz的的晶体振荡器,则机器周期为晶

40、体振荡器,则机器周期为1s。 计算时间常数:计算时间常数:TC28100/1156编程:编程:ORG 0000HSJMP MAINORG 000BHAJMP TL0INT;TL0中断入口中断入口 ORG 001BHAJMP TH0INT;TH0中断入口中断入口ORG 0030HMAIN: MOV TMOD,#27H ;T0为方式3,TL0为计数方式, TH0为 ;定时;T1作波特率发生器,方式2MOV TH0,#156 ;TH0定时常数MOV TL0, #0FFH ;TL0计数常数MOV TL1,#BAUD ;BAUD根据波特率算出MOV TH1,#BAUDMOV TCON,#55H ;TR0

41、和TR1为1,启动TL0和TH0MOV IE,#8AH SJMP $ORG0100HTL0INT:MOV TL0,#0FFH ;重置计数长度(中断处理)RETITH0INT:MOV TH0,#156;重置定时常数CPLP1.0;P1.0引脚输出方波RETI TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0GATE C/T M1 M0 GATE C/T M1 M0GATE C/T M1 M0 GATE C/T M1 M0 门控位门控位GATE可用作对可用作对INTx引脚上的高电平持续时间进行计量。引脚上的高电平持续时间进

42、行计量。通过反相器,则可测得相应通过反相器,则可测得相应INTx引脚上低电平的持续时间。两引脚上低电平的持续时间。两个时间的和即为个时间的和即为INTx引脚上输入波形的周期,其倒数即为引脚上输入波形的周期,其倒数即为INTx引脚上输入波形的频率。还可算出占空比等参数。引脚上输入波形的频率。还可算出占空比等参数。6.5.3 6.5.3 门控位门控位GATEGATE的应用的应用 【例】利用定时器计数器测定图示波形的一个周期长度。【例】利用定时器计数器测定图示波形的一个周期长度。分析:若分析:若GATE=1,则则T1为定时器时,当为定时器时,当TR1=1且且INT1为高为高电平时,才启动定时器。电平

43、时,才启动定时器。 INT1(P3.3)TR1 置置1T1开始计时开始计时TR1清零清零查询法查询法ORG 0000HSTART:MOV TMOD,#90HMOV TL1,#00H;置为最大定时值;置为最大定时值MOV TH1,#00HLP1:JBP3.3,LP1;P3.3为高电平,等待为高电平,等待 SETB TR1;当;当P3.3为低时为低时,置置TR1为为1LP2: JNBP3.3,LP2;当;当P3.3为低电平时,再等待为低电平时,再等待LP3:JBP3.3,LP3;当;当P3.3为高电平时,为高电平时,T1开开; 始定时计数始定时计数CLRTR1;当;当P3.3为低电平时,高电为低电

44、平时,高电;平脉宽定时计数结束;平脉宽定时计数结束SJMP $当当fosc12MHz时,最大被测脉宽为时,最大被测脉宽为65536s。此编程实际只测量了高电平的宽度,此编程实际只测量了高电平的宽度,若被测波形除了接至若被测波形除了接至P3.3,另外同时通,另外同时通过一个反相器接至过一个反相器接至P3.2 (INT0) ,则通,则通过编程同时可以测得波形的高电平宽过编程同时可以测得波形的高电平宽度和低电平宽度。度和低电平宽度。中断法:中断法:【分析】对于脉冲宽度大于【分析】对于脉冲宽度大于65.536ms的脉冲,可以采用对定时溢的脉冲,可以采用对定时溢出次数进行计数的方法。这样,脉宽为出次数进

45、行计数的方法。这样,脉宽为 (定时溢出时间定时溢出时间溢出次溢出次数数)定时时间。测定脉冲周期可用图示方法。定时时间。测定脉冲周期可用图示方法。 T1脚上对下降沿计数二次,即为外部脉冲的一个周期时间。现设脚上对下降沿计数二次,即为外部脉冲的一个周期时间。现设T1为计数器。计数值为为计数器。计数值为2。设设6MHz晶振晶振,T0为方式为方式1,定时溢出时间为,定时溢出时间为 100 ms当计数值为当计数值为1时,启动定时器;当计数值为时,启动定时器;当计数值为2时,中断计数器时,中断计数器T1,并停止定时器并停止定时器T0的定时。的定时。T1中断优先级设为高于定时器中断优先级设为高于定时器T0。

46、 计数初值为计数初值为 FFFEH:(:(TH1)FFH,(,(TL1)FEH。 编程编程: ORG0000HSJMP MAINORG 000BH ;定时器;定时器T0中断入口中断入口 AJMP TIME0 ORG 00IBH ;定时器;定时器 T1中断入口中断入口 AJMP TIME1 ORG 0030HMAIN:MOV R0,0;清除;清除T0定时中断次数计数器定时中断次数计数器MOV TMOD,59H;T0为定时器为定时器,方式方式1, GATE1 ;T1为计数器、方式为计数器、方式1 MOV TH0,3CH ;T0定时器初值定时器初值 MOV TL0,0B0H MOV TH1,0FFH

47、 ;T1计数器初值计数器初值 MOV TL1,0FEH SETB TR0;启动;启动T0定时器定时器 SETB TR1;启动;启动T1计数器计数器 MOV IP,08H ;T1中断优先级高于中断优先级高于T0SETB ET1 ;允许;允许T1中断中断 SETB ET0;允许;允许T0中断中断 SETB EA ;CPU开中断开中断SETB 20H ;设;设20H为为T1计数中断标志计数中断标志LOOP:SETB F0;设;设F0为为T0定时中断标志定时中断标志 JB F0,$;T0定时未溢出,等待定时未溢出,等待 JB 20H,LOOP ;判;判T1若未溢出则循环若未溢出则循环SJMP $ ORG 0100HTIME0:MOV TL0,0B0H;重置;重置T0定时器初值定时

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论