版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 定时器计数器第第7章章 80C51的定时的定时/计数器计数器 实现定时功能,实现定时功能,比较方便的办法是利用单比较方便的办法是利用单片机内部的定时片机内部的定时/计数器计数器。也可以采用下面三。也可以采用下面三种方法:种方法:软件定时软件定时:软件定时不占用硬件资源,但占用了:软件定时不占用硬件资源,但占用了CPU时间,降低了时间,降低了CPU的利用率。的利用率。采用时基电路定时采用时基电路定时:例如采用:例如采用555电路,外接必要电路,外接必要的元器件(电阻和电容),即可构成硬件定时电路。的元器件(电阻和电容),即可构成硬件定时电路。但在硬件连接好以后,定时值与定时范围不能由软但
2、在硬件连接好以后,定时值与定时范围不能由软件进行控制和修改,即不可编程。件进行控制和修改,即不可编程。采用可编程芯片定时采用可编程芯片定时:这种定时芯片的定时值及定:这种定时芯片的定时值及定时范围很容易用软件来确定和修改,此种芯片定时时范围很容易用软件来确定和修改,此种芯片定时功能强,使用灵活。在单片机的定时功能强,使用灵活。在单片机的定时/计数器不够用计数器不够用时,可以考虑进行扩展。时,可以考虑进行扩展。 闹钟定时的步骤:闹钟定时的步骤: 1.设定定时方式设定定时方式 2.设定好定时时间设定好定时时间 3.启动闹钟启动闹钟 若用单片机完成此功能,定时的步骤:若用单片机完成此功能,定时的步骤
3、: 1.设定定时器的工作方式设定定时器的工作方式 2.设定定时器的定时时间设定定时器的定时时间 3.启动定时器启动定时器C/T = 0 定时;定时; C/T = 1 对外计数。对外计数。定时:定时:fosc / 12 = 1 /(12/fosc) = 1 / T 波形等间隔,次数已定,时间确定波形等间隔,次数已定,时间确定即对机器周期进行计数。即对机器周期进行计数。 左图定时时间为左图定时时间为 N*TN个方波个方波 T计数:脉冲不等间隔。计数:脉冲不等间隔。 每个下降沿计数一次每个下降沿计数一次 确认一次负跳变需两个机器周期,确认一次负跳变需两个机器周期, 所以,计数频率最高为所以,计数频率
4、最高为fosc / 24。 工作方式寄存器工作方式寄存器TMOD 工作方式寄存器工作方式寄存器TMOD用于设置定时用于设置定时/计数器的计数器的工作方式,低四位用于工作方式,低四位用于T0,高四位用于,高四位用于T1。其格式。其格式如下:如下: TF1(TCON.7):):T1溢出中断请求标志位。溢出中断请求标志位。T1计数溢出时由硬件自计数溢出时由硬件自动置动置TF1为为1。CPU响应中断后响应中断后TF1由硬件自动清由硬件自动清0。T1工作时,工作时,CPU可随时查询可随时查询TF1的状态。所以,的状态。所以,TF1可用作查询测试的标志。可用作查询测试的标志。TF1也可也可以用软件置以用软
5、件置1或清或清0,同硬件置,同硬件置1或清或清0的效果一样。的效果一样。TR1(TCON.6):):T1运行控制位。运行控制位。TR1置置1时,时,T1开始工作;开始工作;TR1置置0时,时,T1停止工作。停止工作。TR1由软件置由软件置1或清或清0。所以,用软件可控制定时。所以,用软件可控制定时/计数器的启动与停止。计数器的启动与停止。TF0(TCON.5):):T0溢出中断请求标志位,其功能与溢出中断请求标志位,其功能与TF1类同。类同。TR0(TCON.4):):T0运行控制位,其功能与运行控制位,其功能与TR1类同。类同。 定时计数器的初始化编程步骤:定时计数器的初始化编程步骤: 1)
6、确定并设置工作方式)确定并设置工作方式(TMOD) 2)计算计数器初值;)计算计数器初值; 3)送计数初值的高八位和低八位到)送计数初值的高八位和低八位到TH0和和TL0和和TL1TH1寄存器中;寄存器中; 4)启动定时(或计数),即将)启动定时(或计数),即将TR0和和TR1置置1。例题例题1:用定时器:用定时器0实现实现5ms的延时,请确定定时器的延时,请确定定时器0的工作方式,并给出初始化程序。的工作方式,并给出初始化程序。 1.分析要求,确定并设定工作方式分析要求,确定并设定工作方式 2.确定并设置计数初始化,并写入确定并设置计数初始化,并写入TH0,TH1 3.启动定时器启动定时器0
7、 初始化程序如下:初始化程序如下: MOV TMOD,#01H MOV TH0,#0ECH MOV TL0 , #78H SETB TR0 例题例题2:如果用定时器:如果用定时器1实现实现100ms的延时,的延时,设定工作方式,写出初始化程序。设定工作方式,写出初始化程序。 1.分析要求,确定并设定工作方式分析要求,确定并设定工作方式 2.确定并设置计数初始化,并写入确定并设置计数初始化,并写入TH0,TH1 3.启动定时器启动定时器0 最终初始化程序如下:最终初始化程序如下: MOV TMOD, #10H MOV TH1,#3CH MOV TL1,#0B0H SETB TR1M0: JBC
8、TF1, M1 SJMP M0M1: MOV TH1, #3CH MOV TL1,#0BH JBC TF1,M2M2: SJMP$7.3 定时器的四种工作方式定时器的四种工作方式 对对TMOD寄存器的寄存器的M1、M0位的设置,可选择四种工作位的设置,可选择四种工作方式,即方式方式,即方式0、方式、方式1、方式、方式2和方式和方式3。下面用下面用THX、TLX(X=1或或0)表示)表示TH1 TL1 TH0 TL0。方式方式 定时器定时器(T0或或T1)工作于工作于13位定时、计数方式。位定时、计数方式。用于计数方式时最大计数值为用于计数方式时最大计数值为 213 8192个脉冲个脉冲用于定时
9、工作时,定时时间为:用于定时工作时,定时时间为: t(213一一T0初值初值) 时钟周期时钟周期12在这种模式下,在这种模式下,16寄存器寄存器(THx和和TLx)只用只用13位,其中位,其中THx占高占高8位。其中位。其中TLx占低占低5位,位, TLx的高的高3位末用。位末用。当当TLx的低的低5位溢出时向位溢出时向THx进位进位,而而THx溢出时硬件置溢出时硬件置位位TF0,并申请中断。,并申请中断。 一、方式一、方式0 方式方式0为为13位计数位计数,由,由TL0的低的低5位(高位(高3位未用)和位未用)和TH0的的8位组成。位组成。TL0的低的低5位溢出时向位溢出时向TH0进位,进位
10、,TH0溢出时,溢出时,置位置位TCON中的中的TF0标志,向标志,向CPU发出中断请求。发出中断请求。例题例题3:用方式:用方式0定时器定时器1实现实现5ms的延时(晶振的延时(晶振12MHz) 方式方式0 ,13位,计数位,计数5000次次 X=8192-5000=3192=0C78H 0110001111000B X的实际值应填写为:的实际值应填写为: X=0110001100011000 =6318H TH1=63H TL1=18H 2 .方式方式1 当当TMOD中中M1M0=01时,定时计数器工作在时,定时计数器工作在方式方式1。该模式是一个该模式是一个16位定时计数方式。位定时计数
11、方式。寄存器寄存器TH0和和TL0是以全是以全16位参与操作,位参与操作,计数方式时最大计数计数方式时最大计数 21665536(个外部脉冲个外部脉冲) 用于定时工作方式时,定时时间为:用于定时工作方式时,定时时间为: t(216一一T0初值初值) 时钟周期时钟周期12 16寄存器寄存器(THx和和TLx) 中中THx提供高提供高8位、位、TLx提供低提供低8位计数初值位计数初值 16X=2 -N方式方式1的计数位数是的计数位数是16位,由位,由TL0作为低作为低8位、位、TH0作为高作为高8位,组成了位,组成了16位加位加1计数器计数器 。计数个数与计数初值的关系为:计数个数与计数初值的关系
12、为: 3. 3. 方式方式2 2当当TMODTMOD中中M1M0=10M1M0=10时,定时器工作在方式时,定时器工作在方式2 2。方式方式2 2是是8 8位的可自动重装载的定时计数方式。位的可自动重装载的定时计数方式。1616位的计数器被拆成两个位的计数器被拆成两个8 8位,其中位,其中TL0TL0用作用作8 8位计数器,位计数器, TH0TH0用以保持计数初值。当用以保持计数初值。当TL0TL0计数溢出,置计数溢出,置TF0TF0,TH0TH0中的中的初值自动装入初值自动装入TL0TL0,继续计数,循环重复计数。,继续计数,循环重复计数。用于计数工作方式时,最大计数值为:用于计数工作方式时
13、,最大计数值为: 2 28 8256(256(个外部脉冲个外部脉冲) )。 用于定时工作方式时,其定时时间为;用于定时工作方式时,其定时时间为; t t(2(28 8TH0TH0初值初值) )振荡周期振荡周期1212这种工作方式可省去用户重装常数的程序,并可产生精这种工作方式可省去用户重装常数的程序,并可产生精确的定时时间,特别适用作串行口波待率发生器确的定时时间,特别适用作串行口波待率发生器。 8X=2 -N方式方式2为自动重装初值的为自动重装初值的8位计数方式。位计数方式。 工作方式工作方式2特别适合于用作较精确的脉冲信号发生器。特别适合于用作较精确的脉冲信号发生器。 计数个数与计数初值的
14、关系为计数个数与计数初值的关系为: 4. 4.方式方式3 3 当当TMODTMOD中中M1M0=11M1M0=11时,定时器工作在方式时,定时器工作在方式3 3。若将若将T0T0设置为模式设置为模式3 3,TL0TL0和和TH0TH0被分成为两个互相独立的被分成为两个互相独立的8 8位计数器位计数器TH0TH0和和 TL0 TL0 。 TL0TL0可工作为定时方式或计数方式。占用原可工作为定时方式或计数方式。占用原T0T0的各控制的各控制位、引脚和中断源。即位、引脚和中断源。即C CT T、GATEGATE、TR0TR0、TF0TF0和和T0 (P3.4)T0 (P3.4)引脚、引脚、INT0
15、 (P3.2)INT0 (P3.2)引脚。引脚。 TH0TH0只可用作定时功能,占用定时器只可用作定时功能,占用定时器T1T1的控制位的控制位TR1TR1和和T1T1的中断标志位的中断标志位TF1TF1,其启动和关闭仅受,其启动和关闭仅受TRlTRl的控制。的控制。定时器定时器T1T1无模式无模式 3, 3, 可工作于方式可工作于方式0 0、1 1、2 2,但不能使用,但不能使用中断方式。中断方式。 只有将只有将T1T1用做串行口的波特率发生器时,用做串行口的波特率发生器时,T0T0才工作在方才工作在方式式3 3,以便增加一个定时器。,以便增加一个定时器。 方式方式3只适用于定时只适用于定时/
16、计数器计数器T0,定时器定时器T1处于方式处于方式3时相当时相当于于TR1=0,停止计数。,停止计数。 工作方式工作方式3将将T0分成为两个独立的分成为两个独立的8位计数器位计数器TL0和和TH0 。 7.4 定时计数器的应用程序设计定时计数器的应用程序设计7.4.1 7.4.1 定时器的计数初值定时器的计数初值C C的计算和装入的计算和装入 如前所述,如前所述,8xx518xx51定时器定时器/ /计数器不同工作方计数器不同工作方式的模值不同,由于采用加式的模值不同,由于采用加1 1计数,因此计数初值应为计数,因此计数初值应为负值,计算机中用有符号数采用补码表示。负值,计算机中用有符号数采用
17、补码表示。 计数初值(计数初值(C C)的求法如下。)的求法如下。 计数方式:计数方式: 计数初值计数初值 C=C=模模-X-X(其中(其中X X为要计的脉冲个数)为要计的脉冲个数)定时方式:定时方式: 计数初值计数初值 C= t / MCC= t / MC补补= =模模t / MCt / MC 其中其中t t为欲定时时间,为欲定时时间,MCMC为为8xx518xx51的机器周的机器周MC=12/foscMC=12/fosc 当采用当采用12MHZ12MHZ晶振时,晶振时,MC=1usMC=1us; 当采用当采用6MHZ6MHZ晶振时,晶振时,MC=2usMC=2us。方式0( 13位方式):
18、 C=(-64H)补=2000H64H=1F9CH 1F9CH0001 1111 1001 1100B 把把13位中的高八位1111 1100B1111 1100B装入装入TH0TH0, 而把而把13位中的低五位低五位xxx1 1100Bxxx1 1100B装装入TL0TL0。 MOV TH0MOV TH0,#0FCH#0FCH; MOV TL0MOV TL0,#1CH#1CH;(xxx(xxx用用“0”0”填入)填入)方式方式1(161(16位方式位方式) ): C=C=(-64H-64H)补补=10000H-64H=FF9CH=10000H-64H=FF9CH 用指令装入计数初值用指令装入
19、计数初值: MOV TH0MOV TH0,#0FFH#0FFH MOV TL0 MOV TL0,#9CH#9CH例例 要计要计100个脉冲的计数初值个脉冲的计数初值方式方式2(8位自动再装入方式)位自动再装入方式) C=(64H)补)补=100H64H=9CH 初值既要装入初值既要装入TH0,也要装入,也要装入TL0: MOV TH0,#9CH MOV TL0,#9CH7.4.2 定时计数器的初始化编程定时计数器的初始化编程 定时计数器的初始化编程步骤:定时计数器的初始化编程步骤:1)根据定时时间要求或计数要求计算计数器初值;)根据定时时间要求或计数要求计算计数器初值;2)工作方式控制字送)工
20、作方式控制字送TMOD寄存器;寄存器;3)送计数初值的高八位和低八位到)送计数初值的高八位和低八位到THX和和TLX寄存寄存 器中;器中;4)启动定时(或计数),即将)启动定时(或计数),即将TRX置位。置位。 如果工作于中断方式,需要置位如果工作于中断方式,需要置位EA(中断总开关)(中断总开关)及及ETX(允许定时(允许定时/计数器中断)。并编中断服务程序。计数器中断)。并编中断服务程序。例例7-1 如图如图7-2所示,所示,P1中接有八个发光二极中接有八个发光二极管,编程使八个管轮流管,编程使八个管轮流点亮,每个管亮点亮,每个管亮100ms,设晶振为设晶振为6MHz。7.4.3 7.4.
21、3 应用编程举例应用编程举例分析分析 利用利用T1T1完成完成100ms100ms的定时,当的定时,当P1P1口线输出口线输出“1”1”时,发光二极管亮,每隔时,发光二极管亮,每隔100ms”1”100ms”1”左移一次,采左移一次,采用定时方式用定时方式1 1,先计算计数初值:,先计算计数初值: MC= =2MC= =2s s 100ms/2 100ms/2s =50000=C350H s =50000=C350H (C350HC350H)补补 =10000H-C350H=3CB0H=10000H-C350H=3CB0H 查询方式如下:查询方式如下: ORG 0030HORG 0030H M
22、OV A MOV A,#01H#01H:置第一个:置第一个LEDLED亮亮NEXTNEXT:MOV P1MOV P1,A A MOV TMOD MOV TMOD,#10H #10H ;T1T1工作于定时方式工作于定时方式1 1 MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H#0B0H; 定时定时100100ms ms SETB TR1 SETB TR1 AGAI:JBC TF1,SHIAGAI:JBC TF1,SHI; 100100msms到转到转SHI,SHI,并清并清TF1TF1 SJMP AGAI SJMP AGAISHISHI:RL ARL
23、 A SJMP NEXT SJMP NEXT中断方式中断方式 ORG 0000H ORG 0000H AJMP MAIN AJMP MAIN ;单片机复位后从;单片机复位后从0000H0000H开始执行开始执行 ORG 001BHORG 001BH AJMP IV1 AJMP IV1 ;转移到;转移到IV1IV1 ORG 0030H ORG 0030H ;主程序;主程序MAINMAIN:MOV AMOV A,#01H #01H MOV P1 MOV P1,A A ;置第一个;置第一个LEDLED亮亮 MOV TMODMOV TMOD,#10H #10H ;T1T1工作于定时方式工作于定时方式1
24、 1 MOV TH1 MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0B0H #0B0H ;定时;定时100ms100ms SETB TR1 SETB TR1 ;启动;启动T1T1工作工作 SETB ET1 SETB ET1 ;允许;允许T1T1中断中断WAITWAIT:SJMP WAIT SJMP WAIT ;等待中断;等待中断 IV1IV1:RL A RL A ;中断服务程序,左移一位;中断服务程序,左移一位 MOV P1MOV P1,A A ;下一个发光二极管亮;下一个发光二极管亮 MOV TH1MOV TH1,#3CH#3CH MOV TL1 MOV TL1,#0
25、B0H #0B0H ;重装计数初值;重装计数初值 RETI RETI ;中断返回;中断返回以上程序进入循环执行以上程序进入循环执行, ,八个八个LEDLED一直循环轮流点亮。一直循环轮流点亮。7.4 定时定时/计数器应用举例计数器应用举例 初始化程序应完成如下工作:初始化程序应完成如下工作:对对TMOD赋值,以确定赋值,以确定T0和和T1的工作方式。的工作方式。计算初值计算初值,并将其写入并将其写入TH0、TL0或或TH1、TL1。中断方式时,则对中断方式时,则对IE赋值,开放中断。赋值,开放中断。使使TR0或或TR1置位,启动定时置位,启动定时/计数器定时或计数。计数器定时或计数。 例例 利
26、用定时利用定时/计数器计数器T1的方式的方式1,产生,产生10ms的定时,的定时,并使并使P1.0引脚上输出周期为引脚上输出周期为20ms的方波,采用中的方波,采用中断方式,设系统时钟频率为断方式,设系统时钟频率为12 MHz。解:解:1、计算计数初值、计算计数初值X:由于晶振为由于晶振为12 MHz,所以机器周期,所以机器周期Tcy为为1 s。所以:所以:Nt/ Tcy 10000/110000X655361000055536D8F0H即应将即应将D8H送入送入TH0中,中,F0H送入送入TL0中中 2、求、求T1的方式控制字的方式控制字TMOD: M1M0=01,GATE=0,C/T=0,
27、可取方式控制,可取方式控制字为字为01H; TF1 TR1TF0 TR0 IE1 IT1 IE0 IT0 M0 M1C / GATE M0 M1 C/ GATETTTMODTCON例例2、设、设fosc = 6MHz,利用单片机内定时,利用单片机内定时/计数器及计数器及P10口线输出口线输出1000个脉冲,脉冲周期为个脉冲,脉冲周期为2ms,试编程。,试编程。 8031 P1.0 T12ms T = 121/fosc = 2us 选取选取T0定时;定时;T1计数。计数。 设设T0采用中断方式产生周期为采用中断方式产生周期为2ms方波,方波,T1对该方波计数,当输对该方波计数,当输出至第出至第1
28、000个脉冲时,使个脉冲时,使TF1置置1。 在主程序中用查询方法,检在主程序中用查询方法,检测到测到TF1变变1时,关掉时,关掉T0,停止输出方波。,停止输出方波。 T0、T1参数的确定:参数的确定:T0模式模式0、定时:脉宽为脉冲周期的一半、定时:脉宽为脉冲周期的一半所以,所以,X = 2131ms / 2us = 0001 1110 0000 1100BTH0 = 0F0H ; TL0 = 0CH T1模式模式1、计数:、计数:N = 1000 则则 X = 655361000 = 64536 = 0FC18H (若选模式(若选模式0也可以,此时也可以,此时X = 7192=1C18H)
29、 程序:程序: ORG 0000H LJMP MAIN ORG 000BH LJMP TOS ORG 1000H MAIN: MOV TMOD,#50H;T0定时,模式定时,模式0;T1计数,模式计数,模式1 MOV TL0,#0CH MOV TH0,#0F0H MOV TL1,#18H MOV TH1,#0FCH SETB TR1 SETB TR0 SETB ET0 SETB EA WAIT: JNB TF1,WAIT;查询;查询1000个脉冲计够没有到?个脉冲计够没有到? CLR EA CLR ET0 ANL TCON,#0FH ; 停停T0、T1 SJMP TOS: MOV TL0,#0
30、CH MOV TH0,#0F0H CPL P10 RETI END 例例3、脉冲参数测量、脉冲参数测量GATE功能的使用。功能的使用。 脉冲高电平(计数)长度值存于脉冲高电平(计数)长度值存于21H、20H中,中, 脉冲低电平长度存于脉冲低电平长度存于23H、22H中。中。 电路连接如下图所示。电路连接如下图所示。解:解: 复习复习GATE的用法:的用法: GATE = 0时,时,TRi = 1,即可启动,即可启动Ti定时定时 / 计数计数 GATE = 1时,时,TRi = 1,且,且 =1,才启动定时,才启动定时 / 计数。计数。INTi80310INT1INTP3.2P3.11被测信号被
31、测信号21a3T0计数计数T1计数计数 ORG 0000H LJMP MAIN ORG 2000HMAIN:MOV TMOD,#99H ;T0、T1均工作在定时,均工作在定时, ;模式;模式1,GATE=1 MOV A,#00H ;T0、T1赋计数初值赋计数初值00H, ; 定时最长时间为定时最长时间为0000 65536 MOV TL0,A MOV TH0,A MOV TL1,A MOV TH1,A TEST0: JB P32,TEST0 ;检测是否到;检测是否到a点点 SETB TR0 ;到;到a点,点,TR0 = 1,做好取计时值准备。,做好取计时值准备。TEST1: JNB P32,T
32、EST1 ;检测是否到;检测是否到1点点 SETB TR1 ;到;到1点点T0计时;计时;TR1 = 1,做好,做好T1计时准备。计时准备。TEST2:JB P32,TEST2 ;检测是否到;检测是否到2点点 CLR TR0 ;到;到2点,停止点,停止T0计时,计时,T1开始计时。开始计时。 MOV 20H,TH0 ;保存;保存T0计时结果计时结果 MOV 21H,TL0TEST3:JB P33,TEST3 ;检测是否到;检测是否到3点点 CLR TR1 ;到;到3点,停止点,停止T1计数计数 MOV 22H,TH1 ;保存;保存T1计数结果计数结果 MOV 23H,TL1 LCALL DISP SJMP 28=256=100H28=256=100H216=65536=10000H213=8192=2000H 模模 值值 (计数最大值计数最大值)TL0定时,计数定时,计数占用占用TR0、TF0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线下直播带货课程设计
- 研学课程设计剪纸
- 水控课程设计致谢模板
- 2024年吉林省安全员-B证考试题库附答案
- 油品储存与装卸课程设计
- 研学课程设计措施和方法
- 电池课程设计目录
- 2024江西省安全员《B证》考试题库
- 2025四川省建筑安全员《B证》考试题库
- 2025天津市安全员-C证(专职安全员)考试题库
- 齐鲁名家 谈方论药智慧树知到期末考试答案2024年
- 2024年华电甘肃大基地煤电分公司招聘笔试参考题库含答案解析
- 2022年度设备部安全生产工作计划5篇
- GB∕T 39757-2021 建筑施工机械与设备 混凝土泵和泵车安全使用规程
- 英国学派多元主义与社会连带主义论争
- 电梯公司安全生产管理制度汇编.doc
- 儿童保健档案表.doc
- 阀门检测报告
- 新产品开发流程表
- 保命未来经0001
- 北京市养老机构公建民营实施办法(20210220135609)
评论
0/150
提交评论