资源预览内容
第1页 / 共73页
第2页 / 共73页
第3页 / 共73页
第4页 / 共73页
第5页 / 共73页
第6页 / 共73页
第7页 / 共73页
第8页 / 共73页
第9页 / 共73页
第10页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4章 8051 定时/计数器与中断系统,学习目的 1、了解80C51定时/计数器的结构与工作原理; 2、了解中断的概念和中断的功能; 3、掌握80C51定时/计数器工作方式的特点及应用; 4、掌握80C51中断系统结构、处理过程和使用方法。 学习重点和难点 1、定时器/计数器的初始化; 2、中断系统结构、处理过程和使用方法; 3、定时器/计数器与中断的综合应用; 4、外部中断源的扩展方法。,4.1 80C51定时器/计数器,在测量控制系统中,经常要求有一些实时时钟,以实现定时控制、定时测量,同时有时也要求对外部事件进行计数等,所以我们经常要遇到定时/计数这样一些问题。要实现定时/计数,有3种主要方法:软件定时、硬件定时和可编程定时/计数器,本节介绍80C51可编程定时/计数器。,4.1.1 定时/计数器的结构,定时/计数器的结构如图4-1所示。 一、组成:80C51定时/计数器由定时器0、定时器1、定时器方式寄存器TMOD和定时器控制寄存器TCON四部分组成 二、各部分的功能: 1、定时器0(T0)和定时器1(T1) (1)80C51单片机内部有两个16位的可编程定时/计数器,称为定时器0 (简称T0)和定时器1(简称T1),可编程选择其作为定时器用或作为计数器用。,返回,(2)定时器0或定时器1用作计数器时,对芯片引脚T0(P3.4)或T1(P3.5)上输入的脉冲计数,每输入一个脉冲,加法计数器加1;其用作定时器时,对内部机器周期脉冲计数,由于机器周期是定值,故计数值确定时,时间也随之确定。 (3)16位的定时/计数器分别由两个8位寄存器组成,即:T0由TH0和TL0构成,T1由TH1和TL1构成,TL0、TL1、TH0、TH1的访问地址依次为8AH8DH。每个寄存器均可单独访问,这些寄存器是用于存放定时初值或计数初值的。,2、方式寄存器TMOD和控制寄存器TCON TMOD、TCON与定时器0、定时器1间通过内部总线及逻辑电路连接,TMOD用于设置定时器的工作方式,TCON用于控制定时器的启动与停止,并保存T0、T1的溢出和中断标志。,4.1.2 80C51定时/计数器的原理,16位的定时/计数器实质上是一个加1计数器,可实现定时和计数两种功能,其功能由软件设置和控制。 1、定时/计数器设置为定时功能时 当定时/计数器设置为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出。定时器的定时时间与系统的时钟频率有关。因一个机器周期等于12个时钟周期,所以计数频率fc应为系统时钟频率fosc的十二分之一,即=fosc。如果单片机的晶振频率为12MHz,则计数周期为1s(即:T= =1s)。这是最短的定时周期,通过改变定时器的定时初值,并适当选择定时器的长度(8位、13位或16位),可以调整定时时间。,2、定时/计数器设置为计数功能时,当定时/计数器设置为计数工作方式时,计数器对来自外部输入引脚T0(P3.4)和T1(P3.5)的信号进行计数,外部脉冲的下降沿将触发计数。在每个机器周期的S5P2期间采样外部引脚输入电平,若前一个机器周期采样值为1,后一个机器周期采样值为0,则计数器加1。新的计数值是在检测到外部输入引脚电平发生1到0的负跳变后,于下一个机器周期的S3P1期间装入计数器中的,可见,检测一个由1到0的负跳变需要两个机器周期,所以,最高检测频率为振荡频率的1/24。如果晶振频率为12MHz,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。,4.2 80C51定时/计数器的控制,在定时/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器,这个过程叫定时/计数器的初始化。在初始化程序中,要将工作方式控制字写入定时器方式寄存器(TMOD),工作状态控制字写入定时器控制寄存器(TCON),赋定时/计数初值给TH0(TH1)和TL0(TL1)。 4.2.1 定时/计数器方式寄存器TMOD 定时/计数器方式寄存器TMOD的作用是设置T0、T1的工作方式。 TMOD的格式:,TMOD的低4位为定时器0的方式字段,高4位为定时器1的方式 字段,它们的含义完全相同。各位的功能含义如下: 1、M1、M0:方式选择位。定义如下: 2、C/T:功能选择位。当C/T=0时,以定时器方式工作;当C/T=1时,以计数器方式工作。,3、GATE:门控位 当GATE=0时,软件启动定时器,即用指令使TCON中的TR1(TR0)置1即可启动定时器1(定时器0)。 当GATE=1时,软件和硬件共同启动定时器,即用指令使TCON中的TR1(TR0)置1时,同时还需要外部中断(P3.2)或(P3.3)引脚输入高电平时方可启动定时器1(定时器0)。 TMOD不能位寻址,只能用字节指令设置高4位定义定时器1,低4位定义定时器0定时器工作方式。复位时TMOD=00H,即所有位均置0。,4.2.2 定时/计数器控制寄存器TCON 定时/计数器控制寄存器TCON的作用是控制定时器的启动与停止,并保存T0、T1的溢出和中断标志。,TCON中的高4位用于控制定时/计数器的启停和中断请求。各位的功能含义如下: 1、TF1(TCON.7位):定时器1溢出标志位。当定时器1计满数 产生溢出时,由硬件自动置TF1=1。在中断允许时,向CPU发出定时器1的中断请求,进入中断服务程序后,由硬件自动清0。在中断屏蔽(以查询方式工作)时,TF1可作溢出查询测试用(判断该位是否为1),此时只能由软件清0。,其TCON的格式如下:,2、TR1(TCON.6位):定时器1启停控制位。当GATE=0时,用指令使TR1置1即启动定时器1工作,若用指令使TR1清0则停止定时器1工作。当GATE=1时,用指令使TR1置1的同时外部中断(P3.3)的引脚输入高电平才能启动定时器1工作。 3、TF0(TCON.5位):定时器0溢出标志位。其功能及操作情况同TF1。 4、TR0(TCON.4位):定时器0启停控制位。其功能及操作情况同TR1。 TCON中的低4位用于控制外部中断,与定时/计数器无关,将在中断一节中详细介绍。 5、IE1(TCON.3位):外部中断1( )请求标志位。 6、IT1(TCON.2位):外部中断1( )触发方式选择位。 7、IE0(TCON.1位):外部中断0( )请求标志位。 8、IT0(TCON.0位):外部中断0( )触发方式选择位。 当系统复位时,TCON的所有位均清0。TCON的字节地址为88H,可以位寻址,清溢出标志位或启动定时器都可以用位操作指令(如SETB TR1、JBC TF1,LOOP)。,4.2.3定时/计数器的初始化,1. 定时/计数器的初始化步骤 由于定时/计数器的功能是由软件编程确定的,所以,一般在使用定时器/计数前都要对其进行初始化。初始化骤如下: (1) 确定定时/计数器的工作方式,确定方式控制字,并写入TMOD。 (2) 预置定时初值或计数初值,根据定时时间或计数次数,计算定时初值或计数初值,并写入TH0、TL0或TH1、TL1。 (3) 根据需要开启定时/计数器的中断,直接对IE寄存器中的相应位(EA、EX0、EX1、ET0、ET1)赋值。 (4) 启动定时/计数器工作,将TCON中的TR1或TR0置1。 2. 定时或计数初值的计算 定时/计数器的初值因工作方式的不同而不同,其定时或计数初值的计算见表4-1。,表4-1定时或计数初值的计算方法,注:对表4-1作如下说明:,表中T表示定时时间,T机表示机器周期; 计数初值公式中的计数值为脉冲个数; 在方式3中只讨论T0。T0被分为两个独立的8位计数器TL0和TH0。而TL0可定时亦可计数;而TH0只能用作简单的内部定时,不能用作对外部脉冲进行计数。,例1:定时器1采用方式1来定时,要求每50ms溢出一次,如采用12 MHz晶振,则计数周期T=1 s,求定时初值X。 解:根据定时初值X 的计算公式可得: 例2:要求定时器1采用方式0、方式1和方式2来计100个脉冲的计数初值X。 解:根据计数初值X 的计算公式可得:,3、定时或计数初值的装入 现以例2的计数初值X为例,来介绍定时/计数器在不同工作方式下初值的装入方法。,方式0是13位定时/计数器,若采用定时/计数器T1,则计数初值X的高八位装入TH1,而低五位装入TL1的低五位(TL1的高三位无效,可填补0)。所以要装入1F9CH初值,应按照如下方法进行。 1F9CH0001 1111 1001 1100B 把13位中的高八位1111 1100B装入TH1,而把13位中的低五位xxx1 1100B装入TL1(xxx用“0”填入)。用指令来装入计数初值为: MOV TH1,#0FCH ;#FCHTH1 MOV TL1,#1CH ;#1CHTL1 方式1是16位定时/计数器,若采用定时/计数器T1,则计数初值X的高八位装入TH1,而低八位装入TL1,用指令来装入计数初值为: MOV TH1,#0FFH ;#0FFHTH1 MOV TL1,#9CH ;#9CHTL1 方式2是自动重装入初值8位定时/计数器,只要装入一次,以后就自动装入初值。若采用定时/计数器T1,则计数初值X既要装入TH1,也要装入TL1,用指令来装入计数初值为: MOV TH1,#9CH ;#9CHTH1 MOV TL1,#9CH ;#9CHTL1,4.3 80C51定时/计数器的工作方式及应用 通过对方式寄存器TMOD中M0、M1位进行设置,可选择四种工作方式,即方式0、方式1、方式2和方式3,下面逐一进行介绍。,4.3.1 方式0 方式0构成一个13位定时/计数器,以定时器0为例。图4-2是方式0的逻辑结构,定时器1的结构和操作与定时器0完全相同。,由图4-2可知,定时/计数器是由TL0中的低5位和TH0中的高8位组成一个13位加1计数器(TL0中的高3位不用);若TL0中的第5位有进位,直接进到TH0中的最低位。而TH0溢出时向中断位TF0进位(硬件自动置位),并申请中断。,图4-2 定时器0在方式0时的逻辑结构图,当C/T= 0时,多路开关连接12分频器输出,定时器0对机器周期计数,此时,定时器0为定时器。 当C/T= 1时,多路开关与T0(P3.4)相连,外部计数脉冲由T0脚输入,当外部信号电平发生由0到1的负跳变时,计数器加1,此时,定时器0为计数器。 当门控位GATE=0时,或门输出始终为1,与门被打开,与门的输出电平始终与TR0的电平一致,实现由TR0控制定时/计数器的启动和停止。若软件使TR0置1,接通控制开关,启动定时器0,13位加1计数器在定时初值或计数初值的基础上进行加1计数;溢出时,13位加1计数器为0,TF0由硬件自动置1,并申请中断。如要循环计数,则定时器0需重置初值,且需用软件将TF0复位,可采用重置初值语句和JBC命令。若软件使TR0清0,关断控制开关,停止定时器0,加1计数器停止计数。 当GATE = 1时,与门的输出由的输入电平和TR0位的状态来确定。若TR0 = 1则与门打开,外部信号电平通过引脚直接开启或关断定时器0,当为高电平时,允许计数,否则停止计数;若TR0 = 0,则与门被封锁,控制开关被关断,停止计数。,图4-3 定时器0在方式1时的逻辑结构图,4.3.2 方式1 定时器工作于方式1时,其逻辑结构图如图4-3所示。 在方式1下,以定时器0为例,定时/计数器是由TL0中的8位和TH0中的8位组成一个16位加1计数器。 方式1其结构与操作几乎完全与方式0相同,最大的区别是方式1的加1计数器位数是16位。,图4-4 定时器0在方式2时的逻辑结构图,4.3.3 方式2 定时/计数器工作于方式2时,其逻辑结构图如图4-4所示。 由图4-
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号