




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第6 6章章 定时器定时器/ /计数器计数器6.1 定时器定时器/计数器的计数与定时计数器的计数与定时6.2 定时器定时器/计数器的控制计数器的控制6.3 定时器定时器/计数器的编程计数器的编程6.4 定时器定时器/计数器的工作方式计数器的工作方式6.5 定时器定时器/计数器的综合应用举例计数器的综合应用举例第第6 6章章 定时器定时器/ /计数器计数器定时器定时器/ /计数器与计数器与CPUCPU并行工作,实现定时并行工作,实现定时/ /计数功能,计数功能,并以定时并以定时/ /计数的结果对单片机系统进行控制。本章主要计数的结果对单片机系统进行控制。本章主要介绍介绍MCS-51MCS-51
2、系列单片机定时器系列单片机定时器/ /计数器的控制方法、工作计数器的控制方法、工作方式、简单应用。方式、简单应用。6.1 6.1 定时器定时器/ /计数器的计数与定时计数器的计数与定时MCS-51MCS-51系列单片机定时器系列单片机定时器/ /计数器的功能是用以实现定计数器的功能是用以实现定时、计数,并以定时、计数的结果进行控制。时、计数,并以定时、计数的结果进行控制。80518051内部有两个内部有两个1616位可编程的定时器位可编程的定时器/ /计数器计数器T0T0和和T1T1。T0T0(T1T1)由两个)由两个8 8位寄存器位寄存器TH0TH0(TH1TH1)和)和TL0TL0(TL1
3、TL1)拼装)拼装而成。其中而成。其中TH0TH0(TH1TH1)为高)为高8 8位,位,TL1TL1(TH1TH1)为低)为低8 8位。位。T0T0和和T1T1有有定时和计数定时和计数两种工作模式。两种工作模式。图图6-16-1是是MCS-51MCS-51系列单片机定时器系列单片机定时器/ /计数器的内部结构图。计数器的内部结构图。6.1 6.1 定时器定时器/ /计数器的计数与定时计数器的计数与定时6.1.1 6.1.1 计数计数计数就是对来自单片机外部的事件进行计数,为了与请求中断的计数就是对来自单片机外部的事件进行计数,为了与请求中断的外部事件区分开,称此种外部事件为外部计数事件。外部
4、计数事件由外部事件区分开,称此种外部事件为外部计数事件。外部计数事件由脉冲引入,单片机的脉冲引入,单片机的P3.4P3.4(T0T0)和)和P3.5P3.5(T1T1)即为外部计数脉冲的输)即为外部计数脉冲的输入端。所谓计数,就是对有效计数脉冲的计数。入端。所谓计数,就是对有效计数脉冲的计数。注意:注意:5151系列单片机的两个定时器系列单片机的两个定时器/ /计数器采用加法计数结构。计数器采用加法计数结构。单片机在每个机器周期对单片机在每个机器周期对P3.4P3.4(T0T0)和)和P3.5P3.5(T1T1)进行采样,若)进行采样,若在一个机器周期采样到高电平,在下一个机器周期采样到低电平
5、,即在一个机器周期采样到高电平,在下一个机器周期采样到低电平,即得到一个有效的计数脉冲。计数寄存器在下一个机器周期自动加得到一个有效的计数脉冲。计数寄存器在下一个机器周期自动加1 1。6.1.2 6.1.2 定时定时MCS-51MCS-51系列单片机中的计数器除了可以作为计数之用外,系列单片机中的计数器除了可以作为计数之用外,还可以用作时钟完成定时功能。定时就是对来自单片机内还可以用作时钟完成定时功能。定时就是对来自单片机内部的计数脉冲进行计数。部的计数脉冲进行计数。注意:在定时模式下,注意:在定时模式下,5151系列单片机的计数源是晶振的系列单片机的计数源是晶振的1212分频产生的脉冲。分频
6、产生的脉冲。6.2.1 6.2.1 定时方式寄存器定时方式寄存器TMODTMOD定时方式寄存器定时方式寄存器TMODTMOD是单片机专门用来控制两个定时器是单片机专门用来控制两个定时器/ /计数器的工作方式的寄存器。这个寄存器的各位定义如计数器的工作方式的寄存器。这个寄存器的各位定义如下:下:6.2.1 6.2.1 定时方式寄存器定时方式寄存器TMODTMOD下面介绍与定时器下面介绍与定时器/ /计数器计数器T0T0相关的相关的TMODTMOD的低的低4 4位。位。GATEGATE门控位。由图门控位。由图6-26-2可以看出,可以看出,GATE=0GATE=0时,由时,由TR0TR0来启动定时
7、来启动定时/ /计数;计数;GATE=1GATE=1时,由时,由TR0TR0和(和(P3.2P3.2)共同启动定时)共同启动定时/ /计数,只有当二者同计数,只有当二者同时为时为1 1时才进行计数操作。时才进行计数操作。 定时定时/ /计数模式选择位。计数模式选择位。 =0=0时,处于定时模式,内部计数脉冲是对晶振进行时,处于定时模式,内部计数脉冲是对晶振进行1212分频分频产生的;产生的; =1=1时,处于计数模式,外部计数脉冲由时,处于计数模式,外部计数脉冲由T0T0(P3.4P3.4)引入。)引入。6.2.1 6.2.1 定时方式寄存器定时方式寄存器TMODTMODM1M1、M0M0工作
8、方式选择位。工作方式选择位。M1M1、M0M0与定时器与定时器/ /计数器计数器T0T0的四种工作方式有下面的对的四种工作方式有下面的对应关系:应关系:0000工作方式工作方式0 00101工作方式工作方式1 11010工作方式工作方式2 21111工作方式工作方式3 36.2.1 6.2.1 定时方式寄存器定时方式寄存器TMODTMODTMODTMOD对定时器对定时器/ /计数器计数器T1T1的控制与对的控制与对T0T0的控制类似,此的控制类似,此时,门控位时,门控位GATEGATE所控制的定时所控制的定时/ /计数启动由计数启动由TR1TR1和(和(P3.3P3.3)共同参与完成。共同参与
9、完成。TMODTMOD对定时器对定时器/ /计数器的控制由软件进行设定,大大提计数器的控制由软件进行设定,大大提高了控制的灵活性。高了控制的灵活性。6.2.2 6.2.2 定时控制寄存器定时控制寄存器TCONTCON定时控制寄存器定时控制寄存器TCONTCON既参与中断控制又参与定时控制。既参与中断控制又参与定时控制。此处只对与定时控制功能有关的控制位进行回顾。此处只对与定时控制功能有关的控制位进行回顾。6.2.2 6.2.2 定时控制寄存器定时控制寄存器TCONTCONTCONTCON的高四位进行定时的高四位进行定时/ /计数控制计数控制TF0TF0(TCON.5TCON.5)定时器定时器/
10、 /计数器计数器T0T0的溢出中断标志位,当的溢出中断标志位,当T0T0定定时(或计数)结束时,由硬件自动置时(或计数)结束时,由硬件自动置1 1。TF1TF1(TCON.7TCON.7)定时器定时器/ /计数器计数器T1T1的溢出中断标志位,当的溢出中断标志位,当T1T1定定时(或计数)结束时,由硬件自动置时(或计数)结束时,由硬件自动置1 1。TR0TR0(TCON.4TCON.4)定时器定时器/ /计数器计数器T0T0的启动停止控制位,由软件的启动停止控制位,由软件设定。设定。TR0=0TR0=0,停止,停止T0T0定时(或计数);定时(或计数);TR0=1TR0=1,启动,启动T0T0
11、定时(或计定时(或计数)。数)。TR1TR1(TCON.6TCON.6)定时器定时器/ /计数器计数器T1T1的启动停止控制位,由软件的启动停止控制位,由软件进行设定。进行设定。TR1=0TR1=0,停止,停止T1T1定时(或计数);定时(或计数);TR1=1TR1=1,启动,启动T1T1定时(或定时(或计数)。计数)。6.2.3 6.2.3 定时器定时器/ /计数器工作原理计数器工作原理定时器定时器/ /计数器工作原理如图计数器工作原理如图6-26-2所示。所示。6.2.3 6.2.3 定时器定时器/ /计数器工作原理计数器工作原理当当 =0=0时,为定时工作模式,计数脉冲是晶振的时,为定时
12、工作模式,计数脉冲是晶振的1212分频。分频。当当 =1=1时,为计数工作模式,外部计数脉冲由时,为计数工作模式,外部计数脉冲由TiTi(P3.P3.(i+4i+4)引入。)引入。6.2.3 6.2.3 定时器定时器/ /计数器工作原理计数器工作原理当当GATE=0GATE=0时,或门输出为高电平,与引脚(时,或门输出为高电平,与引脚(P3.P3.(2+i2+i)无关。此时与门的输出仅由无关。此时与门的输出仅由TRiTRi决定。决定。TRi=1TRi=1,与门输出高,与门输出高电平,接通模拟控制开关,引入计数脉冲,进行定时电平,接通模拟控制开关,引入计数脉冲,进行定时/ /计计数操作。数操作。
13、TRi=0TRi=0,与门输出低电平,断开模拟控制开关,与门输出低电平,断开模拟控制开关,定时定时/ /计数停止。计数停止。6.2.3 6.2.3 定时器定时器/ /计数器工作原理计数器工作原理当当GATE=1GATE=1时,或门的输出由引脚时,或门的输出由引脚 (P3.P3.(2+i2+i)决定,因此与门的输出由)决定,因此与门的输出由TRiTRi和引脚和引脚(P3.P3.(2+i2+i)共同决定。若)共同决定。若TRi=1TRi=1,而,而 (P3.P3.(2+i2+i)为高电平,则与门输出高电平,接通模拟控制开关,进行为高电平,则与门输出高电平,接通模拟控制开关,进行定时定时/ /计数;
14、若计数;若TRi=1TRi=1,而(,而(P3.P3.(2+i2+i)为低电平,则定)为低电平,则定时时/ /计数停止。计数停止。6.2.3 6.2.3 定时器定时器/ /计数器工作原理计数器工作原理当模拟控制开关接通时,计数寄存器在计数脉冲的作用当模拟控制开关接通时,计数寄存器在计数脉冲的作用下进行增下进行增1 1计数,当计数溢出时向计数溢出标志位计数,当计数溢出时向计数溢出标志位TFiTFi进位。进位。6.3.1 6.3.1 中断方式中断方式定时器定时器/ /计数器在中断方式下的编程步骤如下:计数器在中断方式下的编程步骤如下:(1 1)开中断)开中断(2 2)设置中断优先级)设置中断优先级
15、 (3 3)TMODTMOD初始化初始化(4 4)设置定时)设置定时/ /计数初值计数初值(5 5)启动定时)启动定时/ /计数计数(6 6)编写定时)编写定时/ /计数中断处理程序计数中断处理程序6.3.2 6.3.2 查询方式查询方式定时器定时器/ /计数器在查询方式下的编程步骤如下:计数器在查询方式下的编程步骤如下:(1 1)关中断)关中断(2 2)TMODTMOD初始化初始化(3 3)设置定时)设置定时/ /计数初值计数初值(4 4)启动定时)启动定时/ /计数计数(5 5)查询)查询TFiTFi及相关处理及相关处理6.4 6.4 定时器定时器/ /计数器的工作方式计数器的工作方式定时
16、器定时器/ /计数器计数器T0T0和和T1T1在方式在方式0 0下的工作情况完全相同。此时下的工作情况完全相同。此时的计数寄存器为的计数寄存器为1313位,构成如下:位,构成如下:方式方式0 0下的计数溢出值为下的计数溢出值为81928192(213213)。则:)。则:计数次数计数次数=8192-=8192-计数初值计数初值 (公式(公式6-16-1)定时时间定时时间= =(8192-8192-计数初值)计数初值)机器周期机器周期(公式(公式6-26-2)6.4.1 6.4.1 工作方式工作方式0 0方式方式0 0没有充分利用没有充分利用1616位计数寄存器的计数范围,这是位计数寄存器的计数
17、范围,这是为了与为了与MCS-48MCS-48系列单片机兼容。系列单片机兼容。1313位的计数寄存器的初始位的计数寄存器的初始化有些烦琐,步骤如下:化有些烦琐,步骤如下:(1 1)由公式)由公式6-16-1和和6-26-2计算出十进制的计数初值。计算出十进制的计数初值。(2 2)若计数初值小于)若计数初值小于3232(2525),将其送入),将其送入TLiTLi,将,将0 0送送入入THiTHi,完成计数寄存器初始化。,完成计数寄存器初始化。(3 3)若计数初值不小于)若计数初值不小于3232,先将其转化为二进制形式。,先将其转化为二进制形式。补足补足1313位后,将低位后,将低5 5位送入位
18、送入TLiTLi,将高,将高8 8位送入位送入THiTHi,完成计,完成计数寄存器初始化。数寄存器初始化。6.4.1 6.4.1 工作方式工作方式0 0【例例6-16-1】 设设fOSC=6MHzfOSC=6MHz,定时器,定时器/ /计数器计数器T0T0以工作方式以工作方式0 0定时定时2ms2ms,编写初始化程序。,编写初始化程序。说明:说明:fOSCfOSC即为晶振频率。即为晶振频率。首先计算计数初值。首先计算计数初值。 根据公式根据公式6-26-2有:有:定时时间定时时间= =(8192-8192-计数初值)计数初值)12fOSC12fOSC计数初值计数初值=8192-=8192-定时
19、时间定时时间fOSC/12fOSC/12 =8192-2000 =8192-20006MHz/126MHz/12 =7192 =7192 =0E018H=11100000 11000B =0E018H=11100000 11000B6.4.1 6.4.1 工作方式工作方式0 0设置设置TMODTMOD。对。对T0T0的工作方式进行选择,因此设置的工作方式进行选择,因此设置TMODTMOD的的低低4 4位。位。定时,定时, 为为0 0;方式方式0 0,M1M0M1M0的组合为的组合为0000;与外部脉冲无关,与外部脉冲无关,GATEGATE为为0 0。初始化程序如下:初始化程序如下: MOV T
20、MOD MOV TMOD,#00H#00H ;设置;设置TMODTMOD MOV TH0 MOV TH0,#0E0H#0E0H ;设置计数初值;设置计数初值 MOV TL0MOV TL0,#18H#18H SETB TR0 SETB TR0 ;启动定时;启动定时6.4.1 6.4.1 工作方式工作方式0 0【例例6-26-2】设设fosc=6MHzfosc=6MHz,定时器,定时器/ /计数器计数器1 1以工作方式以工作方式0 0实现在实现在P2P2口口8 8个引脚产生频率为个引脚产生频率为250Hz250Hz的等宽方波。的等宽方波。光 盘 提 供光 盘 提 供 P r o t e u sP
21、r o t e u s 仿 真 文 件仿 真 文 件 , , 运 行 仿 真 文 件 夹运 行 仿 真 文 件 夹 第第 6 6 章章LT6_2LT6_2.DSN LT6_2LT6_2.DSN ,观察运行结果,并进一步分析源程序。,观察运行结果,并进一步分析源程序。图图6-3 P2.X6-3 P2.X引脚输出的方波(仿真截图)引脚输出的方波(仿真截图)6.4.1 6.4.1 工作方式工作方式0 0(1 1)首先计算定时时间。)首先计算定时时间。方波频率为方波频率为250Hz250Hz,则周期为,则周期为4ms4ms。即。即P2P2口口8 8个引脚每个引脚每2ms2ms取反一次,定时时间为取反一
22、次,定时时间为2ms2ms。(2 2)计算计数初值。)计算计数初值。如例如例6-16-1所述,计数初值为所述,计数初值为=0E018H=11100000 11000B=0E018H=11100000 11000B(3 3)设置)设置TMODTMOD。对。对T1T1的工作方式进行选择,因此设置的工作方式进行选择,因此设置TMODTMOD的高的高4 4位。位。6.4.1 6.4.1 工作方式工作方式0 0定时,定时, 为为0 0;方式方式0 0,M1M0M1M0的组合为的组合为0000;与外部脉冲无关,与外部脉冲无关,GATEGATE为为0 0。(4 4)编制程序(中断方式)如下:)编制程序(中断
23、方式)如下: ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ORG 001BH ORG 001BH AJMP SFT1 AJMP SFT1 ORG 0050H ORG 0050HMAIN: MOV A,#00HMAIN: MOV A,#00H6.4.1 6.4.1 工作方式工作方式0 0 SETB EA SETB EA ; ;开中断开中断 SETB ET1SETB ET1 MOV IP,#0 MOV IP,#0 ; ;设置中断优先级设置中断优先级 MOV TMOD,#00H MOV TMOD,#00H ; ;设置设置TMODTMOD,T1T1工作工作 ; ;方式
24、方式0 0,计时,计时 MOV TH1,#0E0H MOV TH1,#0E0H ; ;设置计数初值设置计数初值 MOV TL1,#18HMOV TL1,#18H SETB TR1 ; SETB TR1 ;启动定时启动定时6.4.1 6.4.1 工作方式工作方式0 0 SJMP $ SJMP $ ORG 0100H ORG 0100HSFT1: MOV TH1,#0E0H ;SFT1: MOV TH1,#0E0H ;重新设置计数初值重新设置计数初值 MOV TL1,#18HMOV TL1,#18H CPL A CPL A MOV P2,A MOV P2,A RETI RETI END END注意
25、:由于一次计数溢出时计数寄存器的内容为注意:由于一次计数溢出时计数寄存器的内容为0 0,在,在下次计数前需要重新为计数寄存器赋初值。下次计数前需要重新为计数寄存器赋初值。6.4.2 6.4.2 工作方式工作方式1 1定时器定时器/ /计数器计数器T0T0和和T1T1在方式在方式0 0下的工作情况完全相同。下的工作情况完全相同。此时的计数寄存器为此时的计数寄存器为1616位,构成如下:位,构成如下: 方式方式1 1下的计数溢出值为下的计数溢出值为6553665536(216216)。则:)。则:计数次数计数次数=65536-=65536-计数初值计数初值 (公式(公式6-36-3)定时时间定时时
26、间= =(65536-65536-计数初值)计数初值)机器周期(公式机器周期(公式6-46-4)6.4.2 6.4.2 工作方式工作方式1 1方式方式1 1利用了全部利用了全部1616位计数寄存器的计数范围,计数寄位计数寄存器的计数范围,计数寄存器的初始化步骤如下:存器的初始化步骤如下:(1 1)由公式)由公式6-36-3和和6-46-4计算出十进制的计数初值。计算出十进制的计数初值。(2 2)若计数初值小于)若计数初值小于256256(2828),将其送入),将其送入TLiTLi,将,将0 0送送入入THiTHi,完成计数寄存器初始化。,完成计数寄存器初始化。(3 3)若计数初值不小于)若计
27、数初值不小于256256,将其转化为十六进制形式,将其转化为十六进制形式,再将高低字节分别送入再将高低字节分别送入THiTHi和和TLiTLi,完成计数寄存器初始化。,完成计数寄存器初始化。6.4.2 6.4.2 工作方式工作方式1 1【例例6-36-3】设设fosc=12MHzfosc=12MHz,定时器,定时器/ /计数器计数器0 0以工作方式以工作方式1 1实现在实现在P2P2口口8 8个引脚产生频率为个引脚产生频率为250Hz250Hz的等宽方波。的等宽方波。光 盘 提 供光 盘 提 供 P r o t e u sP r o t e u s 仿 真 文 件仿 真 文 件 , , 运 行
28、 仿 真 文 件 夹运 行 仿 真 文 件 夹 第第 6 6 章章LT6_3LT6_3.DSN LT6_3LT6_3.DSN ,观察运行结果,并进一步分析源程序。,观察运行结果,并进一步分析源程序。图图6-4 P2.X6-4 P2.X引脚输出的方波(仿真截图)引脚输出的方波(仿真截图)6.4.2 6.4.2 工作方式工作方式1 1(1 1)首先计算定时时间。)首先计算定时时间。方波频率为方波频率为250Hz250Hz,则周期为,则周期为4ms4ms。即即P2P2口口8 8个引脚每个引脚每2ms2ms取反一次,定时时间为取反一次,定时时间为2ms2ms。计算计数初值。根据公式计算计数初值。根据公
29、式6-46-4有:有:定时时间定时时间 = =(65536-65536-计数初值)计数初值)12fOSC12fOSC计数初值计数初值 = 65536-= 65536-定时时间定时时间fOSC/12fOSC/12 = 65536-2000 = 65536-200012MHz/1212MHz/12 = 63536=0F8 30H = 63536=0F8 30H6.4.2 6.4.2 工作方式工作方式1 1(2 2)设置)设置TMODTMOD。对。对T0T0的工作方式进行选择,因此设置的工作方式进行选择,因此设置TMODTMOD的低的低4 4位。位。定时,定时, 为为0 0;方式方式1 1,M1M0
30、M1M0的组合为的组合为0101;与外部脉冲无关,与外部脉冲无关,GATEGATE为为0 0。(3 3)编制程序(查询方式)如下:)编制程序(查询方式)如下:ORGORG0000H0000HAJMPAJMPMAINMAIN6.4.2 6.4.2 工作方式工作方式1 1 ORG ORG 0050H0050HMAIN: MOV MAIN: MOV A,#00HA,#00H CLR CLR EA EA ; ;关中断关中断 MOV MOV TMOD,#01H ;TMOD,#01H ;设置设置TMODTMOD,T0T0工作方工作方 ; ;式式1 1,计时,计时 MOV MOV TH0,#0F8H ;TH
31、0,#0F8H ;设置计数初值设置计数初值 MOV MOV TL0,#30HTL0,#30H SETB SETB TR0 ;TR0 ;启动定时启动定时6.4.2 6.4.2 工作方式工作方式1 1WAIT: JNB WAIT: JNB TF0,WAITTF0,WAIT CLR CLR TF0 TF0 ; ;注意:将注意:将TF0TF0软件清软件清0 0 MOV MOV TH0,#0F8HTH0,#0F8H MOV MOV TL0,#30HTL0,#30H CPL CPL A A MOV MOV P2,AP2,A SJMP WAIT SJMP WAIT END END6.4.2 6.4.2 工作
32、方式工作方式1 1【例例6-46-4】 设设fOSC=6MHzfOSC=6MHz,编程实现以定时器,编程实现以定时器/ /计数器计数器T0T0方式方式1 1定时控制在定时控制在P2P2口口8 8个引脚产生周期为个引脚产生周期为2s2s的方波。的方波。光 盘 提 供光 盘 提 供 P r o t e u sP r o t e u s 仿 真 文 件仿 真 文 件 , , 运 行 仿 真 文 件 夹运 行 仿 真 文 件 夹 第第 6 6 章章LT6_4LT6_4.DSN LT6_4LT6_4.DSN ,观察运行结果,并进一步分析源程序。,观察运行结果,并进一步分析源程序。图图6-5 P2.X6-
33、5 P2.X引脚输出的方波(仿真截图)引脚输出的方波(仿真截图)6.4.2 6.4.2 工作方式工作方式1 1(1 1)首先计算定时时间。方波周期为)首先计算定时时间。方波周期为2s2s。即即P2P2口口8 8个引脚每个引脚每1s1s取反一次,定时时间为取反一次,定时时间为1s1s。(2 2)计算计数初值。)计算计数初值。 根据公式根据公式6-46-4有:有:定时时间定时时间= =(65536-65536-计数初值)计数初值)12fOSC12fOSC计数初值计数初值=65536-=65536-定时时间定时时间fosc/12fosc/12 =6 =66MHz/126MHz/12 =65536-5
34、000000 =65536-50000006.4.2 6.4.2 工作方式工作方式1 1这里,计数初值大于计数溢出值,说明定时不能一次完这里,计数初值大于计数溢出值,说明定时不能一次完成。考虑到成。考虑到500000=50000500000=500001010,设一次计数次数为,设一次计数次数为5000050000,则则计数初值计数初值=65536-50000=15536=3C B0H=65536-50000=15536=3C B0H这样的定时需要这样的定时需要1010次才能完成题目要求,每次定时次才能完成题目要求,每次定时0.10.1秒。秒。6.4.2 6.4.2 工作方式工作方式1 1(3
35、 3)设置)设置TMODTMOD。对。对T0T0的工作方式进行选择,因此设置的工作方式进行选择,因此设置TMODTMOD的低的低4 4位。位。定时,定时, 为为0 0;方式方式0 0,M1M0M1M0的组合为的组合为0101;与外部脉冲无关,与外部脉冲无关,GATEGATE为为0 0。6.4.2 6.4.2 工作方式工作方式1 1(4 4)编制程序(中断方式)如下:)编制程序(中断方式)如下: ORGORG 0000H0000H AJMP AJMP MAINMAIN ORG ORG 000BH000BH AJMP AJMP SFT0SFT06.4.2 6.4.2 工作方式工作方式1 1 ORG
36、 0050H ORG 0050HMAIN: MOV A,#00HMAIN: MOV A,#00H SETB EA ; SETB EA ;开中断开中断 SETB ET0SETB ET0 MOV IP,#0 ; MOV IP,#0 ;设置中断优先级设置中断优先级 MOV TMOD,#01H ;MOV TMOD,#01H ;设置设置TMODTMOD,T0T0工作工作 ; ;方式方式1 1,计时,计时 MOV TH0,#3CH ;MOV TH0,#3CH ;设置计数初值设置计数初值 MOV TL0,#0B0HMOV TL0,#0B0H MOV R7,#10 ; MOV R7,#10 ;设置定时次数设置
37、定时次数 SETB TR0 ;SETB TR0 ;启动定时启动定时6.4.2 6.4.2 工作方式工作方式1 1 SJMP SJMP$ $ ORG ORG 0100H0100HSFT0: MOV SFT0: MOV TH0,#3CH ;TH0,#3CH ;注意:重新设置计数注意:重新设置计数 ; ;初值初值 MOV MOV TL0,#0B0HTL0,#0B0H DJNZ DJNZ R7,WAIT ;R7,WAIT ;定时不够定时不够1s1s则等待则等待 MOV MOV R7,#10R7,#10 CPL A CPL A MOV MOV P2,AP2,AWAIT: RETIWAIT: RETI E
38、ND END6.4.2 6.4.2 工作方式工作方式1 1【例例6-56-5】设设fOSC=12MHzfOSC=12MHz,编程测试,编程测试 引入的外部引入的外部脉冲信号的高电平宽度(机器周期数)。参看仿真文件:脉冲信号的高电平宽度(机器周期数)。参看仿真文件:测脉宽测脉宽.DSN.DSN分析:分析:外部脉冲来自外部脉冲来自 ,应由,应由T0T0的外部控制电路进行定的外部控制电路进行定时。时。测试测试 的高电平宽度,即高电平时进行定时,低电平时的高电平宽度,即高电平时进行定时,低电平时停止定时,应设置停止定时,应设置T0T0的门控位的门控位GATEGATE为为1 1。6.4.2 6.4.2
39、工作方式工作方式1 1T0T0用来累加高电平的宽度,计数初值为用来累加高电平的宽度,计数初值为0 0,应选择计数,应选择计数范围大的工作方式,令其方式范围大的工作方式,令其方式1 1定时;定时;编制程序(查询方式)如下编制程序(查询方式)如下 ORG ORG0000H0000H AJMP AJMPMAINMAIN ORG ORG0050H0050HMAIN: CLR EX0MAIN: CLR EX0 CLR CLRET0ET0 MOV MOVTMOD,#9 ;T0TMOD,#9 ;T0方式方式1 1,GateGate1 1 MOV MOVTH0,#0 ;TH0,#0 ;计数器清计数器清0 0
40、MOV MOVTL0,#0TL0,#06.4.2 6.4.2 工作方式工作方式1 1 CLR CLRET0ET0 MOV MOVTMOD,#9TMOD,#9 ;T0 ;T0方式方式1 1,GateGate1 1 MOV MOVTH0,#0 ;TH0,#0 ;计数器清计数器清0 0 MOV MOVTL0,#0TL0,#0W1: JB P3.2,W1 ;W1: JB P3.2,W1 ;让过高电平让过高电平 SETB TR0SETB TR0 ; ;启动定时计数启动定时计数6.4.2 6.4.2 工作方式工作方式1 1W2: W2: JNB P3.2,W2 ; JNB P3.2,W2 ;等候上升沿,自
41、动启动计数等候上升沿,自动启动计数W3:JB P3.2,W3 ;W3:JB P3.2,W3 ;定时计数定时计数 CLR TR0 ;CLR TR0 ;停止定时计数停止定时计数 MOV 30H,TL0 ;MOV 30H,TL0 ;将脉冲宽度存入在将脉冲宽度存入在31H31H、 ;30H;30H寄存器中寄存器中 MOV 31H,TH0MOV 31H,TH06.4.3 6.4.3 工作方式工作方式2 2由于每次定时由于每次定时/ /计数之后计数寄存器的内容为计数之后计数寄存器的内容为0 0,在下一,在下一次定时次定时/ /计数后都要进行初值重载。在方式计数后都要进行初值重载。在方式0 0和方式和方式1
42、 1中,中,初值重载是由软件实现的。如果需要多次进行定时初值重载是由软件实现的。如果需要多次进行定时/ /计数,计数,则需占用较多则需占用较多CPUCPU时间。时间。定时器定时器/ /计数器在方式计数器在方式2 2下可由硬件实现初值重载。下可由硬件实现初值重载。T0T0和和T1T1在方式在方式2 2下为下为8 8位定时器位定时器/ /计数器,二者的工作情计数器,二者的工作情况相同。由况相同。由TLiTLi充当计数寄存器,由充当计数寄存器,由THiTHi充当初值重载寄存充当初值重载寄存器,如图器,如图6-36-3所示。所示。6.4.3 6.4.3 工作方式工作方式2 2图6-6 定时器/计数器方
43、式2下的初值重载6.4.3 6.4.3 工作方式工作方式2 2在方式在方式2 2下,当低下,当低8 8位计数器产生计数溢出时,一方面会位计数器产生计数溢出时,一方面会把溢出信号写入把溢出信号写入TFiTFi,一方面会启动,一方面会启动THiTHi自动为自动为TLiTLi赋初值。赋初值。方式方式2 2下的计数溢出值为下的计数溢出值为256256(2828)。则:)。则:计数次数计数次数=256-=256-计数初值计数初值 (公式(公式6-56-5)定时时间定时时间= =(256-256-计数初值)计数初值)机器周期机器周期 (公式(公式6-66-6)6.4.3 6.4.3 工作方式工作方式2 2
44、方式方式2 2只利用了低只利用了低8 8位计数寄存器,因此计数初值一定小位计数寄存器,因此计数初值一定小于于256256,计数器的初始化步骤如下:,计数器的初始化步骤如下:(1 1)由公式)由公式6-56-5和和6-66-6计算出十进制的计数初值。计算出十进制的计数初值。(2 2)将计数初值送入)将计数初值送入TLiTLi,也将其送入,也将其送入THiTHi,完成计数,完成计数寄存器初始化。寄存器初始化。工作方式工作方式2 2通常用于波特率发生器(我们将在串行接口通常用于波特率发生器(我们将在串行接口中讲解)。中讲解)。注意:方式注意:方式2 2下计数初值既要送入下计数初值既要送入TLiTLi
45、,也要送入,也要送入THiTHi。6.4.3 6.4.3 工作方式工作方式2 2【例例6-66-6】 设设fOSC=12MHzfOSC=12MHz,T0T0方式方式2 2计数,计数,T1T1方式方式2 2定时,定时,编程实现在编程实现在P1.0P1.0脚输出频率为脚输出频率为10kHz10kHz的方波,将的方波,将P1.0P1.0上的上的信号进行信号进行1212分频为在分频为在P1.5P1.5脚输出。脚输出。P1.0P1.0输出的脉冲作为输出的脉冲作为T0T0的计数脉冲。的计数脉冲。光盘提供光盘提供ProteusProteus仿真文件仿真文件, ,运行仿真文件夹运行仿真文件夹 第第6 6章章L
46、T6_6LT6_6.DSN LT6_6LT6_6.DSN ,观察运行结果。,观察运行结果。6.4.3 6.4.3 工作方式工作方式2 2图图6-7 P1.06-7 P1.0和和P1.5P1.5引脚输出的方波(仿真截图)引脚输出的方波(仿真截图)6.4.3 6.4.3 工作方式工作方式2 2(1 1)首先计算定时时间。)首先计算定时时间。P1.0P1.0脚上输出的方波频率脚上输出的方波频率为为10kHz10kHz,则周期为,则周期为0.1ms0.1ms。即即P1.0P1.0引脚每引脚每50s50s取反一次,定时时间为取反一次,定时时间为50s50s。(2 2)计算计数初值。)计算计数初值。根据公
47、式根据公式6-66-6有:有:T1T1的定时时间的定时时间 = =(256-T1256-T1计数初值)计数初值)12fOSC12fOSCT1T1的计数初值的计数初值 = 256-T1= 256-T1定时时间定时时间fosc/12fosc/12= 256-50= 256-5012MHz/12= 20612MHz/12= 2066.4.3 6.4.3 工作方式工作方式2 2P1.5P1.5脚的方波为对脚的方波为对P1.0P1.0脚方波的脚方波的1212分频,即分频,即P1.5P1.5脚的方脚的方波周期为波周期为P1.0P1.0脚方波周期的脚方波周期的1212倍,即倍,即P1.0P1.0脚每输出脚每
48、输出6 6个脉个脉冲,冲,P1.5P1.5脚取反一次。脚取反一次。根据公式根据公式6-56-5有:有:T0T0的计数初值的计数初值 = 256-T0= 256-T0的计数次数的计数次数 =256-6=256-6 =250 =2506.4.3 6.4.3 工作方式工作方式2 2(3 3)设置)设置TMODTMOD。T0T0方式方式2 2计数,与外部脉冲无关,计数,与外部脉冲无关,TMODTMOD的低的低4 4位为位为01100110;T1T1方式方式2 2定时,与外部脉冲无关,定时,与外部脉冲无关,TMODTMOD的的高高4 4位为位为00100010。(4 4)编制程序(中断方式)如下:)编制
49、程序(中断方式)如下:ORGORG 0000H 0000HAJMP MAINAJMP MAINORG 000BH ;T0ORG 000BH ;T0的中断服务程序的中断服务程序 CPLCPL P1.5 P1.5 RETI RETI6.4.3 6.4.3 工作方式工作方式2 2 ORG 001BH ;T1 ORG 001BH ;T1的中断服务程序的中断服务程序 CPL P1.0CPL P1.0 RETI RETI ORG 0050H ORG 0050HMAIN: SETB EA ;MAIN: SETB EA ;开中断开中断 SETB ET0SETB ET0 SETB ET1 SETB ET16.4
50、.3 6.4.3 工作方式工作方式2 2MOV IP,#4 ;MOV IP,#4 ;设置中断优先级设置中断优先级MOV TMOD,#26H ;MOV TMOD,#26H ;设置设置TMODTMOD,T0T0方方 ; ;式式2 2计数,计数,T1T1方式方式2 2定时定时MOV TL0,#250 ;MOV TL0,#250 ;设置计数初值设置计数初值MOV TH0,#250MOV TH0,#250MOV TL1,#206MOV TL1,#206MOV TH1,#206MOV TH1,#2066.4.3 6.4.3 工作方式工作方式2 2 SETB SETBTR0TR0; ;启动计数启动计数 SE
51、TBSETBTR1TR1; ;启动定时启动定时HERE: SJMP HEREHERE: SJMP HERE END END6.4.3 6.4.3 工作方式工作方式2 2本题中本题中T1T1控制输出的脉冲是控制输出的脉冲是T0T0的计数脉冲,是引起的计数脉冲,是引起T0T0中断的原因。如果两者同时产生计数溢出,则应先响应中断的原因。如果两者同时产生计数溢出,则应先响应T1T1的中断请求,即的中断请求,即T1T1的优先级高于的优先级高于T0T0的优先级。的优先级。定时器定时器/ /计数器工作在方式计数器工作在方式2 2下,在计数溢出时具有初下,在计数溢出时具有初值自动加载功能,无需在中断服务程序中
52、重载计数初值。值自动加载功能,无需在中断服务程序中重载计数初值。中断服务程序的长度不超过中断服务程序的长度不超过8 8个字节时,直接在中断个字节时,直接在中断程序入口处编写中断服务程序即可,无需另外开辟中断程程序入口处编写中断服务程序即可,无需另外开辟中断程序服务区。序服务区。6.4.4 6.4.4 工作方式工作方式3 3定时器定时器/ /计数器计数器T0T0在方式在方式3 3下是双下是双8 8位计数器结构,定时位计数器结构,定时器器/ /计数器计数器T1T1在方式在方式3 3下停止计数。图下停止计数。图6-46-4是定时器是定时器/ /计数器计数器T0T0在方式在方式3 3下的逻辑电路图。下
53、的逻辑电路图。6.4.4 6.4.4 工作方式工作方式3 3图图6-8 T06-8 T0在方式在方式3 3下的逻辑电路图下的逻辑电路图6.4.4 6.4.4 工作方式工作方式3 3T0T0的低的低8 8位(位(TL0TL0)在方式)在方式3 3下占用下占用T0T0的控制位和引脚信的控制位和引脚信号,成为一个号,成为一个8 8位的定时位的定时/ /计数器。其功能和操作与方式计数器。其功能和操作与方式0 0和方式和方式1 1完全相同。完全相同。6.4.4 6.4.4 工作方式工作方式3 3T0T0的高的高8 8位(位(TH0TH0)在方式)在方式3 3下借用下借用T1T1的的TR1TR1和和TF1
54、TF1,成为,成为一个一个8 8位的定时器。这样,在方式位的定时器。这样,在方式3 3下,定时器下,定时器/ /计数器计数器T0T0就构成了两个就构成了两个8 8位的定时器和一个位的定时器和一个8 8位的计数器。位的计数器。6.4.4 6.4.4 工作方式工作方式3 3如果定时器如果定时器/ /计数器计数器T0T0工作在方式工作在方式3 3下,那么定时器下,那么定时器/ /计计数器数器T1T1只能工作于方式只能工作于方式0 0、1 1、2 2下。由于没有下。由于没有TR1TR1可用,只可用,只要为要为T1T1的计数寄存器装入初值,再设置好工作方式,的计数寄存器装入初值,再设置好工作方式,T1T
55、1就就可以自动运行了。通常,只有当可以自动运行了。通常,只有当T1T1用作波特率发生器时,用作波特率发生器时, T0T0才会工作于方式才会工作于方式3 3下。由于没有下。由于没有TF1TF1可用,可用,T1T1只能把计数只能把计数溢出直接送给串行口。将溢出直接送给串行口。将T1T1的方式控制设置为方式的方式控制设置为方式3 3,T1T1就会停止计数。就会停止计数。6.5 6.5 定时器定时器/ /计数器的综合应用举例计数器的综合应用举例时间是控制系统中的一个重要参数。这一节有时间是控制系统中的一个重要参数。这一节有4 4个例题,个例题,都是很有用的题目。由于篇幅的原因,其内容转移到光盘,都是很
56、有用的题目。由于篇幅的原因,其内容转移到光盘,需要选用此例题可以查看光盘文件:定时器综合应用举需要选用此例题可以查看光盘文件:定时器综合应用举例例.DOC.DOC。这里只留下例题的内容说明。这里只留下例题的内容说明。6.5 6.5 定时器定时器/ /计数器的综合应用举例计数器的综合应用举例【例例6-76-7】编写一段程序,让编写一段程序,让P2P2口输出占空比为口输出占空比为70%70%,频,频率为率为100Hz100Hz的矩形波,单片机晶振为的矩形波,单片机晶振为6MHz6MHz。光盘提供光盘提供ProteusProteus仿真文件仿真文件, ,运行仿真文件夹运行仿真文件夹 第第6 6章章L
57、T6_7LT6_7.DSN LT6_7LT6_7.DSN ,观察运行结果,并进一步分析源程,观察运行结果,并进一步分析源程序。序。图图6-9 P2.X6-9 P2.X引脚输出的波形(仿真截图)引脚输出的波形(仿真截图)6.5 6.5 定时器定时器/ /计数器的综合应用举例计数器的综合应用举例分析:分析:100Hz100Hz的方波周期:的方波周期:=1/100=0.01s=10ms=1/100=0.01s=10ms。高电平时间为高电平时间为7ms7ms,低电平为,低电平为3ms3ms,对于这种高、低电平,对于这种高、低电平不一致的波形,通常取出两个时间的相同单位时间作为定不一致的波形,通常取出两
58、个时间的相同单位时间作为定时器的定时时间,对不同电平采用不同的定时次数。时器的定时时间,对不同电平采用不同的定时次数。本题可用本题可用1ms1ms作为定时器的定时时间,高电平段定时作为定时器的定时时间,高电平段定时7 7次,次,低电平段定时低电平段定时3 3次,定时器计数初值次,定时器计数初值=65536-=65536-1000/2=65036=FE0CH1000/2=65036=FE0CH源程序:(略)源程序:(略)6.5 6.5 定时器定时器/ /计数器的综合应用举例计数器的综合应用举例【例例6-86-8】由由P3.4P3.4引脚引脚(T0)(T0)输入一个低频脉冲信号输入一个低频脉冲信号
59、( (其频其频率率=0.5KHz),=0.5KHz),当当P3.4P3.4每发生一次负跳变脉冲时,每发生一次负跳变脉冲时,P1.0P1.0输出输出一个一个500s500s的同步脉冲,同时的同步脉冲,同时P1.1P1.1输出一个输出一个1ms1ms同步正脉同步正脉冲冲, ,晶振为晶振为6MHz6MHz。光盘提供光盘提供ProteusProteus仿真文件仿真文件, ,运行仿真文件夹运行仿真文件夹 第第6 6章章LT6_8LT6_8.DSN LT6_8LT6_8.DSN ,观察运行结果,并进一步分析源程,观察运行结果,并进一步分析源程序。序。6.5 6.5 定时器定时器/ /计数器的综合应用举例计
60、数器的综合应用举例图图6-10 6-10 例题例题6-86-8的波形图(仿真截图)的波形图(仿真截图)6.5 6.5 定时器定时器/ /计数器的综合应用举例计数器的综合应用举例分析:分析:按题意所示,初始按题意所示,初始P1.0P1.0输出高电平,初始输出高电平,初始P1.1P1.1输出低电输出低电平,平,T0T0采用方式采用方式2 2计数外部脉冲数(计一个脉冲,初始值计数外部脉冲数(计一个脉冲,初始值为为FFHFFH),当加在),当加在P3.4P3.4上的外部脉冲负跳变时,上的外部脉冲负跳变时,T0T0加加1 1,计,计数溢出,此时修改数溢出,此时修改T0T0为为500s500s定时工作方式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 抖音火花RCEP区域短视频IP合作合同
- 茶叶仓储与茶叶深加工技术合作合同
- 电子商务债务解决与权益保障合同
- 写字楼网络带宽租赁与维护保障服务合同
- 装饰装修工程程施工合同范本模板
- 医学经理劳动合同6篇
- 空地租赁合同范本5篇
- 安徽商贸职业技术学院《金属材料力学性能》2023-2024学年第二学期期末试卷
- 郑州汽车工程职业学院《建筑设备施工安装技术》2023-2024学年第二学期期末试卷
- 2025年热压硫化锌(ZNS)晶体合作协议书
- 人工流产患者术后护理
- 电子生产企业人力资源管理制度
- 2025届广西壮族自治区柳州市高三三模语文试题【含答案解析】
- 第9课《可爱的一朵玫瑰花》课件 花城版音乐四年级下册
- (完整版)总局关于发布医疗器械分类目录的公告(2017年第104号)新版本医疗器械分类目录2018版
- 房屋建筑工程竣工验收技术资料统一用表(2024 版)
- 康复医学科治疗技术操作规范2023版
- 磷酸铁及磷酸铁锂异物防控管理
- 2025年河长制知识竞赛题库及答案(共100题)
- 精神科幻觉护理常规
- 渑池项目部砂石骨料生产线安全操作规程(修订)
评论
0/150
提交评论