单片机入门第六课时_第1页
单片机入门第六课时_第2页
单片机入门第六课时_第3页
单片机入门第六课时_第4页
单片机入门第六课时_第5页
免费预览已结束,剩余11页可下载查看

下载本文档

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

文档简介

1、单片机入门第六课时电子爱好者协会 林清山 定时/计数器定时/计数器控制寄存器定时/计数器运行控制定时/计数器工作方式通常实现定时/计数有3种主要方法:软件定时,让机器执行一个没有目的程序段,只是为了磨时间。这种方法定时占用CPU执行时间,降低了CPU利用率。数字电路硬件定时:采用小规模集成电路器件如555,外接定时部件(电阻和电容)构成。这样的定时电路简单,但要改变定时范围,必须改变电阻和电容,这种定时电路在硬件连接好以后,修改不方便。可编程定时/计数器是硬件定时,又很容易地通过软件来确定和改变它的定时值。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。

2、51型有两个十六位定时/计数器T0、T1,四种工作方式。 51系列单片机的定时/计数器有几个相关的特殊功能寄存器:方式控制寄存器TMOD;加法计数寄存器TH0、TH1 (高八位) TL0、TL1 (低八位);定时/计数到标志TF0、TF1(中断控制寄存器TCON)定时/计数器启停控制位TR0、TR1(TCON)定时/计数器中断允许位ET0、ET1(中断允许寄存IE)定时/计数器中断优先级控制位PT0、PT1(中断优IP) 1. 定时工作方式 设置为定时工作方式时,定时器计数的脉冲是由51单片机片内振荡器经12分频后产生的。 每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。如

3、:当8051采用12MHz晶体时,每个机器周期为1s,计5 个机器周期即为5 s,即定时5 s 。 2. 计数工作方式 设置为计数工作方式时,定时/计数器对引脚 P3.4 (T0)和P3.5 (T1)输入的外部脉冲信号计数。 测量过程是: CPU前一个机器周期采样脉冲值为高,下一个机器周期采样脉冲值为低,则计数器加 1。定时计数器方式控制寄存器TMOD 定时计数器的工作方式由TMOD的各位控制,TMOD的格式为: TMOD的低四位为T0的方式字,高四位为T1的方式字。TMOD不能位寻址,必须整体赋值。TMOD各位的含义如下:1. 工作方式选择位M1、M0 M1、M0的状态决定定时器的工作方式:

4、D7D6D5D4D3D2D1D0GATEC/T M1 M0GATEC/TM1M02. 定时和外部事件计数方式选择位C/T C/T0为定时器方式。 C/T1为外部事件计数器方式M1M0 功 能 说 明 00110101方式0,为13位的定时计数器方式1,为16位的定时计数器方式2,为常数自动重装入的8位定时计数器方式3,T0分为两个8位定时计数器, T1在该方式时停止 定时器运行控制位在特殊功能寄存器 TCON中存放着定时器的运行控制位和溢出标志位。1定时器T0运行控制位TR0TR0(TCON.4)由软件置位和清零。 当GATE=0时,T0的计数仅由TR0控制,TR0=1时允许T0计数,TR0=

5、0时禁止T0计数,这时,定时器仅由软件控制。 当GATE=1时,仅当TR0=1且P3.2的输入信号为高电平时T0才计数,当TR0为0或P3.2的输入为低电平时都禁止T0计数,这时,若置TR0为1,则定时器仅由引脚信号的状态控制启停,因而是硬件控制的。用TR0和INT0一起控制定时器的启停,则为软、硬件配合控制。2定时器 T1运行控制位TR1 定时/计数器的工作方式MCS51的定时器有方式0、方式1、方式2和方式3这4种工作方式。1.方式0当M1M0=00时,定时器工作于方式0。方式 0为13位的计数器,由TL0的低5位和TH0的8位组成,TL0低5位计数溢出时向TH0进位,TH0计数溢出时置位

6、溢出标志TF0。若T0工作于定时方式,设计数初值为a,晶振频率为12MHz,则T0从初值开始计数到溢出的定时时间为 t(213a)1S。2. 方式1当M1M0=01时,定时器工作于方式1。T1工作于方式1时,由TH1作为高8位,TL1作为低8位,构成一个十六位的计数器。若T1工作于定时方式1,计数初值为 a,晶振频率为12MHz,则T1从计数初值计数到溢出的定时时间为t =(216a)S。3. 方式2M1M0=10时,定时器计数器工作于方式2,方式2为自动恢复初值的 8位计数器。TL1作为8位计数器,TH1作为计数初值寄存器。 t =(28a)S。*4.方式3 M1M0=11时,被设置为方式3

7、。定时/计数器应用举例使用MCS51单片机的定时/计数器的步骤是:1设定TMOD,确定: 工作状态(用作定时器/计数器); 工作方式; 控制方式。 如:T1用于定时器、方式1,T0用于计数器、方式2,均用软件控制。则TMOD的值应为:0001 0110,即0 x16。2设置合适的计数初值,以产生期望的定时间隔。由于定时/计数器在方式0、方式1和方式2时的最大计数间隔取决于使用的晶振频率fosc,如下表所示,当需要的定时间隔较大时,要采用适当的方法,即将定时间隔分段处理。 计数初值的计算方法如下,设晶振频率为fosc,则定时/计数器计数频率为fosc/12,定时/计数器的计数总次数T_all在方

8、式0、方式1和方式2时分别为213 = 8192、216 = 65536和28 = 256,定时间隔为T,计数初值为a,则有 T = 12(T_all a)/fosc a = T_all Tfosc/12 a = Tfosc/12 (注意单位) THx = a / 256; TLx = a % 256;p1296MHz8MHz10MHz12MHz方式016.384ms 12.288ms 9.83ms 8.192ms 方式1131.072ms 98.304ms 78.643ms 65.536ms 方式20.512ms 0.384ms 0.307ms 0.256ms 3确定定时/计数器工作于查询方

9、式还是中断方式,若工作于中断方式,则在初始化时开放定时/计数器的中断及总中断: ET0 = 1; EA = 1;还需要编写中断服务函数: void T0_srv(void) interrupt 1 using 1 TL0 = a % 256; TH0 = a / 256; 中断服务程序段 4启动定时器:TR0(TR1)= 1。 如图所示,P1中接有八个发光二极管,编程使八个管轮流点亮,每个管亮100ms,设晶振为6MHz。7.4.3 应用编程举例练习: 从P3.0输出方波信号,周期为50ms。 采用定时/计数器T0用于定时器,定时间隔为25ms,软件控制,方式1,中断方式。设fosc = 6MHz。 定时计数初值为:a = -0.025*6000000/12= -12500#include “reg51.h”void main() TMOD = 0 x01; TH0 = -12

温馨提示

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

评论

0/150

提交评论