《单片机及嵌入式系统原理》单片机课件 第九章 51单片机定时计数器_第1页
《单片机及嵌入式系统原理》单片机课件 第九章 51单片机定时计数器_第2页
《单片机及嵌入式系统原理》单片机课件 第九章 51单片机定时计数器_第3页
《单片机及嵌入式系统原理》单片机课件 第九章 51单片机定时计数器_第4页
《单片机及嵌入式系统原理》单片机课件 第九章 51单片机定时计数器_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章

51单片机定时/计数器

本章内容9.1概述(重点)9.251单片机定时/计数器工作原理(重点)9.351单片机定时/计数器的工作方式(重点)9.4单片机定时/计数器的应用(重点)9.1概述(1)定时与计数的概念定时:在CPU内部时钟信号作用下,定时时间达到后从CPU的输出引脚输出一定的提示信号。注意,定时的本质就是计数,只不过计数的脉冲来源于CPU内部的时钟。计数:对CPU芯片外部引脚输入的脉冲个数进行计数,当计数个数到达后从CPU的输出引脚输出一定的提示信号。(2)定时的方法软件定时:重复执行一些指令获取定时。硬件定时:采用数字电路中的分频器将系统时钟进行适当的分频产生需要的定时信号,如常用的555定时。可编程定时:在计算机系统中由微处理器的时钟信号提供时间基准进行定时。9.1概述(3)初始值

单片机内部的定时器有一个16位的特殊功能寄存器用来存放计数的初始值,计数器最大的计数值范围是1-65536.

在实际应用中经常会有少于65536个计数脉冲的要求,这就涉及到单片机的计数初始值问题。比如需要计5000个脉冲,对于加法计数器而言,我们将初始值设为60535,那么单片机计数5000个脉冲后就达到65535,再加1产生溢出,CPU输出提示信号;对于减法计数器而言,将初始值设为5000,当单片机计数5000个脉冲后,再减1便到达65535从而产生溢出,CPU输出提示信号。

9.251单片机定时/计数结构相关寄存器

9.251单片机定时/计数结构9.3工作方式

T0有四种工作方式:方式0、方式1、方式2和方式3;T1有三种工作方式:方式0、方式1、方式2。

方式09.3工作方式

方式19.3工作方式

方式29.3工作方式

初始值C及加载(1)方式0方式0下的计数溢出值为8192(213)。则:计数次数=8192-计数初值定时时间=(8192-计数初值)×机器周期比如,如果需要计数100个脉冲,则初始值为:C=8192-100=8092D=1F9CH另外一种方式,由于单片机的定时/计数器是加1计数,当计数达到后回0时,计数初值应为负数,用补码表示,而求补码的方法是模减去该负数的绝对值。比如,方式0下的模是2000H(8192D),如果需要计数100个脉冲,则初始值为:C=(100)补=(64H)补=2000H-64H=1F9CH

9.3工作方式

初始值C及加载(1)方式1方式1下的计数溢出值为65536(216)。则:计数次数=65536-计数初值定时时间=(65536-计数初值)×机器周期比如,如果需要计数100个脉冲,则初始值为:C=65536-100=65436D=FF9CH或者:C=(100)补=(64H)补=10000H-64H=FF9CH方式1下的初始值加载方式很简单,只需将初始值低8位装入TL0,高8位装入TH0即可。9.3工作方式

初始值C及加载(1)方式2方式2下的计数溢出值为256(28)。则:计数次数=256-计数初值定时时间=(256-计数初值)×机器周期比如,如果需要计数100个脉冲,则初始值为:C=256-100=156D=9CH或者:C=(100)补=(64H)补=100H-64H=9CH 方式2下的初始值加载方式很简单,只需将初始值分别装入TL0和TH0即可。9.4定时/计数器的应用

初始化编程查询方式:(1)确定工作方式及启动控制方式,将方式控制字写入特殊功能寄存器TMOD。(2)计算定时器或计数器的计数初始值,送人TH0、TL0或TH1、TL1中。(3)启动定时/计数器。中断方式:(1)确定工作方式及启动控制方式,将方式控制字写入特殊功能寄存器TMOD。(2)计算定时器或计数器的计数初始值,送人TH0、TL0或TH1、TL1中。(3)允许定时/计数器中断。(4)启动定时/计数器。9.4课题:嵌入式打标机中定时/计数器的应用

【例9-1】嵌入式打标机中单片机的P1.0引脚输出周期为2ms的方波信号,设fosc=12MHz。

fosc=12MHz,则机器周期为1us。要输出2ms的方波,则需要每隔1ms改变一次P1.0的输出状态即可。用T1的方式1定时,则初始值:X=216-t/T=216-1000/1=FC18H(1)查询方式: START:MOVTMOD,#10HMOVTL0,#18HMOVTH0,#0FCHSETBTR0LOOP:JBCTF0,PTF0SJMPLOOPPTF0:CPL P1.0MOVTL0,#18HMOVTH0,#0FCHSJMPLOOP(2)中断方式: ORG 0000HAJMP MAINORG 001BHAJMP QUFANORG 0100HMAIN:MOV SP,#60HMOVTMOD,#10HMOVTL0,#18HMOVTH0,#0FCHSETBEASETBET0SETBTR0SJMP$QUFAN:CPLP1.0MOVTL0,#18HMOVTH0,#0FCHRETI【例9-2】利用定时器方式2对外部脉冲计数,要求每计满110次,将P1.0端取反.外部信号由T1引脚输入,每发生一次负跳变计数器加1,每输入110个脉冲,计数器发生溢出中断,中断服务程序将P1.0取反一次。T1计数方式2的方式字为:TMOD=60H。TMOD不用的位一般取0。计算T1的计数初值:X=28-110=146=92HORG0000HAJMP MAINORG001BH;中断服务程序入口CPLP1.0;对P1.0取反RETI;中断返回ORG0100HMAIN:MOVTMOD,#60H;置T1方式2计数MOVTL1,#92H;赋初值MOVTH1,#92HMOVIE,#88H;定时器T1开中断SETBTR1;启动计数器HERE:SJMPHERE;等待中断9.4定时/计数器的应用

【例9-3】课题:嵌入式打标机中T1门控位测试一个正脉冲的宽度。将正脉冲从INT1(P3.3)引脚输入,将T1定为定时器方式1,计数初值为0,GATE程控为1,置TR0为1。一旦INT1(P3.3)引脚出现高电平即开始计数,直到出现低电平,然后读取T0的计数值即可。测试过程如图所示。INT1START:MOVTMOD,#90H;T1工作于定时器方式1,GATE置1 MOVTL1,#00H MOVTH1,#00HWAIT1:JBP3.3,WAIT1;等待INT1变低 SETBTR1;启动定时器计数T1,但此时T1没有工作WAIT2:JNBP3.3,WAIT2;等待INT1升高WAIT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论