![教学情景四定时器计数器_第1页](http://file4.renrendoc.com/view/cdfe3180de2a8e6ff20a5247c36b3755/cdfe3180de2a8e6ff20a5247c36b37551.gif)
![教学情景四定时器计数器_第2页](http://file4.renrendoc.com/view/cdfe3180de2a8e6ff20a5247c36b3755/cdfe3180de2a8e6ff20a5247c36b37552.gif)
![教学情景四定时器计数器_第3页](http://file4.renrendoc.com/view/cdfe3180de2a8e6ff20a5247c36b3755/cdfe3180de2a8e6ff20a5247c36b37553.gif)
![教学情景四定时器计数器_第4页](http://file4.renrendoc.com/view/cdfe3180de2a8e6ff20a5247c36b3755/cdfe3180de2a8e6ff20a5247c36b37554.gif)
![教学情景四定时器计数器_第5页](http://file4.renrendoc.com/view/cdfe3180de2a8e6ff20a5247c36b3755/cdfe3180de2a8e6ff20a5247c36b37555.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
教学情景四定时器计数器第1页,课件共46页,创作于2023年2月(3)定时的其它方法软件定时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。因此软件定时的时间不宜过长。
硬件定时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。
可编程定时器:通过专用的定时器/计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。第2页,课件共46页,创作于2023年2月
MCS-51单片机内部有两个16位可编程的定时器/计数器,简称为T0和T1,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出申请中断,表明定时时间已到或计数已终止。适用于定时控制、延时、外部计数和检测等。计数器:对引脚T0(P3.4)和T1(P3.5.)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。定时器:对系统晶振振荡脉冲的12分频输出进行计数。(1)定时器/计数器的结构组成:16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON。T0:TL0(低8位)和TH0(高8位)T1:TL1(低8位)和TH1(高8位)2.MCS-51内部定时器/计数器
第3页,课件共46页,创作于2023年2月
8051单片机内部的定时器/计数器的结构如下图所示。第4页,课件共46页,创作于2023年2月(2)控制寄存器TCON(88H)
TF1
TR1
TF0
TR0IE1IT1IE0IT0TF0/TF1:T0/1计数器溢出标志位。可用于申请中断或供CPU查询。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。
=1:计数溢出;
=0:计数未满。TR0/TR1:T0/1计数器运行控制位。=1:启动计数;=0:停止计数。IE0/IE1和IT0/IT1:用于管理外部中断(下章介绍)。第5页,课件共46页,创作于2023年2月
M1,M0:工作方式选择位。=00:13位定时器/计数器;=01:16位定时器/计数器(常用);=10:可自动重装初值的8位定时器/计数器(常用);=11:T0分为2个8位定时器/计数器;仅适用于T0。C/:定时方式/计数方式选择位。=1:选择计数器工作方式,对T0/T1引脚输入的外部的周期脉冲计数;=0:选择定时器工作方式,对机器周期脉冲计数定时。如下页图所示。(2)工作方式寄存器TMOD
GATEC/TM1M0GATEC/TM1M0T1T0第6页,课件共46页,创作于2023年2月GATE:门控位,定时器/计数器的启/停可由软件或软、硬件结合控制两种方式=0:仅由软件控制,只由TCON中的启/停控制位TR0/TR1控制定时器/计数器的启/停。=1:软、硬件结合控制,由外部中断请求信号/和TCON中的启/停控制位TR0/TR1组合状态控制定时器/计数器的启/停。当TR0=1时,外中断引脚信号引脚的高电平启动计数,外中断引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽度。
第7页,课件共46页,创作于2023年2月3.3.2定时器/计数器的工作方式
8051单片机的定时器/计数器共有四种工作模式,现以T0为例加以介绍,T1与T0的工作原理相同,但方式3下T1停止计数。1.工作方式0(M1M0=00,13位定时器/计数器)
由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。(完全没用,只是为了与48系列单片机兼容)2.工作方式1(M1M0=01,16位定时器/计数器)(最常用)
由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。3.工作方式2(M1M0=10,自动重装计数初值的8位定时器/计数器)(经常用到)
16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。第8页,课件共46页,创作于2023年2月4.工作方式3(M1M0=11,2个8位定时器/计数器,仅适用于T0)TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。(几乎不用)
第9页,课件共46页,创作于2023年2月
定时器/计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数。在应用时,其工作方式和工作过程均可通过程序设定和控制,因此,定时器/计数器在工作前必须先对其进行初始化,计算和设置初值。
1.定时器T0/T1中断申请过程(这是中断方式,还有一种查询方式)
(1)在已经开放T0/T1中断允许且已被启动的前提下,T0/T1加1计满溢出时TF0/TF1标志位自动置“1”;(2)CPU检测到TCON中TF0/TF1变“1”后,将产生指令:LCALL000BH/LCALL001BH执行中断服务程序;(3)TF0/TF1标志位由硬件自动清“0”,以备下次中断申请。3.3.3定时器/计数器的应用
第10页,课件共46页,创作于2023年2月2.定时器/计数器初始化的步骤
(1)写TMOD,设置定时器/计数器的工作方式;
(2)计算定时器/计数器的初值,写入TH0/TH1、TL0/TL1。
(3)设置IE、IP,以开放相应的中断和设定中断优先级。3.定时器/计数器的定时器/计数器范围
(1)工作方式0:13位定时器/计数器方式最大计数值=213=8192(2)工作方式1:16位定时器/计数器方式最大计数值=216=65536
(3)工作方式2和工作方式3:8位的定时器/计数器方式
最大计数值=28=256第11页,课件共46页,创作于2023年2月3.计数器初值的计算
方法:用最大计数量减去需要的计数次数。即:TC=M
C其中:TC——计数器需要预置的初值;M——计数器的模值(最大计数值);方式0时,M=213;方式1时,M=216;方式2,3时,M=28;C——计数器计满回0所需的计数值,即设计任务要求的计数值。例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为:TC=M
C=213
12=8180第12页,课件共46页,创作于2023年2月4.定时器初值的计算
定时时间的计算公式为:T=(M
TC)×T0(或TC=M
T/T0)其中:T——定时器的定时时间,即设计任务要求的定时时间;T0——计数器计数脉冲的周期,即单片机系统主频周期的12倍;M——计数器的模值;TC——定时器需要预置的初值。若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式0:
Tmax=213×1
s=8.192ms工作方式1:
Tmax=216×1
s=65.536ms工作方式2和3:Tmax=28×1
s=0.256ms第13页,课件共46页,创作于2023年2月5.定时器/计数器应用举例
[例题4]
设一只发光二极管LED和8051的P1.0脚相连。当P1.0脚是低电平时,LED发亮;当P1.0脚是高电平时,LED不亮。编制程序用定时器来实现发光二极管LED的闪烁功能,设置LED每1s闪烁一次。已知单片机系统主频为12MHz。解:定时器/计数器的最长的定时是65.536ms,无法实现1s的定时。可以采用软件计数器来进行设计。第14页,课件共46页,创作于2023年2月设计思想:定义一个软件计数器单元30H,先用定时器/计数器0做一个50ms的定时器,定时时间到了以后将软件计数器中的值加1,如果软件计数器计到了20,取反P1.0,并清掉软件计数器中的值,否则直接返回。则完成了20次定时中断才取反一次P1.0,因此定时时间就为20×50=1000ms=1s。定时器/计数器0采用工作方式1,其初值为:216
50ms/1
s=65536
50000=15536=3CB0H电路图如下:第15页,课件共46页,创作于2023年2月程序如下:
ORG0000H AJMPSTART;转入主程序 ORG000BH ;定时器/计数器0的中断服务程序入口地址 AJMPTIME0 ;跳转到真正的定时器中断服务程序处 ORG0030H START:MOVSP,#60H;设置堆栈指针 MOVP1,#0FFH;关发光二极管LED(使其灭) MOV30H,#00H;软件计数器预清0 MOVTMOD,#01H;定时器/计数器0工作于方式1 MOVTH0,#3CH;设置定时器/计数器的初值 MOVTL0,#0B0H SETBEA ;开总中断允许 SETBET0 ;开定时器/计数器0中断允许 SETBTR0 ;启动定时器/计数器0LOOP:AJMPLOOP ;循环等待(真正工作时,这里可写任意其他程序) 第16页,课件共46页,创作于2023年2月定时器/计数器0的中断服务程序1:
TIME0:PUSHACC;将PSW和ACC推入堆栈保护 PUSHPSW INC30H ;软件计数器加1 MOVA,30H CJNEA,#20,T_LP2 ;软件计数器单元中的值到了20了吗?到了,继续执行;否则,转入T_LP2T_LP1:CPLP1.0 ;到了,P1.0取反 MOV30H,#00H ;清软件计数器(或置初值20)T_LP2:MOVTH0,#3CH ;重置定时器/计数器的初值 MOVTL0,#0B0H POPPSW ;恢复PSW和ACC POPACC RETI ;中断返回 END 第17页,课件共46页,创作于2023年2月定时器/计数器0的中断服务程序2:
TIME0:MOVTL0,#0B0H;重置定时器/计数器的初值MOVTH0,#3CHDJNZ30H,T_LP2;软件计数器单元中的值到了20了吗? ;T_LP1:CPLP1.0 ;到了,P1.0取反 MOV30H,#20 ;重置软件计数器初值T_LP2:RETI ;中断返回 END 第18页,课件共46页,创作于2023年2月任务二、秒表任务要求:用单片机的定时/计数器T0产生一秒的定时时间,作为秒计数的时间,当一秒产生时,秒计数加1,秒计数到60时,自动从0开始。任务分析:需要的硬件?
第19页,课件共46页,创作于2023年2月第20页,课件共46页,创作于2023年2月定时器的初始化工作对TMOD的设置:????第21页,课件共46页,创作于2023年2月定时初值的设置为什么要赋初值?赋给谁?怎么算?第22页,课件共46页,创作于2023年2月定时器的启动定时器的启动方式的选择??(停止方式?)查询方式?中断方式?第23页,课件共46页,创作于2023年2月程序框图???第24页,课件共46页,创作于2023年2月第25页,课件共46页,创作于2023年2月查询法程序设计第26页,课件共46页,创作于2023年2月利用中断实现秒表的程序第27页,课件共46页,创作于2023年2月计数器的例子实训任务:利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.4管脚接一个按钮开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数显示;第28页,课件共46页,创作于2023年2月共阴:Abcdefg直接接到引脚上,但公共端要接电阻;共阳:公共端直接接在+5V上,ABCDEFG需通过电阻接到引脚上第29页,课件共46页,创作于2023年2月第30页,课件共46页,创作于2023年2月程序框图???第31页,课件共46页,创作于2023年2月程序框图第32页,课件共46页,创作于2023年2月数据的拆分
单片机对计的数值要进行数码显示,计得的数是两位的十进数,含有十位和个位,我们要把十位和个位拆开分别送出这样的十位和个位数值到对应的数码管上显示。如何拆开十位和个位?????第33页,课件共46页,创作于2023年2月数据拆分我们可以把所计得的数值对10求余,即可个位数字,对10整除,即可得到十位数字了。数据怎么显示到7段数码管上???第34页,课件共46页,创作于2023年2月数据怎么显示???通过查表程序,查得某个数据的显示字,然后送给相应的I/O口怎么实现查表????1、建立表格2、把表头地址传给??3、哪个指令实现具体的查表操作??4、怎么实现???第35页,课件共46页,创作于2023年2月2程序设计内容
通过查表方式,分别显示出个位和十位数字。第36页,课件共46页,创作于2023年2月按键的去抖动过程为什么要去抖动???怎么去抖动???第37页,课件共46页,创作于2023年2月为什么要去抖动??一般情况下,一个按键按下的时候,总是在按下的时刻
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论