单片机定时器的使用
第一部分:51系列定时器
定时/计数器 0 和定时/计数器1都有4种定时模式。
16位定时器对内部机器周期进行技术,机器周期加1,定时器值加1,1MHZ模式下,一个机器周期为1us 。
定时器工作模式寄存器TMOD,不可位寻址,需整体赋值,高4位用于定时器1,第四位用于定时器0。
C/T:为定时器功能选择位,C/T=0对机器周期计数,C/T=1,对外部脉冲计数。
GATE:门控位,GATE=0,软件置位TRn即可启动计时器,GATE=1需外部中断引脚为高电平时才能软件置位TRn启动计时器,一般取GATE=0。
定时器控制寄存器TCON:
TFn:Tn溢出标志位,当定时器溢出时,硬件置位TFn,中断使能的情况下,申请中断,CPU响应中断后,硬件自动清除TFn。中断屏蔽时,该位一般作为软件查询标志,由于不进入中断程序,硬件不会自动清除标志位,可软件清除。
TRn:计时器启动控制位,软件置位TRn即可启动定时器,软件清除TRn关闭标志位。
IEn:外部中断请求标志位。
ITn:外部中断出发模式控制位,ITn=0为低电平触发,ITn=1为下降沿触发。
中断允许控制寄存器IE
EA(IE.7):全局中断控制位。EA=1开全局中断,EA=0关闭全局中断。
IE.6无意义。
ETn:定时器中断使能控制位。置位允许中断,清除禁止中断。
ES:串行接收/发送中断控制位,置位允许中断。
EXn:外部中断使能控制位。置1允许,清0禁止。
中断优先级控制寄存器IP,复位后为00H
IP.6,IP.7保留,无意义。
PT2:定时器2中断优先级控制,置1设为高优先级,清0置位低优先级。
PS:串行中断优先级控制位。
PT1/0:定时器1/0优先级控制位,置1高,清0低。
PXn:外部中断优先级控制位。
当有同级中断同时响应,按IE0->TF0->IE1->TF1-IE0->RI+TI->TF2顺序依次响应。
定时器模式0的使用 TMOD&=0xf0/TMOD&=0x0f
TL0高3位不用,低5位溢出时,直接向TH0进位。
通过设置TH0和TL0初值(0~8191),使计数器从初值开始加1,溢出后申请中断,溢出后需重新设置初值,否则将从0开始加1计数。
T=(模值-初值)*机器周期,初值为8191位技术最小值1,初值为0为计数最大值8191。
定时器模式1(TMOD=0xf1/TMOD=0x1f)
模式1和模式0功能相同,但模式1位16位。
定时器模式2(TMOD=0x2f/0xf2)
模式2构成自动重装的8位定时器,计数器的范围为0~256
TH作为初值寄存器,TL作为计数寄存器。TL溢出时,置位中断标志位,并且把TH中的值自动装入TL。
定时器模式3,模式3只适用于定时器0
模式3时定时器构成2个独立的8位计数器。
此模式下,TL0和模式0,1状态一样可以做计数和定时。TH0只能用于定时不能用于计数,并占用T1的资源TF1和TR1。
定时器2的使用
在AT89S52,AT89S53和AT89S8253中增加了定时器2的使用。
T2和TH2,TL2,T2CON,T2MOD,捕捉重装寄存器RCAP2L和RCAP2H
T2控制寄存器
TF2:溢出中断标志位。
RCLK:串行口接收时钟选择位,用它可以选择T1或T2作为串行口发送时钟。RCLK=1,T2作为串行口时钟,RCLK=1,T1作为串口发送时钟。
EXEN2:T2外部允许控制位,EXEN2=1,若T2未用于波特率发生器,T2EX引脚出现负跳变时将导致T2发生捕获或充装载。并置位EXF2标志位请求中断。该位清0,外部引脚无效。
C/T2:定时或技术方式选择位。
CP/RL2:T2捕获或重装控制位,该位为1,选择捕获功能,此时若EXEN2=1,T2EN引脚出现负跳变将发生捕获操作,即把T2H和T2L内容传送给RCAP2H和RCAP2L。该位为0,选择重装功能,此时若T2溢出,或EXEN2=1且T2EN引脚上出现负跳变,都会把RCAP2H和RCAP2L的值送入T2H和T2L。
T2模式控制位
T2OE:T2输出允许控制位。T2OE=1允许时钟输出到T2/P1.0引脚,T2OE=0禁止输出。
DECN:加/减计数控制位,该位为1,允许T2作为加减计数器使用,方向由T2EN控制,T2EN为1,进行加计数,T2EN位0进行减计数。该位置0,T2自动向上计数。
T2工作模式的选择由RCLK,TCLK,CP/RL2,T2OE,CT2,和TR2来决定。