硬件结构:
电路图:
T0,T1均由两个{TH0/1(高位),TL0/1(低位)}8位SFR(Special Function Register)寄存器构成
TMOD用于设置定时器/计数器的工作方式
TCON用于启动和停止定时器/计数器的计数,并控制定时器的工作状态
工作模式
定时器:由系统内部的时钟晶振输出脉冲的1/12,当每来一个内部脉冲,对应的计数单元就加一,当加到对应模式的最大值,TF0/1置1,向cup发出中断请求。
计数器:由外部脉冲源提供,当每来一个外部脉冲,计数器就加1,当加到计数器全为1时候,位于TCON寄存器中的TF0/1(溢出标志位)置1,向cup发出中断请求。
(如何选择定时器/计数器?见寄存器板块)
寄存器
定时器/计数器控制寄存器TCON(可按位寻址):
定时器/计数器工作方式寄存器TMOD(不可按位寻址):
寄存器结构:
寄存器各位功能:
特殊说明:当为计数器模式时且GATE=1,此时计数的停止与否受INTx位控制,当INTx=1(高电平)开始计数,INTx=0(低电平)停止计数。
定时器/计数器工作方式:
1--13位定时器/计数器(最大计数:2^13=8192,M1M0=00)
由TLx的低5位(高3位未使用),THx的8位组成,TLx低5位溢出时向THx进位,,当THx溢出时候,TCON中的TFx置1,向cup发出中断请求。
设置初值:
设单片机机器周期为T,产生一次中断时间是t,那么需要的计数次数N=t/T;
THx=(8192-N)/2^5,TLx=(8192-N)%2^5;
2--16位定时器/计数器(最大计数次数:2^16=65536,M1M0=01)最常用
THx的8位和TLx的8位组成
设置初值:
N=t/T;
THx=(65536-N)/2^8,TLx=(65536-N)%2^8;
3--8位自动重装初值方式(最大计数:2^8=256,当计数器溢出,自动将上次设置的初值重装--适合做比较精确的脉冲信号发生器)
计数的次数:N=t/T
THx=256-N,TLx=256-N;
(晶振频率要选择12的整数倍,因为定时器的频率是晶振频率的1/12,如果使用11.0592MHZ,误差比较大)
4--将T0分为两个8位计数器(最大计数:256,T1被禁用了)
TL0是正常的8位定时/计数器,计数溢出后,将TF0位置1,向cup发出中断请求,之后重装初值。
TH0也被固定为一个8位定时/计数器,计数溢出后,将TF1置1,向cup发出中断请求,之后重装初值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)