定时器

8051定时器 两个定时/计数器都有定时和计数的功能，它们可用于定时控制、延时、对外部事件计数 和检测等场合.

当设置为计数功能时，计数脉冲从外部输入. T0和T1引脚为输入端，计数的脉冲为从1到0的跳变. 因为需要对两个电平进行采样，因此一次采样至少需要两个机器周期.

两个16 位定时器实际上都是16 位加1 计数器. 其中，T0 由2 个8 位特殊功能寄存器TH0 和TL0 构成；T1 由TH1 和TL1 构成. 每个定时器都可由软件设置为定时工作方式或计数工作方式. 这 些功能都由特殊功能寄存器（SFR）TMOD 和TCON 所控制.

TMOD和TCON控制计时器的工作. TMOD控制的是计时器的工作模式. 以下是TMOD的结构.



M1和M0主要用来选择工作方式. M1=1 ，M0=1使用T0分为两个计数器使用，T1可以用作串行通讯或其他用途.

C/T 定时器和外部计数方式选择 C/T＝0 为定时器方式. 定时器的计数脉冲来自晶振的1/12 分频. 定时器是对机器周期进行计数的. C/T＝1 为计数器方式. 计数器的计数脉冲来自T0（P3.4）或T1(P3.5)的外部脉冲. GATE 门控位 GATE 控制定时/计数器的计数是否受外部引脚的控制. GATE＝1 时，定时/计数器的计数受外 部引脚输入电平的控制（INT0 控制T0，INT1 控制T1），只有当这两个引脚为高电平且由软 件使TR0（或TR1）置1 时，才能启动定时器. GATE＝0 时，定时/计数器的工作不受外部引 脚的控制.



TCON 的低4 位控制外部中断. TCON 的高4 位控制位的含义如下： 1. TR0——定时器T0 的运行控制位 可通过软件置1 或清0 来关闭或启动T1. 如果GATE＝1,则需要TR0＝1 且INT0 为高时 才允许T0 对外部进行计数. 2. TF0——定时器T0 溢出标志位 当T0 计数溢出，由硬件对TF0 置位，当中断响应结束由硬件对TF0 清0,该位也可由软 件清0. 3. TR1——定时器T1 的运行控制位 可通过软件置1 或清0 来关闭或启动T1. 如果GATE＝1,则需要TR1＝1 且INT0 为高时 才允许T0 对外部进行计数. 4. TF1——定时器T1 溢出标志位 当T1 计数溢出，由硬件对TF1 置位，当中断响应结束由硬件对TF1 清0,该位也可由软 件清0.

定时器计时设定： T0为13位定时器： T=(2^13-T0初值)*振荡周期*12 当采用12MHZ晶振时，计算就相当方便了.