51单片机的简介——定时器、计数器 作者: 时间:2016-11-24 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 8051有两个16位的定时器/计数器T0、T1,8052还有第三个定时器/计数器T2,通过内部编程都可以设定为内部定时器和外部计数器。 1、方式寄存器TMOD 特殊功能寄存器TMOD是TO、T1的工作方式寄存器,其格式如下: TMOD低四位为T0方式字段,高四位为T1方式字段。复位时TMOD的所有位置0。 (1)工作方式选择位M1、M0 定时器/计数器有四种工作方式,它们由M1、M0的取值决定,对应关系如下图: (2) 方式选择位C/T C/T=0为定时器方式,以fosc(晶振频率)的12分频作为计数信号,即每个机器周期定时器加1。 C/T=1为计数器方式,以外部引脚(T0为P3.4,T1为P3.5)上输入的脉冲为输入信号,当外部信号发生负跳变时加1,外部事件计数的最高频率为fosc的1/24。 (3) 门控位GATE 当GATE=1时,由外部中断引脚INT0、INT1和内部TR0、TR1位来启动定时器。当INT0为高电平且TR0置位时,启动定时器T0。定时器T1的启动同T0。 当GATE=0时,仅由TR0和TR1置位来启动定时器T0和T1。 2、控制寄存器TCON 特殊功能寄存器TCON的高4位存放着定时器的运行控制和溢出标志,低4位存放外部中断的触发方式控制位和锁存外部中断请求源。TCON的格式如下: (1)定时器T0的运行控制位TR0 TR0由软件置位或者清0。当门控位GATE=0时,TO计数器仅由TR0控制,TR0=1启动计数,TR0=0时停止。当门控位GATE=1时,T0计数器由INT0和TR0共同控制,当INT0=1且TR0=1时启动T0计数器。 (2)定时器T0溢出标志位TF0 当T0溢出时TF0=1,并向CPU申请中断,CPU响应中断后由硬件将TF0清0,也可以由软件查询方式将TF0清0。 (3)定时器T1的运行控制位TR1 功能同TR0。 (4)定时器T1溢出标志为TF1 功能同TF1。 (5)外部中断源1(INT1、P3.3)中断请求标志IE1 IE1=1时外部中断源1正在向CPU请求中断,当CPU响应该中断时由硬件将IE1清0(下降沿触发方式)。 (6)外部中断源1触发方式选择位IT1 IT1=0时外部中断源1选择电平触发方式,当输入低电平时置位IE1;IT1=1时外部中断源1选择下降沿触发方式,当中断源由高电平变低电平时置位IE1,向CPU请求中断。 (7)外部中断源0(INT0、P3.2)中断请求标志IE0 功能类同IE1。 (8)外部中断源0触发方式选择位IT0 功能类同IT1。 3、定时器工作方式 如上所述,定时器有4种工作方式,它们由TMOD寄存器中的M1、M0两位决定。注意:只有T0才有工作方式3。 (1)工作方式0 当TMOD寄存器中的M1、M0为00时,定时器工作在方式0。下图以定时器T1来示例说明: 计数时,TL1的低5位溢出后向TH1进位,TH1溢出后将TF1置位,并向CPU发出中断请求。注意:在方式0时,TL1只用到了低5位,高3位内容不定不能使用,控制逻辑计数的允许/禁止并不改变计数值。 (2)工作方式1 当TMOD寄存器中M1、M0的值为01时,定时器工作于方式1。工作方式1和工作方式0的唯一区别在于,工作方式1可以实现16位计数,其它都和工作方式0相同。如果以定时器T1为例来图示讲解,可如下: (3)工作方式2 当TMOD寄存器的M1、M0位值为10时,定时器工作于工作方式2。方式2为自动恢复初值的8位计数器,TL1作为8位计数寄存器,TH1作为8位计数常数寄存器,当TL1溢出时,一方面将TF1置位,并向CPU发出中断请求,另一方面将预设在TH1中的常数重新装入TL1,继续计数。重新装入不会影响TH1的内容。其结构简图如下: 在方式2中通过改变TH1的值可以改变计数次数。 (4)工作方式3 方式3只适用于T0,此时T1停止计数。 4、定时器/计数器溢出率的计算 定时器/计数器在工作之前必须先设定计数初始值Ta。初值计数公式如下: 在给定时间t后,求初值的公式如下: 5、总结 对定时器/计数器编程的步骤如下: a、写TMOD,设定工作方式、定时/计数方式、启动哪个定时器(开启相应的门控位GATE); b、将初值写入对于寄存器; c、定时器中断开或关; d、启动定时器,即向TCON写入数据。
评论