【教学课件】第6章单片机的定时器计数器.ppt

上传人:牧羊曲112 文档编号:5659143 上传时间:2023-08-06 格式:PPT 页数:42 大小:501.50KB
返回 下载 相关 举报
【教学课件】第6章单片机的定时器计数器.ppt_第1页
第1页 / 共42页
【教学课件】第6章单片机的定时器计数器.ppt_第2页
第2页 / 共42页
【教学课件】第6章单片机的定时器计数器.ppt_第3页
第3页 / 共42页
【教学课件】第6章单片机的定时器计数器.ppt_第4页
第4页 / 共42页
【教学课件】第6章单片机的定时器计数器.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《【教学课件】第6章单片机的定时器计数器.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第6章单片机的定时器计数器.ppt(42页珍藏版)》请在三一办公上搜索。

1、第6章 单片机的定时器/计数器,本章的重点内容,定时器/计数器的结构及原理 定时器/计数器的各种工作方式 掌握定时器计数器的应用,6.1 定时器/计数器结构与原理,定时/实现方式:1.软件定时;2.不可编程硬件定时;3.可编程定时。,多重循环,定时芯片8253,定时/计数器,1.定时功能-计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。,2.计数功能-计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。,定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。,定时/计数器的功能,图6-1 80C51定时器/计数器逻

2、辑结构图,6.1.1 定时/计数器的结构,用一个简单的框图构造它的模型:N位计数器构成了电路的核心。定时,计数两种方式的区别在于计数器的脉冲来源.初值寄存器是用来设定“定时/计数的具体参数”(1):何时控制启动计数?(2):如何控制定时还是计数?(3):如何控制定时/计数的长短?,N位+1计数器,TFx,N位初值寄存器,系统内部时钟fosc/12,启动控制TR,外部脉冲,定时/计数控制C/T,计数器溢出中断信号,返回,计数脉冲CP,6.1.2 定时/计数器的工作原理,1)每过一个机器周期,计数器增1,直至计满溢出(12分频)2)定时器的定时时间与系统的振荡频率紧密相关3)MCS-51单片机的一

3、个机器周期由12个振荡脉冲组成如果晶振频率为12MHZ,则:,*定时功能,(2)计数,T1控制,T0控制,M1 M0工作方式选择,6.2 定时计数器的相关控制寄存器 1模式控制寄存器TMOD,M1 M0,C/T 定时/计数工作方式选择,GATE位:门控位。(1)当GATE=1时,定时受外部脉冲的控制只有或引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作,这时可用于测量端出现的正脉冲宽度;(2)当GATE=0,则只要TR0和TR1置1,定时/计数器就被选通,而不管或的电平是高还是低。,定时/计数器工作方式,2控制寄存器TCON,触发方式选择,启动定时/计数器,0 低电平1 下降

4、沿,0 停止1 启动,中断请求标志,*各标志位应注意的问题TF1位:定时器1溢出标志位。当定时/计数器1溢出时,由硬件置1。使用查询方式时,此位做状态位供查询,查询有效后需由软件清零;使用中断方式时,此位做中断申请标志位,进入中断服务后被硬件自动清零。TR1位:定时器1运行位。该位靠软件置位或清零,置位时,定时/计数器接通工作,清零时,停止工作。,6.3 定时器计数器的工作方式,定时器计数器共有四种工作方式,1.方式013位方式,13位计数器,定时器,演 示,继 续,TH0,TL0,返 回,当=0时,控制开关接通内部振荡器,T0对机器周期进行计数,其定时时间为:t=(213-T0初值)机器周期

5、当=1时,控制开关接通外部输入信号,当外部信号电平从“1”到“0”跳变时,加1计数器加1,处于计数工作方式。,C/T,C/T,2.方式116位方式其定时时间为:t=(216-T0初值)机器周期,3.方式28位自动装入时间常数方式其定时时间为:t=(28-T0初值)机器周期,4.方式32个8位方式,仅T0可以工作在方式3此时T0分成2个 独立的计数器TL0和TH0,TL0用来作为T0的控制信号(TR0、TF0),TH0用来作为T1的控制信号(TR1、TF1)。,6.4 单片机定时器/计数器的应用,计算计数器的计数初值:编程时将计数初值送THi、TLi;,可编程器件在使用前需要进行初始化:,确定T

6、MOD控制字:编程时将控制字送 TMOD;,开中断(如果使用中断方式):编程实置位EA、ETi,TRi位置位控制定时器的启动和停止。,例1:设晶振频率fOSC=6MHz,使用定时器1以方式1产生周期为500s的方波脉冲,并由P1.0 输出。试以中断方式实现。,TMOD确定,T1控制,T0控制,控制字10H,定时器1方 式1,计算计数器的计数初值;,要产生500s 的方波脉冲,只需在P1.0端以250s为间隔,交替输出高低电平即可实现。为此,定时间应为250s。使用6z晶振,则一个机器周期为2s,设待求计数初值为,则:,(216X)210-6=25010-6 即216X=125 X216-125

7、=10000H-7DH 0FF83H所以,初值为:TH1=0FFH,TL1=83H,请思考 为什么?,采用中断方式:编程时打开全局和局部中断。,由定时器控制寄存器TCON中的TR1位控制定时器的启动和停止。TR11,启动;TR10,停止。,程序设计,ORG 0000H LJMP MAIN;主程序入口 ORG 001BH LJMP INTT1;T1中断入口,INTT1:MOV TH1,#0FFH;重新设置初值 MOV TL1,#83H CPL P1.0;输出取反 RETI,ORG 1000HMAIN:MOV TMOD,#10H;T1为方式1 MOV TH1,#0FFH MOV TL1,#83H;

8、初值 SETB EA;允许中断 SETB ET1 SETB TR1;启动定时 SJMP$;等待中断,设计一个控制程序,使80C51的P1口输出8路低频方波脉冲,频率分别为100、50、25、20、10、5、2、1Hz。使用定时器T0,产生5ms的定时,若晶振选11.0592MHz,则5ms相当于4608个机器周期,T0应工作于方式1,初值位x为:x=65536-4608=60928。用十六进制数表示则:x=0EE00H。对应于P1.0 P1.7,设立8个计数器,初值分别为1、2、4、5、10、20、50、100,由T0的溢出中断服务程序对它们减“1”计数,当减为零时恢复初值,并使相应的口线改变

9、状态,这样就使P1口输出所要求的方波。,【例2】低频信号发生器驱动程序,ORG 0000HSTART:AJMP MAIN ORG 000BH AJMP PTFOMAIN:MOV SP,#70;主程序:栈指针初始化 MOV 31H,#2;各路计数器置初值 MOV 32H,#4 MOV 33H,#5 MOV 34H,#10 MOV 35H,#20 MOV 36H,#50 MOV 37H,#100 MOV TMOD,#1;T0方式1定时 MOV TL0,#0;初值T0 MOV TH0,#0EEH MOV IE,#82H;允许T0中断 SETB TR0;允许T0计数HERE:SJMP HERE;踏步,

10、通常CPU处理其他工作,主程序,ORG 0030HPTF0:MOV TH0,#0EEH;T0中断服务程序 MOV TL0,#0;初值T0 CPL P1.0 DJNZ 31H,PF01;对各路计数器进行计数 MOV 31H,#2;计数器减为0,恢复计数初值 CPL P1.1PF01:DJNZ 32H,PF02;输出相反 MOV 32H,#4 CPL P1.2PF02:DJNZ 33H,PF03 MOV 33H,#5 CPL P1.3,中断程序,PF03:DJNZ 34H,PF04 MOV 34H,#10 CPL P1.4PF04:DJNZ 35H,PF05 MOV 35H,#20 CPL P1.

11、5PF05:DJNZ 36H,PF06 MOV 36H,#50 CPL P1.6PF06:DJNZ 37H,PF07 MOV 37H,#100 CPL P1.7PF07:RETI,中断程序,例题3:设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定时时间。,解:1.由fOSC=6MHz可知,MC=2us;2.由于是加1计数,所以最长定时应是计数初值最小时(即为0时)的定时时间。所以此时有:方式0:(2130)2us=214us=16384us=16.384ms,方 式 1:(2160)2us=217us=131.072ms,方式2、3:(280)2us=29us=0.512ms,注意:

12、以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。,例4:定时器/计数器应用,利用T0定时,产生2s定时,使得P1口输出信号,控制8个发光二极管循环点亮,设fOSC=12MHz,。,分析:P1口输出信号,控制8个发光二极管循环点亮,但此处由于定时时间长达2s,所以单靠一个定时器不能解决问题。可以采取硬件定时和软件计数(或硬件计数)结合方式。,P1.0,P1.7,R,LED3,R,LED0,R,LED1,R,LED2,R,LED4,R,LED5,R,LED6,R,LED7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1

13、,8051,演 示,硬件定时与软件计数结合方式解题思路:让T0作定时器用,如T0可以定时50ms;在T0中断处理程序中一个寄存器内容加1,同时判断是否加到2000/50=40,如果不到40,则直接返回,如果计到40,说明2s时间到;使P1口循环点亮8个发光二极管后再返回。T0工作在方式1,控制字01H,计数初值:,(216X)110-6=5010-3 即216X=50000 X216-50000=10000H-C350H 3CB0H所以,初值为:TH1=3CH,TL1=B0H,ORG 0000H LJMP MAIN;主程序入口 ORG 000BH LJMP INTT0;T0中断入口,思考:其他

14、中断入口的 地址?,ORG 1000HMAIN:MOV TMOD,#01H;T0为方式1 MOV TH0,#3CH MOV TL0,#B0H;初值 SETB EA;允许中断 SETB ET0 SETB TR0;启动定时 MOV A,#01H;LED0先亮 MOV P1,A;MOV R0,#0 SJMP$;等待中断,INTT0:MOV TH0,#3CH;重新设置初值 MOV TL0,#B0H INC R0 CJNE R0,#40,NEXT;不等直接返回 MOV R0,#0;2s到 RL A;依次点亮 NEXT:RETI,例题5:如图5-7所示,开始时P1.0亮,延时0.2秒后左移至P1.1亮,如

15、此左移7次后至P1.7亮,再延时0.2秒右移至P1.6亮,如此右移7次后至P1.0亮。(时钟频率fOSC为12MHz)。2000us初值(方式0):6192=1830=000=1100 000100010000=C110H,方法:延时时间0.2秒,使用TIMER0在MODE0下工作 ORG 0000H;起始地址 AJMP MAIN MAIN:MOV TMOD,#00H;设定工作在MODE0START:CLR C;C=0 MOV A,#0FFH;ACC=FFH,左移初值 MOV R2,#08;R2=08,设左移8次LOOP:RLC A;左移一位 MOV P1,A;输出至P1 MOV R3,#10

16、0;0.2秒 ACALL DELAY;2000微妙 DJNZ R2,LOOP;左移8次,MOV R2,#07;R2=07,设右移7次LOOP1:RRC A;右移一位 MOV P1,A;输出至P1 MOV R3,#100;0.2秒 ACALL DELAY;2000微妙 DJNZ R2,LOOP1;右移7次 JMP START DELAY:SETB TR0;启动TIMER0开始计时AGAIN:MOV TL0,#10H;设定TL0的值 MOV TH0,#0C1H;设定TH0的值LOOP1:JBC TF0,LOOP3;TF0是否为1,是则跳 至LOOP3,并清TF0 JMP LOOP1;不是则跳到LOOP1LOOP3:DJNZ R3,AGAIN CLR TR0;则停止TIMR0计数 RET END,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号