单片机的定时器计数器讲义

上传人:今*** 文档编号:108054604 上传时间:2019-10-22 格式:PPT 页数:43 大小:517KB
返回 下载 相关 举报
单片机的定时器计数器讲义_第1页
第1页 / 共43页
单片机的定时器计数器讲义_第2页
第2页 / 共43页
单片机的定时器计数器讲义_第3页
第3页 / 共43页
单片机的定时器计数器讲义_第4页
第4页 / 共43页
单片机的定时器计数器讲义_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《单片机的定时器计数器讲义》由会员分享,可在线阅读,更多相关《单片机的定时器计数器讲义(43页珍藏版)》请在金锄头文库上搜索。

1、第6章 单片机的定时器/计数器,本章的内容,定时器/计数器的结构及原理 定时器/计数器的各种工作方式 掌握定时器计数器的应用,6.1 定时器/计数器结构与原理,定时/实现方式: 1.软件定时; 2.不可编程硬件定时; 3.可编程定时 。,多重循环,定时芯片555,定时/计数器,图6-1 80C51定时器/计数器逻辑结构图,6.1.1 定时/计数器的结构,用一个简单的框图构造它的模型 :N位计数器构成了电路的核心。定时,计数两种方式的区别在于计数器的脉冲来源.初值寄存器是用来设定“定时/计数的具体参数” (1):何时控制启动计数?(2):如何控制定时还是计数? (3):如何控制定时/计数的长短?

2、,N位+1计数器,TFx,N位初值寄存器,系统内部 时钟fosc/12,启动控制TR,外部脉冲,定时/计数 控制C/T,计数器溢出 中断信号,返回,计数脉冲CP,6.1.2 定时/计数器的工作原理,1)每过一个机器周期,计数器增1,直至计满溢出(12分频) 2)定时器的定时时间与系统的振荡频率紧密相关 3)MCS-51单片机的一个机器周期由12个振荡脉冲组成 如果晶振频率为12MHZ,则:,6.1.3 定时/计数器功能,(1)定时功能,(2)计数,T1控制,T0控制,M1 M0工作方式选择,6.2 定时计数器的相关控制寄存器 1模式控制寄存器TMOD,M1 M0,C/T 定时/计数工作方式选择

3、,GATE位:门控位。 (1) 当GATE=1时,定时受外部脉冲的控制只有或引脚为高电平且TR0或TR1置1时,相应的定时/计数器才被选通工作,这时可用于测量端出现的正脉冲宽度; (2) 当GATE=0,则只要TR0和TR1置1,定时/计数器就被选通,而不管或的电平是高还是低。,定时/计数器工作方式,2控制寄存器TCON,触发方式选择,启动定时/计数器,0 低电平 1 下降沿,0 停止 1 启动,中断请求 标志,* 各标志位应注意的问题 TF1位:定时器1溢出标志位。 当定时/计数器1溢出时,由硬件置1。 使用查询方式时,此位做状态位供查询,查询有效后需由软件清零; 使用中断方式时,此位做中断

4、申请标志位,进入中断服务后被硬件自动清零。 TR1位:定时器1运行位。 该位靠软件置位或清零,置位时,定时/计数器接通工作,清零时,停止工作。,6.3 定时器计数器的工作方式,定时器计数器共有四种工作方式,1. 方式013位方式,13位计数器,定时器,演 示,继 续,TH0,TL0,返 回,当 =0时,控制开关接通内部振荡器,T0对机器周期进行计数,其定时时间为: t=(213-T0初值)机器周期 当 =1时,控制开关接通外部输入信号,当外部信号电平从“1”到“0”跳变时,加1计数器加1,处于计数工作方式。,C / T,C / T,2. 方式116位方式 其定时时间为: t=(216-T0初值

5、)机器周期,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;,可编程器件在使用前需要进行初始化:,确定TMOD控制字:编程时将控制字送 TMOD;, 开中断(如果使用中断方式): 编程实置位EA、ETi, TRi位置位控制定时器的启动和停止。,例1:设晶振频率fOS

6、C=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=10000H-7DH 0FF83H 所以,初值为:TH1=0FFH,TL1=83H,请思考 为什么?, 采用中断方式:编程时打开全局和局部中

7、断。, 由定时器控制寄存器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 1000H MAIN:MOV TMOD, #10H ;T1为方式1 MOV TH1, #0FFH MOV TL1,#83H ;初值 SETB EA ;允许中断 SETB ET1 SETB TR1 ;启动定时 SJMP $ ;等待中断,例2

8、:利用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,8051,演 示,硬件定时与软件计数结合方式解题思路: 让T0作定时器用,如T0可以定时50ms; 在T0中断处理程序中一个寄存器内容加1

9、,同时判断是否加到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中断入口,思考: 其他中断入口的 地址?,ORG 1000H MAIN:MOV TMOD, #01H ;T0为方式1 MOV TH0, #3

10、CH 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,设计一个控制程序,使80C51的P1口输出8路低频方波脉冲,频率分别为100、50、25、20、10、5、2、1Hz。设单片机的晶振频率为12MHz。试编

11、程实现。,例3:低频信号发生器驱动程序,分析:,使用定时器T0,产生5ms的定时,若晶振选12MHz,则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”计数,当减为零时恢复初值,并使相应的口线改变状态,这样就使P1口输出所要求的方波。,ORG 0000H START: AJMP MAIN ORG 000BH AJMP PTFO MAIN: MOV SP,#70 MOV 3

12、1H,#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 ;踏步,通常CPU处理其他工作,ORG 0030H PTF0: MOV TH0,#0EEH ;T0中断服务程序 MOV TL0,#0 ;初值T0 CPL P1.0 DJNZ 31H,PF01 ;对各路计数器进行计

13、数 MOV 31H,#2 ;计数器减为0,恢复计数初值 CPL P1.1 PF01: DJNZ 32H,PF02 ;输出相反 MOV 32H,#4 CPL P1.2 PF02: DJNZ 33H,PF03 MOV 33H,#5 CPL P1.3,中断程序,PF03: DJNZ 34H,PF04 MOV 34H,#10 CPL P1.4 PF04: DJNZ 35H,PF05 MOV 35H,#20 CPL P1.5 PF05: DJNZ 36H,PF06 MOV 36H,#50 CPL P1.6 PF06: DJNZ 37H,PF07 MOV 37H,#100 CPL P1.7 PF07: R

14、ETI,中断程序,例4:设晶振频率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,注意:以上是当fOSC=6MHz,即MC=2us时各种方式下的定时时间,若fOSC=12MHz,则最长定时时间将缩短一半。,例5:如下图所示,开始时P1.0亮

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号