1.09k likes | 1.19k Vues
第 5 章 定时 / 计数器和中断 5 .1 实 训 概 要 MCS-51 单片机内部有两个定时 / 计数器 T0 和 T1 ( 8032 有三个),它们都是 16 位的加法计数器,可用于定时控制或对外部事件产生的脉冲信号进行计数,也可作为串行口的波特率发生器。中断系统是单片机系统的重要组成部分。利用中断技术能够更好地发挥单片机系统的处理能力,有效解决慢速工作的外部设备与快速工作的 CPU 之间的矛盾,从而提高 CPU 的工作效率,提高实时处理能力。. 实训内容: 方波发生器。 外部工件计数器。 外部脉冲宽度测试器。 中断控制研究。 四人抢答器的中断控制.
E N D
第5章 定时/计数器和中断 5 .1 实 训 概 要 MCS-51单片机内部有两个定时/计数器T0和T1(8032有三个),它们都是16位的加法计数器,可用于定时控制或对外部事件产生的脉冲信号进行计数,也可作为串行口的波特率发生器。中断系统是单片机系统的重要组成部分。利用中断技术能够更好地发挥单片机系统的处理能力,有效解决慢速工作的外部设备与快速工作的CPU之间的矛盾,从而提高CPU的工作效率,提高实时处理能力。
实训内容: 方波发生器。 外部工件计数器。 外部脉冲宽度测试器。 中断控制研究。 四人抢答器的中断控制
预备知识: 定时与计数的区别 定时:对内部脉冲以机器周期为单位进行加法计数。 计数:对外部事件的脉冲进行加法计数。 实现定时和计数控制的关键是掌握TMOD和TCON各位含义。
2.特殊功能寄存器TMOD和TCON功能介绍 (1)定时/计数器方式寄存器TMOD TMOD是一个8位特殊功能寄存器,用于控制定时/计数器T0和T1的操作方式。其字节地址为89H。其中,高4位控制T1,低4位控制T0。低4位中各位的含义与高4位类似。各位具体含义如下:
GATE:门控位。当GATE=1时,T1的启动受外来自外部中断1的信号和启动位TR1共同控制;当GATE=0时,T1的启动只受TR1控制。GATE:门控位。当GATE=1时,T1的启动受外来自外部中断1的信号和启动位TR1共同控制;当GATE=0时,T1的启动只受TR1控制。 C/T:定时器和计数器功能选择位。当C/T=0时,定时器;C/T=1时,计数器。 M1M0:工作方式选择位。具体见表5-1所示。
2)定时/计数器控制寄存器TCON TCON也是一个8位特殊功能寄存器,用于控制定时/计数器T0和T1的运行。其字节地址为88H。高4位控制定时/计数器,低4位用于中断控制。各位具体含义如下:
TF1:T1的中断溢出标志位。当TF1=1时,表示T1有中断申请发出;TF1=0时,表示无中断申请或中断申请已被清除。 TF1:T1的中断溢出标志位。当TF1=1时,表示T1有中断申请发出;TF1=0时,表示无中断申请或中断申请已被清除。 TR1:T1的启动位。当GATE=1时,外部中断1和TR1共同为“1”才启动T1;当GATE=0时,TR1为“1”启动T1。 TF0:T0的中断溢出标志位。 TR0:T0的启动位。 IE1:的中断请求标志位。IE1=1,外部中断1有中断申请发出;IE1=0, 的中断请求已被清除。
IE0:的中断请求标志位。IE0=1,外部中断0有中断申请发出;IE0=0,的中断请求已被清除。IE0:的中断请求标志位。IE0=1,外部中断0有中断申请发出;IE0=0,的中断请求已被清除。 IT0:中断触发方式控制位。当IT0=0时,为电平触发方式,低电平触发;当IT0=1时,为边沿触发方式,下降沿触发。 IT1:中断触发方式控制位。与IT0类似。 3.定时/计数器的工作方式
(1)方式0 方式0下T0和T1都是13位的定时/计数器。其中高8位为THX,低5位为TLX。定时时间公式和计数公式分别为: 定时时间=(213-TX初值)×机器周期 计数个数= 213-TX初值 (2)方式1 方式1下T0和T1都是16位的定时/计数器。其中高8位为THX,低8位为TLX。定时时间公式和计数公式分别为: 定时时间=(216-TX初值)×机器周期 计数个数= 216-TX初值
(3)方式2 • 方式2下T0和T1都是常数自动重装的8位定时/计数器。其中TLX可用作8位计数器,THX可用来装初始值。定时时间公式和计数公式分别为: • 定时时间=(28-TLX初值)×机器周期 • 计数个数= 28-TX初值
(4)方式3 方式3下T0被拆成两个独立的8位定时/计数器TH0和TL0。其中,TL0用原来T0的控制位来控制,既可定时也可计数。而TH0只做简单的定时控制,它占用T1的控制位。这种工作方式不适用于T1。定时时间公式与方式2相同。 定时时间公式中THx表示TH0(或TH1),TLx表示TL0(或TL1)。 4.定时/计数器的最大定时时间和最大计数数值
(1)最大定时时间 方式0:Tmax=213×2μs=16384μs≈0.016s 方式1:Tmax=216×2μs=131072μs≈0.13s 方式2、3:Tmax=28×2μs=512μs≈0.51ms (2)最大计数数值 方式0:n=213=8192 方式1:n=216=65536 方式2、3:n=28=256
5.门控位的作用 • 由定时/计数器方式寄存器TMOD可知,门控位GATE用来启动T0或T1。当GATE=0时,TR0或TR1置“1”就可以启动定时/计数器;当GATE=1时,需要TR0或TR1为“1”且也必须为“1”,才能启动T0或T1。利用门控位这个特性,可以测量外部脉冲信号的正脉冲宽度。方法是: • 设置TMOD的门控位为“1”,在被测脉冲的低电平时使TR1=1,但T1并不启动计数。
按下手动脉冲,则为高电平,T1开始计数。 再按下手动脉冲,结束被测脉冲高电平,从T1中取出计数值送显示器显示。 为了显示T1计数值,还应明确显示器接口的字形口和字位口地址及显示方法。 6.与中断有关的特殊功能寄存器简介 (1)串行口控制寄存器SCON SCON 是一个8位特殊功能寄存器。其字节地址为98H。用来锁存串行口中断标志。串行口中断标志分为发送中断标志和接收中断标志。具体如下:
TI:串行口发送中断标志位。CPU将一个数据写入发送缓冲器SBUF后,就启动发送器工作。此时,串行口若以方式0发送,每发送完一个字节数据,由硬件置“1”TI;若以其它工作方式发送数据时,在发送停止位时置“1”TI。TI=1表示串行口正在向CPU发出中断申请。TI:串行口发送中断标志位。CPU将一个数据写入发送缓冲器SBUF后,就启动发送器工作。此时,串行口若以方式0发送,每发送完一个字节数据,由硬件置“1”TI;若以其它工作方式发送数据时,在发送停止位时置“1”TI。TI=1表示串行口正在向CPU发出中断申请。
RI:串行口接收中断标志位。在串行口允许接收时,每接收一串数据,由硬件置“1”RI。同样,CPU响应TI中断后,必须由软件清“0”RI。RI:串行口接收中断标志位。在串行口允许接收时,每接收一串数据,由硬件置“1”RI。同样,CPU响应TI中断后,必须由软件清“0”RI。 (2)中断允许寄存器IE 中断允许寄存器IE是一个8位的特殊功能寄存器,其字节地址为A8H。用来控制中断的禁止与允许。具体如下:
EA:CPU中断总允许位。EA=1,CPU允许中断;EA=0,CPU禁止所有中断请求。EA:CPU中断总允许位。EA=1,CPU允许中断;EA=0,CPU禁止所有中断请求。 EX0:外部中断0()中断允许位。EX0=1,允许中断;EX0=0,禁止中断。 ET0:定时/计数器T0中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。 EX1:外部中断1()中断允许位。EX1=1,允许中断;EX0=0,禁止中断。 ET1:定时/计数器T1中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。
ES:串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。 (3)中断优先级寄存器IP 中断优先级寄存器IP是一个8位的特殊功能寄存器,其字节地址为B8H。MCS-51中断优先级分为高优先级和低优先级两级,由中断优先级寄存器IP设定中断源的优先级别。具体如下:
PX0:外部中断0()中断优先级控制位。PX0=1,设定为高优先级;PX0=0,设定为低优先级。PX0:外部中断0()中断优先级控制位。PX0=1,设定为高优先级;PX0=0,设定为低优先级。 PT0:定时/计数器T0中断优先级控制位。PT0=1,设定T0为高优先级;PT0=0,设定T0为低优先级。 PX1:外部中断1()中断优先级控制位。PX1=1,设定为高优先级;PX1=0,设定为低优先级。 PT1:定时/计数器T1中断优先级控制位。PT1=1,设定T1为高优先级;PT1=0,设定T1为低优先级。 PS:串行口中断优先级控制位。PS=1,设定串行口为高优先级;PS=0,设定串行口为低优先级。
5.2 实训17 方波发生器 5.2.1 实训目的 通过本节实训,主要学习下面内容: 单片机内部定时器的硬件结构及其应用。 T0和T1的两种用途之一:作定时器实现定时控制。 通过实训,掌握TMOD和TCON的各位的意义,学会可编程控制方法。
5.2.2 实训要求 设单片机晶振频率为6MHz。用单片机内部定时器T0方式0编程,在P1.0脚上产生200μs定时、周期为400μs方波,并用示波器观察波形,读出方波周期。 修改程序,产生方式0和方式1下最大定时,并观察接在P1.0脚上发光二极管亮灭变化。 仍然产生周期为400μs方波,要求用T1方式1编程,试修改程序。 若用T0方式0产生1秒的定时,试编写控制程序。观察发光二极管的亮灭变化情况。
若用T0方式2产生矩形脉冲序列,如图5-1所示,50μs定时,周期350μs。试编写控制程序。并用示波器观察波形,读出方波周期。若用T0方式2产生矩形脉冲序列,如图5-1所示,50μs定时,周期350μs。试编写控制程序。并用示波器观察波形,读出方波周期。
5.2.3 实训器材 MCS-51单片机开发系统,示波器,发光二极管 5.2.4 程序设计思路 首先根据问题要求设置定时/计数器方式寄存器TMOD初值;其次计算不同工作方式下T0或T1的定时初值,并用数据传送指令将所得初值装入相应寄存器中。第三,通过程序对定时/计数器控制寄存器TCON中相应位置位,启动计数器开始“计数”,并用查询方式或中断方式判别计数是否溢出。 5.2.5 硬件电路原理图 实训硬件电路如图5-2所示。
5.2.6 实训步骤 (1)定时200μs、周期为400μs方波。 理解实训程序表5-2,并为每条指令加注释。 将机器码送入单片机开发系统。 连续执行程序,并在P1.0脚和单片机的“地”之间用示波器观察产生的波形,读出方波周期。 修改程序,在方式0、方式1下产生最大定时,并观察发光二极管的变化。
(2)用T1方式1编程,仍然产生周期为400μs方波,试修改程序:(2)用T1方式1编程,仍然产生周期为400μs方波,试修改程序: 重新设置定时/计数器方式寄存器TMOD初值。 重新计算T1方式1下定时400μs的定时初值。 将修改后的机器码送入单片机开发系统。 连续执行程序,并在P1.0脚和单片机的“地”之间用示波器观察产生的波形,读出方波周期。
用T0方式0产生1秒的定时 • 用T0方式0产生1秒的定时的实训控制程序见表5-3所示。因为T0方式0是13位计数器,最大定时为8192μs。可选择定时5ms,再循环200次,定时1秒。经过计算,其定时初值为 (TH0)=63H,(TL0)=18H,(TMOD)=00H。 • 理解实训程序表5-3,并为每条指令加注释。 • 将机器码送入单片机开发系统。 • 连续执行程序,并在P1.0脚接发光二极管,观察发光二极管的亮灭变化。 • (4)产生定时50μs,周期350μs的矩形脉冲序列
用T0方式2进行两种定时,定时50μs高电平、定时300μs低电平。用T0方式2进行两种定时,定时50μs高电平、定时300μs低电平。 50μs T0方式2定时初值为: E7H 300μs T0方式2定时初值为:6AH (TMOD)=02H 理解实训程序表5-4,并为每条指令加注释。 将机器码送入单片机开发系统。 连续执行程序,并在P1.0脚用示波器,观察产生方波,读出其周期和幅度。
提示: 当T0最大定时其初值应为0,但两种工作方式的最大定时时间不同。 当定时时间太短时,则看不到发光二极管闪烁,这时候可用示波器观察电平变化。 实质上,利用定时器实现定时, CPU只启动计数器,而不干预其计数过程。
5.3 实训18 外部工件计数器 5.3.1 实训目的 通过本节实训,主要学习下面内容: 单片机内部计数器的硬件结构及其应用。 T0和T1的两种用途之一:作计数器实现对外部脉冲进行计数控制。 通过实训,掌握TMOD和TCON的各位的意义,学会可编程控制方法。
5.3.2 实训要求 手动产生脉冲信号,进行一位脉冲计数,计数脉冲由T0(P3.4)引脚输入,并将所计脉冲个数在LED七段显示器上显示出来。 利用脉冲信号源产生连续脉冲信号,并在单片机显示器上显示多位脉冲个数。 5.3.3 实训器材 MCS-51单片机开发系统
5.2.4 程序设计思路 首先根据问题要求设置定时/计数器方式寄存器TMOD初值,本实训控制为计数控制;其次计算不同工作方式下T0或T1的计数初值,并用数据传送指令将所得初值装入相应寄存器中。第三,通过程序对定时/计数器控制寄存器TCON中相应位置位,启动计数器开始计数,并用查询方式或中断方式判别计数是否溢出。 5.3.5 硬件电路原理图 实训硬件电路如图5-3所示。
5.3.6 实训步骤 (1)按照实训原理图5-3,将P3.4脚与单脉冲输出插孔相连。 (2)仔细阅读并理解实训程序,给每条指令加注释,并画出程序流程图。 (3)将实训程序送入单片机开发系统中,并检查程序是否正确。 (4)输入程序首地址,连续执行程序,观察在按动脉冲按键之前显示器上是否显示全“0”。
(5)按动脉冲按键,观察在脉冲负跳变时的计数,显示数字是否与脉冲个数相符。(5)按动脉冲按键,观察在脉冲负跳变时的计数,显示数字是否与脉冲个数相符。 (6)将P3.4脚与连续脉冲插孔相连,执行表5-6实训程序,显示多个连续脉冲个数。 5.3.7 实训程序 1.一位计数脉冲实训程序见表5-5所示。 2.多位计数脉冲实训程序见表5-6所示。