1、第六章 MCS-定时器 /计数器6.1 51的定时 /计数器6.2 定时器 /计数器的工作方式6.3定时器 /计数器的应用2个 16位 定时器 /计数器(52 系列有 3个 16位 Timer)定时器 :对片内机器时钟 (周期方波 )进行计数计数器 :对 Tx引脚 输入的负脉冲进行计数与 Timer工作有关的特殊功能寄存器:TCON 和 TMOD6.5.1 定时 /计数器概述6.1 51的定时 /计数器Timer的 2个特殊功能寄存器 (TCON,TMOD)TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0一、定时器控制寄存器 TCON (88H)TFx: Timer0/1计数溢出
2、标志位。=1 计数溢出 ; =0 计数未满 TFx标志位可用于 申请中断 或 供 CPU查询 。在进入中断服务程序时会自动清零;但在查询方式时必须软件清零。TRx: Timer0/1运行控制位。 =1 启动计数; =0 停止计数6.5.2 定时 /计数控制TR0/TR1: Timer0/1运行控制位:TR0/TR1 =0 时, Timer0/1停止计数TR0/TR1 =1 时, Timer0/1启动计数定时器 T0/T1 中断申请过程 在已经开放 T0/T1中断允许且已被启动的前提下: T0/T1加满溢出时 TF0/TF1标志位自动置 “ 1” 检测到 TCON中 TF0/TF1变 “ 1”
3、后 ,将产生指令:LCALL 000BH/LCALL 001BH 执行中断服务程序 , TF0/TF1标志位会自动清 “ 0”, 以备下次中断申请。 定时 /计数器可按片内机器周期定时,也可对由T0/T1引脚输入一个负脉冲进行加法计数TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON (88H)GATE C / T M1 M0 GATE C / T M1 M0二、定时器方式寄存器 TMOD (89H) T1 T0M1,M0: 工作方式定义位 ( 定义 4 种方式 ):C/T : 计数器 /定时器选择位= 1 外部事件计数器。对 Tx引脚的负脉冲计数;= 0 片内时钟定时器。
4、对机器周期脉冲计数定时0 0: 13位 Timer 用它无益 ,不要记它!0 1: 16位 Timer 经常用到1 0:可自动重装的 8位 Timer 经常用到1 1: T0 分为 2个 8位 Timer; T1 此时不工作 因为没有带来甚麽好处,几乎 无 用GATE C / T M1 M0 GATE C / T M1 M0T1 T0GATE门控位 : Timer可由软件与硬件两者控制 GATE = 0 普通用法Timer的启 /停由软件对 TRx位写 “ 1”/“0”控制(89H) GATE = 1 门控用法 Timer的启 /停由软件对 TRx位写 “ 1”/“0” 和在 INTx引脚上出
5、现的信号的高 /低共同控制6.2.1工作方式 1INTx端振荡器 12TLx THx (8位) (8位 )TFx 申请中断Tx端TRx位GATE位 1 &C/T=0C/T=1 控制 =1开关接通或门与门6.2 定时器的工作方式及 应用一、工作方式 1的结构图 THx/TLx赋初值: THx赋高 8位, TLx赋低 8位二、工作方式 1 的编程要点: TMOD选方式: 写 “ M1,M0”=01 b 选方式 1 若不用门控位 ,直接用软件写 TRx控制启 /停 若使用门控位,先置位 TRx, 然后由 INTx端的高 /低电平来控制其启 /停 若要允许中断,还须先置位 ETx、 EA等中断允许控制
6、位,并编写中断服务程序 若不用中断,可查询 “ 计数溢出标志 TFx”的方式工作,但溢出标志 TFx须软件清 0分析 :已知 fosc = 6MHz 则:(振荡周期) 1Tc=1/6MHz( 机器周期) 1Tm=12Tc=12/6MHz=2S 粗略地说: Tmin 2S16位定时器最大数值为: 216=65536=0FFFFH+1故选择方式 1 工作可以得到: Tmax = 655362 = 131072S 131.072mS若晶振频率为 6MHz, 计算单片机的最小与最大定时时间:例 1分析 :已知 fosc = 6MHz 则:( 机器周期) 1Tm=12Tc=12/6MHz=2S100mS2 S = 5000016位定时器最大数值为:216 = 65536 (=0FFFFH+1)故选择方式 1工作可以满足要求。计算初值 : 65536 50000=15536=3CB0H要求对 T0产生 100mS定时进行初始化。 (晶振=6MHz)例 2