微机课件Lecture09定时器计数器

上传人:E**** 文档编号:90924865 上传时间:2019-06-20 格式:PPT 页数:35 大小:235.50KB
返回 下载 相关 举报
微机课件Lecture09定时器计数器_第1页
第1页 / 共35页
微机课件Lecture09定时器计数器_第2页
第2页 / 共35页
微机课件Lecture09定时器计数器_第3页
第3页 / 共35页
微机课件Lecture09定时器计数器_第4页
第4页 / 共35页
微机课件Lecture09定时器计数器_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《微机课件Lecture09定时器计数器》由会员分享,可在线阅读,更多相关《微机课件Lecture09定时器计数器(35页珍藏版)》请在金锄头文库上搜索。

1、MCS-51的定时器/计数器,2,学习目的及要求,熟悉MCS-51片内两个16位定时器/计数器T0和T1的硬件结构及其与CPU的关系; 掌握T0和T1的两种工作方式,即计数方式与定时方式,四种工作模式(即计数器长度); 牢记TMOD和TCON各位的含义,学会定时器控制及应用方法掌握定时器的四种模式的应用,3,计数概念的引入,从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录音机上的计数器、家里用的电度表、汽车上的里程表等等.,4,计数器的容量,单片机中的计数器有多大的容量呢? 8051单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成

2、的,即每个计数器都是16位的计数器 最大的计数量是65536。,5,定时的概念,8051中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?,一个闹钟,我将它定时在1个小时后闹响,换言之,也可以说是秒针走了(3600)次,所以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。,6,计数与定时(1),只要计数脉冲的间隔相等,则计数值就代表了时间的流逝。 单片机中的定时器和计数器是同一个事物,只不过计数

3、器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。 那么提供给定时器的计数源是什么呢? 是由单片机的晶振经过12分频后获得的一个脉冲源。 问题:一个12M的晶振,它提供给计数器的脉冲时间间隔是多少呢? 结论: 计数脉冲的间隔与晶振有关,12M的晶振, 12M/12等于1M,计数脉冲的间隔是1微秒。,7,图1 由单片机的晶振经过12分频后获得的一个脉冲源。,计数与定时(2),T1引脚(P3.5),以T1计数/定时器为例,定时脉冲源,计数脉冲源,8,A,TMP,PSW,B,SP,DPTR,RAM,PC,ROM,P1,P2,P3,P0,定时,中断,串口,IR,P L A,ID,

4、振 荡,X1 X2,PSEN RST ALE EA,P0 P1 P2 P3,ALU,外接晶振,产生时钟信号,控制CPU的工作速度。51系统下,最高12MHz,晶振与时钟周期,9,溢出的概念,水滴的例子,当水不断落下,盆中的水位不断升高,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象? 水会漫出来,用个术语来讲就是“溢出”。,水溢出是流到地上; 计数器溢出后将使得TCON寄存器中的TF0/TF1变为“1”。 一旦TF0/TF1由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。现在我们来研究另一个问题:要有多少个计数脉冲才会溢出,即使T

5、F0/TF1由0变为1。,10,任意定时及计数的方法,刚才已讲过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足这个要求呢?,提示:如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛? 我们采用预置数的方法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。 定时也是如此,每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒,但现在我只要10

6、毫秒就可以了,怎么办? 10个毫秒为10000个微秒,所以,只要在计数器里面放进55536就可以了。,11,定时/计数器的方式控制字,单片机中的定时/计数器都可以有多种用途,那么我怎样才能让它们工作于我所需要的用途呢?这就要通过定时/计数器的方式控制字来设置。,在单片机中有两个特殊功能寄存器与定时/计数有关,这就是TMOD和TCON。TMOD和TCON是名称,我们在写程序时就可以直接用这个名称来指定它们,当然也可以直接用它们的地址89H和88H来指定它们。,12,MCS-51定时/计数器,51系列内部有2个16位的定时/计数器T0、T1,52系列内部有3个16位的定时/计数器T0、T1、T2,

7、定时/计数器的可编程特性:, 确定其工作方式是定时还是计数, 预置定时或计数初值, 当定时时间到或计数终止时,要不要发中断请求, 如何启动定时或计数器工作,上页,下页,回目录,T2,可编程,可 编 程 的,13,结构组成: T0由两个8位的TH0(8CH)和TL0(8AH)组成 T1由两个8位的TH1(8DH)和TL1(8BH)组成 软件设置: 计数初值: 对TH1、TL1 、TH0、和TL0的初始化编程 将它们设置成不同的工作方式,其计数长度(最大值) 和计数方式都可变化,T0和T1都是16位的加1计数器,定时/计数器(T0和T1)的组成,14,CPU,TCON(88H),TMOD(89H)

8、,定时/计数器逻辑结构,上页,下页,回目录,定时/计数器的结构与工作原理,15,定时/计数器的工作方式、计数(定时)值、中断控制等都是由程序设定的 特殊功能寄存器: TMOD (定时器方式控制寄存器) TCON(定时器控制寄存器),定时/计数器的控制方式,16,(89H),TMOD,控制T1,控制T0,门控位,功能选择位,工作方式选择 00 方式0 01 方式1 方式2 方式3,方式寄存器TMOD,GATE =,0 与/INTx无关 1 受/INTx限制,17,T1(P3.5),GATE,TR1,INT1,TF1,中断,K,控制,计数方式的控制逻辑,A,B,“+1”,(以T1为例),计数器,“

9、+1”,“+1”,中断开放,定时/计数的启动受TCON寄存器中TR0(TR1)位的控制 GATE起辅助作用: GATE = 0,TR0(TR1) = 1 启动计数 GATE = 1,还需/INT0和/INT1 = 1 才能启动计数 利用门控信号,可以来测量接在INT1端的正脉冲宽度,定时方式:C/T = 0, 计数脉冲来自单片机的内部振荡脉冲的12分频 计数方式:C/T = 1,计数器的时钟来自引脚T1,计数方式的控制逻辑,18,(88H),TCON,T1、T0 启/停控制位,T1、T0 溢出标志位,“0” 停止,“1” 启动,“1” 有溢出,“0” 无溢出,可编程 可控制,“+1”,工作,记

10、录有无溢出,控制寄存器TCON,溢出则申请中断 中断响应后自动复0,19,0 禁止,1 允许,0 禁止,1 允许,总 中断,总 中断,中断,中断,IE (A8H),CPU,IE 的相应位被置 “0” 或 “1” 该相应中断即被“禁止”或“开放”,中断允许控制寄存器IE与定时器中断有关的控制位,中断的允许或禁止是由片内的中断允许寄存器IE控制的,20,工作模式 功能 模式0 13位计数器 模式1 16位计数器 模式2 可自动装入计数初值的8位重装计数器 模式3 T0分为两个8位计数器,T1停止计数,8031内部定时/计数工作方式,21,13位的定时计数器,由TH的8位和TL的低5位组成,TL40

11、,工作过程: 根据定时/计数值装入初值 开始计数后,计数器按加法计数器工作 计数器溢出时回到全0状态,计数或定时不再按预设值继续进行 计数溢出时还产生中断申请信号,模式0,22,若要求计数值为1000,计数的初值应为 213 1000 = 7192 换算为二进制数为 11100000 11000,13位计数器,装入的计数初值13位二进制数。,11100000,00011000,TH TL 初值高8位 初值低5位,实际所置的初值应为: 11100000 00011000,模式0,23,模式0的应用,例1:试利用T0产生周期为1ms,宽度为一个机器周期的负脉冲串,并由P1.0送出 假设系统晶振为1

12、2MHz,则计数周期为1s,若计数器的初值为X,则要求 1 x 10-3 = (213-C) x 1 x 10-6 故X = 7192 = 1110000011000B,其中高8位赋给TH0,低8位赋给TL0,所以TH0 = 0E0H, TL0 = 18H。,24,采用查询方式 MOV TMOD, #00H ;设置定时器0模式0 MOV TH0, #0E0H ;定时器高8位初值 MOV TL0, #18H ;定时器低8位初值 SETB TR0 ;启动定时器0 T0INT: JNB TF0, T0INT ; CLR TF0 CLR P1.0 SETB P1.0 MOV TH0, #0E0H ;用

13、软件重新装载TH0和TL0 MOV TL0, #18H SJMP T0INT,25,采用中断方式 ORG 0000H AJMP MAIN ORG 000BH AJMP T0INT ORG 0100H MAIN: MOV TMOD, #00H MOV TH0, #0E0H ;送定时初值 MOV TL0, #18H MOV IE, #82H ;允许T0中断EA = 1, ET0 = 1 SETB TR0 ;启动定时器0 LOOP: SJMP LOOP ORG 0200H T0INT: CLR P1.0 ;送负脉冲 SETB P1.0 MOV TH0, #0DDH ;用软件重新赋初值 MOV TL0

14、, #18H RETI END,26,16位的定时计数器,由TH的8位和TL的8位组成,工作过程:同方式0 计数初值:高8位写入TH,低8位写入TL,若要求计数值为58344,计数的初值应为 216 58344 = 7192 换算为二进制数为 00011100 00011000,00011100,00011000,TH TL 初值高8位 初值低8位,模式1,27,模式1的应用,例2:利用定时器0产生25Hz的方波,由P1.0口输出。假设CPU不做其他工作,采用查询方式进行控制,设晶振频率为12MHz。 1) 定时 or 计数? 2)定时长度? 3)运用哪种定时器工作模式? 4)定时器初值?,2

15、8,模式1的应用,查询方式下: ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV TMOD, #01H MOV TH0, #0B1H MOV TL0, #0E0H SETB TR0 LOOP: JNB TF0, $ CLR TF0 MOV TH0, #0B1H MOV TL0, #0E0H CPL P1.0 SJMP LOOP END,请写出中断方式下的程序,29,可自动重装载的8位计数器,TL为8位计数器,装入初值并启动后按8位加法计数器工作 TH为8位寄存器,计数初值也装入TH 当低8位计数器溢出时,除了可以申请中断,还将TH保存的内容向TL重新装入,以便于T

16、L重新计数 可连续计数,但计数长度有限,只有28 = 256,模式2,30,模式2的应用,例3:利用T1模式2进行计数,每计200次进行累加器加1操作 计算计数器初值为 28 200 = 56D = 38H 采用查询方式,31,ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV TMOD, #60H ;设置定时器1模式2 MOV TH0, #38H ;保存计数初值 MOV TL0, #38H ;设置计数初值 SETB TR1 ;启动定时器1 DEL: JBC TF1, LOOP ;查询是否计数溢出 AJMP DEL LOOP:INC A ;累加器加1 AJMP DEL ;循环 END,请写出中断方式下的程序,32,定时器计数器的编程和应用,编程

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

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

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