1、1 1 前言 在测量控制系统中,常常要求有一些实时时钟,以实现定时控制、定时测量 或延迟动作,也往往要求有计数器能对外部事件计数,如测电机转速、频率、工 件个数等。 实现定时/计数,有软件、数字电路和可编程定时/计数器 3 种主要方法。 软件定时, 即让机器执行一个程序段, 这个程序段本身没有具体的执行目的, 通过正确地挑选指令和安排循环次数实现软件延时, 由于执行每条指令都需要时 间,执行这一程序段所需要的时间就是延时时间。这种软件定时占用 CPU 的执行 时间,降低了 CPU 利用率。 数字电路硬件定时采用如小规模集成电路器件 555,外接定时部件(电阻和 电容)构成。这样的定时电路简单,
2、但要改变定时范围,必须改变电阻和电容, 这种定时电路在硬件连接好以后,修改不方便。 可编程定时/计数器是为了方便微型计算机系统的设计和应用而研制的,它 是硬件定时, 又能很容易地通过软件来确定和改变它的定时值, 通过初始化编程, 能够满足各种不同的定时和计数要求, 因而在嵌入式系统的设计和应用中得到了 广泛的应用。 2 2 定时器的工作原理 8XX51 单片机的定时/计数器 T1 由寄存器 TH1,TL1 组成,定时/计数器 T0 由 寄存器 TH0,TL0 组成,它们均为 8 位寄存器,在特殊功能寄存器中占地址 8AH 8DH。它们用于存放定时或计数的初始值。此外,内部还有一个 8 位的方式
3、寄存 器 TMOD 和一个 8 位的控制寄存器 TCON,用于选择和控制定时/计数器的工作。 定时/计数器实质上是一个加 1 计数器,它可以工作于定时方式,也可以工 作于计数方式, 两种工作方式实际都是对脉冲计数, 只不过所计脉冲的来源不同。 本次课程设计主要用到定时功能,在此只介绍定时方式。 在定时方式下,C/T=0,开关打向上,计数器 TH0、TL0 的计数脉冲来自振 荡器的 12 分频后的脉冲(12/ osc f) ,即对系统的机器周期计数,当开关受控合 上时,每过一个机器周期,计数器 TH0,TL0 加 1,当计满了预设的个数。TH0,TL0 回零,置位定时/计数器溢出中断标志位 TF
4、0(或 TF1) ,产生溢出中断。 3 3 与定时/计数器有关的特殊功能寄存器 51 系列单片机的定时/计数器为可编程定时/计数器,在定时/计数器工作之 前,必须将控制命令写入定时/计数器的控制寄存器,即进行初始化。下面介绍 定时/计数器的方式寄存器 TMOD 及控制寄存器 TCON。 3.1 工作方式控制寄存器 TMOD 表 3.1 定时/计数器方式控制寄存器 TMOD T1 T0 TMOD GATE C/T M1 M0 GATE C/T M1 M0 GATE 为门控位,当 GATE = 0 启动不受0INT或1INT的控制,当 GATE = 1 启动受0INT或1INT的控制。 C/T为外
5、部计数器/定时器方式选择位,当 C/T= 0 为定时方式,当 C/T= 1 为计数方式。 M1M0 为工作模式选择位,其模式与说明如下: M1 M0 模式 说明 0 0 0 13 位定时/计数器 高八位 TH(7 0)+ 低五位 TL(4 0) 0 1 1 16 位定时/计数器 TH(7 0)+ TL(7 0) 1 0 2 8 位计数初值自动重装 TL(7 0) TH(7 0) 1 1 3 T0 运行,而 T1 停止工作,8 位定时/计数。 3.2 定时/计数器控制寄存器 TCON 4 表 3.2 定时/计数器控制寄存器 TCON TCON TR1 TR0 TR0 为定时/计数器 0 运行控制
6、位,分两种情况。当 GATE = 0 时,若 TR0 = 1,开启 T0 计数工作,若 TR0 = 0,停止 T0 计数;当 GATE = 1 时,若 TR0 = 1 且0INT= 1 时,开启 T0 计数。 5 4 定时/计数器的工作方式 根据对 TMOD 寄存器中 M1 和 M0 的设定,T0 可选择四种不同的工作方式,而 T1 只具有三种工作方式(即方式 0、方式 1 和方式 2) 。 本次课程设计采用方式 0,即 13 位定时/计数器。 当 TMOD 中的 M10、M00 时,选定方式 0 工作。方式 0 时,计数寄存器由 13 位组成,即 THx 高八位(作计数器)和 TLx 的低 5 位(32 分频的定标器)构成。 TLx 的高 3 位未用。 计数时,TLx 的低 5 位溢出后向 THx 进位,THx 溢出后将 TFx 置位,并向 CPU 申请中断。 6 5 程序设计 在原基础上,扩展了开关控制和频率选择功能,程序如下: ORG