资源预览内容
第1页 / 共75页
第2页 / 共75页
第3页 / 共75页
第4页 / 共75页
第5页 / 共75页
第6页 / 共75页
第7页 / 共75页
第8页 / 共75页
第9页 / 共75页
第10页 / 共75页
亲,该文档总共75页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第6章 定时器/计 数器 在测控系统中,常常需要有实时时钟和计 数器,以实现定时控制以及对外界事件进行计 数。MCS-51内部的两个16位定时器/计数器就 具有这两种功能。本章将介绍他们的结构、原 理、工作方式及使用方法。 n5.1 定时器/计数器结构n5.2 定时器/计数器的四种工作方式n5.3 定时器/计数器对输入信号的要求n5.4 定时器/计数器编程和应用5.1 定时/计数器结构n5.1.1 定时/计数器的结构与原理重点:定时的实质,定时与计数的关 系n5.1.2 定时/计数器方式寄存器TMODn5.1.3 定时/计数器控制寄存器TCONn5.1.4 定时/计数器的初始化返回本章首 页5.1.1 定时/计数器结构与原 理定时器/计数器简称定时器,8051单片机 内部有2个16位的可编程定时/计数器:定时器 0(T0)和定时器1(T1)。可编程是指其功 能(如工作方式、定时时间、启动方式等)可 以由指令来确定和改变。在定时器/计数器中除了有两个16位的计 数器之外,还有2个特殊功能寄存器(控制寄 存器TCON和方式寄存器TMOD)。1.定时器/计数器的结构这些寄存器之间是通 过内部总线和控制逻 辑电路连接起来的。.从结构图可以看出:16位的定时器/计数器分别由两个专用寄 存器组成,即T0由TH0和TL0构成;T1由 TH1和TL1构成。这些寄存器由于存放定 时和计数初值。此外,内部还有一个8位 的TMOD和一个8位的TCON。TMOD 主 要用于选定定时器的工作方式;TCON主 要用于控制定时器的启动与停止。2.定时器/计数器的原理16位的定时器/计数器的实质上是 一个加1的计数器,其控制电路受软件 控制、切换。计数的次数和时间之间是相关的。只要计数脉冲的 间隔相等,计数 值就代表时间的 流逝当定时器/计数器为定时工作方式时,加1 信号由振荡器的12分频产生,即每过一个机器 周期,计数值增1,直至计满溢出为止。显然 ,定时器的定时时间与系统的振荡频率有关。 由于一个机器周期等于12个振荡周期,所以 计数频率 fcount=1/12fosc例:晶振为12MHZ ,则计数周期为T=1/(12*106)Hz*1/12=1微秒 最短的定时周期当定时器/计数器为计数工作方式时, 通过引脚T0和T1对外部信号计数,外部脉 冲的下降沿触发计数采样过程:当输入脉冲信号从1到0的负跳变时,计数 器就自动加1。 由于检测一个由1到0的跳变需 要两个机器周期,所以 计数的最高频率为振荡 频率的1/24。为了确保给定电平在变化前至少 被采样一次,外部计数脉冲的高低电平均需保 持一个机器周期以上。(占空比没有限制)在每个机器周期的S5P2期间采样引脚。结论:单片机中的定时器和计数器是一个东 西,只不过计数器用来记录外界发生的事 情,而定时器则是由单片机提供的一个非 常稳定的计数源。综上所述,我们已知定时器/计数器是一种 可编程部件,所以在其开始工作之前,CPU必须将一些命令(控制字)写入定时器/计数器。 这个过程称为定时器/计数器的初始化。当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运 行,不再占用CPU的操作时间,除非定时器计 数溢出,才可能中断CPU当前操作。返回本 节5.1.2 定时器/计数器方式寄 存器TMOD(89H)GATEC/T M10MGATE C/T1M0M控 制 T 1控 制 T 089H和T 类同01M0M00011011方 式方式0 13位方式1 16位方式2 自动重装 方式3 适用T001定时器模式 计数器模式01与INT 无关00与INT 有关 图5-2 定时器工作模式寄存器TMODM1M0:方式选择位C/T : 功能选择位GATE: 门控位返回本 节GATE=1时,若TR1=1,并且 INT1=1,允许T0计数若TR1=0,或INT1=0,都禁止 T0计数 GATE=0,若TR1=1,允许计数 ;若TR1=0,禁止计数 返回由于在不同方式下计数器位数不同 ,因而最大计数值(量程)也不同。方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:定时器分成两个8位计数器,两 个M均256返回TR1(0):运行控制位5.1.3 定时器/计数器控制寄 存器TCON(88H)图5-3 定时器工作模式寄存器TCON TF1(0): 溢出标志返回本 节5.1.4 定时器/计数器的初始 化初始化的步骤如下: n确定工作方式-对TMOD赋值 n置定时或计数的初值-可直接写入 TH0(1),TL0(1) n根据需要开放定时器/计数器的中断 n启动定时器/计数器。当实现了启动要求之后,定时器就按规 定的工作方式和初值开始计数或定时。因为定时器/计数器是作“加1”计数,并在计 满溢出时产生中断,初值X可以这样计算:X = M - 计数值(计数次数)例:在6MHZ主频下,要求产生1ms的定时,计算初 值 分析: 因为定时器每“加1”一次所需的时间为2s,如果 要产生1ms的定时,需加500次,500即为计数值。方式1下工作,初值 X =M-计数值=65536- 500=FE0CH返回本章首 页5.2 定时器/计数器的4种工 作方式由上节可知,通过对TMOD中的M1、 M0的设置,可以选择四种工作方式。也就 是每个定时器可构成4种电路结构模式。在模式0、1和2,T0和T1的工作方 式相同,在模式3,两个定时器的方式不 同。下面以T1为例,分述各种工作方式 的特点和用法。1方式016位寄存器中只用 13位,其中TL1的高 三位未用。2方式116位寄存器全用3方式2这种工作方式可省去用户软件中重装常数的程序 ,并可产生相当精度的定时时间。4 方式 3该方式只适用于定时器T0,T0 被拆成两个独立的8位计数器 TH0和TL0。1.方式3下的T02.T0工作在方式3下T1的各种 工作方式nT0工作在方式3时,T1可定为方式0、方 式1和方式2,用来作为串行口的波特率发 生器,或不需要中断的场合.T1工作方式0nT1工作方式 1(T0工作在方式3时T1为方式1的工作示意图)nT1工作方式 2(T0工作在方式3时T1为方式2的工作示意图)nT1工作方式3T1的控制字M1M0=11时,T1停止计数注意:在T0为方式3时,T1运行的控制 条件只有2个,即C/T和M1,M0.返回本章首 页5.3 定时器/计数器对输入信 号的要求n(1)当T0或T1被选定为定时工作模式时, 定时器 /计数器的输入脉冲的周期与机器周期一样,为 时钟振荡频率的1/12.若 f振荡=12MHz,则计数速 率为1MHzn(2)当T0或T1用作计数器时,计数脉冲来自相应 的外部输入引脚.一次负跳变要花2个机器周期, 即24个振荡周期,因此外部输入的计数脉冲的 最高频率为系统振荡频率的1/24.如:f振荡 =12MHz,则可输入500KHz.n注:外部输入信号脉冲宽度至少保持1个机器周 期.返回本章首 页6.4 定时/计数器及中断系统 综合应用【例6.1】设MCS-51单片机系统时钟 频率CLK为6MHZ,要在P1.0引脚上 输出1个周期为1毫秒的方波,占空 比为50%的方波信号.如下图:P1. 0 1ms1msT=2ms6.4 定时/计数器及中断系统 综合应用【例6.1】设MCS-51单片机系统时钟 频率CLK为6MHZ,要在P1.0引脚上 输出1个周期为1毫秒的方波,占空 比为50%的方波信号.如下图:P1. 0 1ms1msT=2msn解:(1)计算初值:n机器周期=2s=2*10-6sn(216-X)210-6=110-3,即(216- X)=500,X=65036nX=FEOCH=1111111000001100Bn则TH0=0FEH,TL0=0CHn(2)初始化程序:n对定时器初始化和中断初始化n即对IP,IE,TCON,TMOD的相应位设置,并 将计数初值装入定时器.如:nTMOD=01H,定时方式1nIP=00H,IE=92H,TCON=10H即 ET0=1,EA=1, TR0=1方法一:中断方式:n ORG 0000Hn RESET : AJMP MAINn ORG 000BHn AJMP IT0Pn ORG 0100Hn MAIN : MOV SP , #60Hn MOVTMOD,#01HnACALL PT0M0nHERE : AJMP HEREnPTOM0 : MOV TL0 , #0CHn MOV TH0 , #0FEHn SETB TR0n SETB ET0n SETB EAn RETnITOP : MOV TL0 , #0CHn MOV TH0 , #0FEHn CPL P1.0n RETI 方法二:软件查询n ORG0000Hn MOV TMOD,#01H nLOOP:MOV TH0,#0FEHn MOV TL0,#0CHn SETB TR0nLOOP1:JNB TF0,LOOP1n CLRTR0n CPLP1.0n SJMP LOOP【例6.2】设MCS-51单片机系统时钟频率 CLK为6MHZ,请编出利用定时/计数器 T0在P1.0引脚上产生周期为2秒,占空比 为50%的方波信号的程序 (1)主程序 任务:1)T0工作方式的设定: 选择方式1(16 位方式) (最大定时131ms)2)定时常数的设定: TC=216-100ms/2s =15536=3CB0H 每隔100ms中断一次,中断10次为1s即:TH0应装3CH,TL0应装B0H。 3)中断管理: 允许T0中断,开放总中断即:IE应装10000010B。4)启动定时器T0: SETBTR05)设置软件计数器初值:(如使用R7) 即R7应装0AH6)动态停机:SJMP$主程序如下: MAIN:MOVTMOD,#01H;设定T0为 方式1 MOV TH0,#3CH;装入定时常数高 8位 MOV TL0,#0B0H;装入定时常数低 8位 MOV IE,#82H;开放T0中断 SETBTR0;启动T0 MOV R7,#0AH ;设置软件计数器 SJMP$(2)中断服务程序 任务:1)恢复T0常数; 2)软件计数器减1; 3 )判断软件计数器是否为0。为0时,改变P1.0状 态,并恢复软件计数器初值;不为0时中断返回。 程序如下: TOINT:MOV TL0,#0B0H;恢复定时常数 MOV TH0,#3CH; DJNZR7,NEXT CPL P1.0 MOV R7,#0AH NEXT:RETI完整程序如下:ORG 0000H MOVTH0, #3CH AJMP MAINMOV TL0, #0B0H ORG 000BH MOV IE,#82H AJMP TOINT SETB TR0 ORG 0030H MO
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号