AT89S51定时器/计数器的结构
AT89S51单片机的定时器/计数器结构如下图所示 , 定时器/计数器T0由特殊功能寄存器TH0、TL0构成 , 定时器/计数器Tl由特殊功能寄存器TH1、TL1构成 。
两个定时器/计数器都具有定时器和计数器两种工作模式 , 4种工作方式(方式0、方式1、方式2和方式3) 。定时器/计数器属于增1计数器 。
特殊功能寄存器TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式 。特殊功能寄存器TCON用于控制T0、T1的启动和停止计数 , 同时包含了T0、T1的状态 。T0、T1不论是工作在定时器模式还是计数器模式 , 实质都是对脉冲信号进行计数 , 只不过是计数信号的来源不同 。计数器模式是对加在T0(P3.4)和Tl(P3.5)两个引脚上的外部脉冲进行计数(如上图所示) , 而定时器工作模式是对单片机的时钟振荡器信号经片内12分频后的内部脉冲信号计数 。由于时钟频率是定值 , 所以可根据对内部脉冲信号的计数值计算出定时时间 。
计数器的起始计数都是从计数器的初值开始 。单片机复位时计数器的初值为O , 也可用指令给计数器装入一个新的初值 。
工作方式控制寄存器TMOD
AT89S51单片机的定时器/计数器工作方式寄存器TMOD用于选择定时器/计数器的工作模式和工作方式 , 字节地址为89H , 不能位寻址 , 其格式如下图所示 。
8位分为两组 , 高4位控制Tl , 低4位控制T0 。
下面对TMOD的各位给出说明 。
(1) GATE:门控位 。
GATE=0时 , 仅由运行控制位TRx(x=0 , 1)来控制定时器/计数器运行 。
GATE=1时 , 用外中断引脚(INT0(的反)INTI(的反))上的电平与运行控制位TRx共同来控制定时器/计数器运行 。
(2) M1、M0:工作方式选择位 。
Ml、MO共有4种编码 , 对应于4种工作方式的选择 , 见下表 。
表 M1、M0工作方式选择
(3) C/T(的反):计数器模式和定时器模式选择位 。
C/T(的反)=0 , 为定时器工作模式 , 对单片机的晶体振荡器12分频后的脉冲进行计数 。
C/T(的反)=1 , 为计数器工作模式 , 计数器对外部输入引脚TO(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数 。
定时器/计数器控制寄存器TCON
TCON的字节地址为88H , 可位寻址 , 位地址为88H~8FH 。TCON的格式如下图所示 。
这里介绍与定时器/计数器相关的高4位功能 。
(1) TF1、TF0:计数溢出标志位 。
当计数器计数溢出时 , 该位置1 。使用查询方式时 , 此位作为状态位供CPU查询 , 但应注意查询有效后 , 应使用软件及时将该位清0 。使用中断方式时 , 此位作为中断请求标志位 , 进入中断服务程序后由硬件自动清0 。
(2) TR1、TR0:计数运行控制位 。
TR1位(或TR0位)=1 , 启动定时器/计数器工作的必要条件 。
TR1位(或TR0位)=0 , 停止定时器/计数器工作 。
【AT89S51定时器/计数器的结构】该位可由软件置1或清0 。
推荐阅读
- AT89S51多外部中断源系统设计
- AT89S51单片机与82C55的接口设计编程
- AT89S51的中断允许与中断优先级的控制
- 关于AT89S51某些指令的说明
- 基于AT89S51子程序的设计
- AT89S51单片机串行口的结构
- AT89S51低功耗节电模式
- AT89S51的复位操作和复位电路
- AT89S51的时钟电路与时序
- AT89S51的并行I/O口