51单片机的定时计数器讲义.ppt
文本预览下载声明
12分频后的内部脉冲信号计数。由于时钟频率是定值,所以可根据计数值可计算出定时时间。 计数器的起始计数都是从计数器初值开始的。单片机复位时计数器的初值为0,也可用指令给计数器装入一个新的初值。AT89S51的定时器/计数器属于增1计数器。 6.1.1 工作方式控制寄存器TMOD 用于选择定时器/计数器的工作模式和工作方式,字节地址为89H,不能位寻址,格式如图6-2所示。 ?0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行计数。 1:为计数器工作模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。 6.1.2 定时器/计数器控制寄存器TCON 字节地址为88H,可位寻址,位地址为88H~8FH。格式如图6-3所示。 (1) GATE?=?0,A点(见图6-4)电位恒为1,B点电位仅取决于TRx状态。TRx?=?1,B点为高电平,控制端控制电子开关闭合,允许T1(或T0)对脉冲计数。TRx?=?0,B点为低电平,电子开关断开,禁止T1(或T0)计数。 (2) GATE?=?1,B点电位由 (x?=?0,1)的输入电平和TRx的状态这两个条件来确定。当TRx?=?1,且 =1时,B点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。故这种情况下计数器是否计数是由TRx和 两个条件来共同控制的。 6.2.2 方式1 当M1、M0=01时,定时器/计数器工作于方式1,这时定时器/计数器的等效电路逻辑结构如图6-5所示。 方式1和方式0的差别仅仅在于计数器的位数不同,方式1为16位计数器,由THx高8位和TLx低8位构成(x?=?0,1),方式0则为13位计数器,有关控制状态位的含义(GATE、C/ 、TFx、TRx)与方式0相同。 6.2.3 方式2 方式0和方式1的最大特点是计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是针对此问题而设置的。 当M1、M0为10时,定时器/计数器处于工作方式2,这时定时器/计数器的等效逻辑结构如图6-6所示(以定时器T1为例,x=?1)。 定时器/计数器的方式2为自动恢复初值(初值自动装入)的8位定时器/计数器。 TLx(x?=?0,1)作为常数缓冲器,当TLx计数溢出时,在溢出标志TFx置“1”的同时,还自动将THx中的初值送至TLx,使TLx从初值开始重新计数。定时器/计数器的方式2工作过程如图6-7所示。 TF0 ,而TH0被固定为一个8位定时器(不能作为外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。 2.T0工作在方式3时T1的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工作在方式3。T0处于工作方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。 (4)T1设置在方式3 当T0设置在方式3,再把T1也设成方式3,此时T1停止计数。 6.3 对外部输入的计数信号的要求 当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入引脚T0或T1。 当输入信号产生负跳变时,计数器的值增1。 每个机器周期的S5P2期间,都对外部输入引脚T0或T1进行采样。如在第一个机器周期中采得的值为1,而在下一个机器周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1 期间,计数器加1。由于确认一次负跳变要花2个机器周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。 例如,选用6MHz频率的晶体,允许输入的脉冲频率最高为250kHz。如果选用12MHz频率的晶体,则可输入最高频率为500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某一给定电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。 (2)初始化程序设计 采用定时器中断方式工作。包括定时器初始化和中断系统初始化,主要是对寄存器IP、IE、TCON、TMOD的相应位进行正确的设置,并将计数初值送入定时器中。 (3)程序设计 中断服务子程序除了完成所要求的产生方波的工作之外,还要注意将计数初值重新装入定时器,为下一次产生中断做准备。 本例,主程序用一条转至自身的短跳转指令来代替。 * 参考程序如下: ORG 0000H ;程序入口 RESET: AJMP MAIN ;转主程序 ORG 000BH ;T0中断入口 AJMP IT0P ;转T0中断处理程序IT0P
显示全部