1 / 76

本章内容 定时 / 计数器 中断系统

第 4 章 定时与中断系统. 本章内容 定时 / 计数器 中断系统. 4.1 定时 / 计数器 - 内容概要 工业检测与控制,许多场合都要用到 计数 或 定时 功能。例如,对外部脉冲进行计数,产生精确的定时时间等。 AT89S51 片内有两个可编程的定时器 / 计数器 T1 、 T0 ,可满足需要。 本章介绍定时器 / 计数器的 结构 与 功能 , 2 种 工作模式 和 4 种 工作方式 ,以及相关的 2 个特殊功能寄存器 TMOD 和 TCON 各位的定义及其编程,最后介绍定时器 / 计数器的编程及应用实例。.

Download Presentation

本章内容 定时 / 计数器 中断系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第4章 定时与中断系统 • 本章内容 • 定时/计数器 • 中断系统

  2. 4.1 定时/计数器-内容概要 工业检测与控制,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数,产生精确的定时时间等。AT89S51片内有两个可编程的定时器/计数器T1、T0,可满足需要。 本章介绍定时器/计数器的结构与功能,2种工作模式和4种工作方式,以及相关的2个特殊功能寄存器TMOD和TCON各位的定义及其编程,最后介绍定时器/计数器的编程及应用实例。

  3. 图4-1 AT89S51单片机的定时器/计数器结构框图 4.1 定时器/计数器的结构 定时器/计数器结构如图6-1所示,定时器/计数器T0由特殊功能寄存器TH0、TL0构成,定时器/计数器T1由特殊功能寄存器TH1、TL1构成。 3

  4. 51具有定时器和计数器2种工作模式,4种工作方式(方式0、方式1、方式2和方式3)。属于增计数器。51具有定时器和计数器2种工作模式,4种工作方式(方式0、方式1、方式2和方式3)。属于增计数器。 TMOD用于选择定时器/计数器T0、T1的工作模式和工作方式。 TCON用于控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。 T0、T1不论是工作在定时器模式还是计数器模式,都是对脉冲信号进行计数,只是计数信号的来源不同。 计数器模式是对加在T0(P3.4)和T1(P3.5)两个引脚上的外部脉冲进行计数(见图4-1)。 定时器工作模式是对单片机的时钟振荡器信号经片内 4

  5. 12分频后的内部脉冲信号计数。由于时钟频率是定值,所以可根据计数值可计算出定时时间。12分频后的内部脉冲信号计数。由于时钟频率是定值,所以可根据计数值可计算出定时时间。 计数器的起始计数都是从计数器初值开始的。单片机复位时计数器的初值为0,也可用指令给计数器装入一个新的初值。AT89S51的定时器/计数器属于增1计数器。 4.1.1 工作方式控制寄存器TMOD 用于选择定时器/计数器的工作模式和工作方式,字节地址为89H,不能位寻址,格式如图4-2所示。

  6. 图4-2TMOD格式 8位分为两组,高4位控制T1,低4位控制T0。 TMOD各位的功能。 (1)GATE———门控位。 0:仅由运行控制位TRx(x = 0,1)来控制定时器/计数器运行。 1:用外中断引脚(或)上的电平与运行控制位TRx共同来控制定时器/计数器运行。 6

  7. (2)M1、M0——工作方式选择位 M1、M0共有4种编码,对应于4种工作方式的选择,如表4-1所示。 (3)C/ —计数器模式和定时器模式选择位 7

  8.  0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行计数。 0:为定时器工作模式,对单片机的晶体振荡器12分频后的脉冲进行计数。 1:为计数器工作模式,计数器对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数。 4.1.2 定时器/计数器控制寄存器TCON 字节地址为88H,可位寻址,位地址为88H~8FH。格式如图4-3所示。 图4-3 TCON格式

  9. 在第4章后半部分介绍与外部中断有关的低4位。这里仅介绍与定时器/计数器相关的高4位功能。在第4章后半部分介绍与外部中断有关的低4位。这里仅介绍与定时器/计数器相关的高4位功能。 (1)TF1、TF0——计数溢出标志位。 当计数器计数溢出时,该位置“1”。使用查询方式时,此位作为状态位供CPU查询,但应注意查询有效后,应使用软件及时将该位清“0”。使用中断方式时,此位作为中断请求标志位,进入中断服务程序后由硬件自动清“0”。 (2)TR1、TR0——计数运行控制位。 TR1位(或TR0位)= 1,启动定时器/计数器工作的必要条件。 9

  10. TR1位(或TR0位)= 0,停止定时器/计数器工作。TR1位(或TR0位)= 0,停止定时器/计数器工作。 该位可由软件置“1”或清“0”。 4.2 定时器/计数器的4种工作方式 4种工作方式分别介绍如下。 4.2.1 方式0-13位计数器 M1、M0=00时,被设置为工作方式0,等效逻辑结构框图如图4-4所示(以定时器/计数器T1为例,TMOD.5、TMOD.4 = 00)。 10

  11. 图4-4定时器/计数器方式0逻辑结构框图 13位计数器,由TLx(x = 0,1)低5位和THx高8位构成。TLx低5位溢出则向THx进位,THx计数溢出则把TCON中的溢出标志位TFx置“1”。 11

  12. 图4-2的C/ 位控制的电子开关决定了定时器/计数器的两种工作模式。 (1)C/ =0,电子开关打在上面位置,T1(或T0)为定时器工作模式,把时钟振荡器12分频后的脉冲作为计数信号。 (2)C/ =1,电子开关打在下面位置,T1(或T0)为计数器工作模式,计数脉冲为P3.4(或P3.5)引脚上的外部输入脉冲,当引脚上发生负跳变时,计数器加1。 GATE位状态决定定时器/计数器的运行控制取决TRx一个条件还是TRx和x(x = 0,1)引脚状态两个条件。 12

  13. (1) GATE = 0,A点(见图4-4)电位恒为1,B点电位仅取决于TRx状态。TRx = 1,B点为高电平,控制端控制电子开关闭合,允许T1(或T0)对脉冲计数。TRx = 0,B点为低电平,电子开关断开,禁止T1(或T0)计数。 (2) GATE = 1,B点电位由 (x = 0,1)的输入电平和TRx的状态这两个条件来确定。当TRx = 1,且 =1时,B点才为1,控制端控制电子开关闭合,允许T1(或T0)计数。故这种情况下计数器是否计数是由TRx和 两个条件来共同控制的。

  14. 4.2.2 方式1-16位计数器 当M1、M0=01时,定时器/计数器工作于方式1,这时定时器/计数器的等效电路逻辑结构如图4-5所示。 方式1和方式0的差别仅仅在于计数器的位数不同,方式1为16位计数器,由THx高8位和TLx低8位构成(x = 0,1),方式0则为13位计数器,有关控制状态位的含义(GATE、C/ 、TFx、TRx)与方式0相同。

  15. 图4-5定时器/计数器方式1逻辑结构框图 15

  16. 6.2.3 方式2-初值重载的8位计数器 方式0和方式1的最大特点是计数溢出后,计数器为全0。因此在循环定时或循环计数应用时就存在用指令反复装入计数初值的问题。这不仅影响定时精度,也给程序设计带来麻烦。方式2就是针对此问题而设置的。 当M1、M0为10时,定时器/计数器处于工作方式2,这时定时器/计数器的等效逻辑结构如图4-6所示(以定时器T1为例,x= 1)。

  17. 定时器/计数器的方式2为自动恢复初值(初值自动装入)的8位定时器/计数器。定时器/计数器的方式2为自动恢复初值(初值自动装入)的8位定时器/计数器。 THx(x = 0,1)作为常数缓冲器,当TLx计数溢出时,在溢出标志TFx置“1”的同时,还自动将THx中的初值送至TLx,使TLx从初值开始重新计数。定时器/计数器的方式2工作过程如图4-7所示。

  18. 图4-6定时器/计数器方式2逻辑结构框图 18

  19. 图4-7方式2工作过程 该方式可省去用户软件中重装初值的指令执行时间,简化定时初值的计算方法,可以相当精确地确定定时时间。 19

  20. 4.2.4 方式3 是为增加一个8位定时器/计数器而设,使AT89S51单片机具有3个定时器/计数器。 方式3只适用于T0,T1不能工作在方式3。T1处于方式3时相当于TR1= 0,停止计数(此时T1可用来作为串行口波特率产生器)。 1.工作方式3下的T0 TMOD的低2位为11时,T0的工作方式被选为方式3,各引脚与T0的逻辑关系如图4-8所示。 定时器/计数器T0分为两个独立的8位计数器TL0和TH0,TL0使用T0的状态控制位C/T、GATE、TR0、 20

  21. TF0 ,而TH0被固定为一个8位定时器(不能作为外部计数模式),并使用定时器T1的状态控制位TR1和TF1,同时占用定时器T1的中断请求源TF1。 2.T0工作在方式3时T1的各种工作方式 一般情况下,当T1用作串行口的波特率发生器时,T0才工作在方式3。T0处于工作方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合。

  22. 图4-8定时器/计数器T0方式3的逻辑结构框图 22

  23. 图6-9 T0工作在方式3时T1为方式0的工作示意图 (1)T1工作在方式0 T1的控制字中M1、M0 = 00时,T1工作在方式0,工作示意图如图6-9所示。 23

  24. 图6-10 T0工作在方式3时T1为方式1的工作示意图 (2)T1工作在方式1 当T1的控制字中M1、M0 = 01时,T1工作在方式1,工作示意图如图6-10所示。 24

  25. 图6-11T0工作在方式3时T1为方式2的工作示意图 (3)T1工作在方式2 当T1的控制字中M1、M0 = 10时,T1的工作方式为方式2,工作示意图如图6-11所示。 25

  26. (4)T1设置在方式3 当T0设置在方式3,再把T1也设成方式3,此时T1停止计数。 4.3 对外部输入的计数信号的要求 当定时器/计数器工作在计数器模式时,计数脉冲来自外部输入引脚T0或T1。 当输入信号产生负跳变时,计数器的值增1。 每个机器周期的S5P2期间,都对外部输入引脚T0或T1进行采样。如在第一个机器周期中采得的值为1,而在下一个机器周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1

  27. 期间,计数器加1。由于确认一次负跳变要花2个机器周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。 例如,选用6MHz频率的晶体,允许输入的脉冲频率最高为250kHz。如果选用12MHz频率的晶体,则可输入最高频率为500kHz的外部脉冲。 对于外部输入信号的占空比并没有什么限制,但为了确保某一给定电平在变化之前能被采样一次,则这一电平至少要保持一个机器周期。

  28. 图4-12对外部计数输入信号的要求 故对外部输入信号的要求如图4-12所示,图中,Tcy为机器周期。 28

  29. 4.4 编程步骤 1、定时器/计数器在查询方式下的编程步骤 • (1)关中断 • (2)TMOD初始化 • (3)设置定时/计数初值 • (4)启动定时/计数 • (5)查询TFi及相关处理

  30. 2.定时器/计数器在中断方式下的编程步骤 • (1)开中断 • (2)设置中断优先级 • (3)TMOD初始化 • (4)设置定时/计数初值 • (5)启动定时/计数 • (6)编写定时/计数中断处理程序

  31. 4.5 举 例 一、时间间隔为50ms的8个发光二极管闪烁 二、时间间隔为1s的8个发光二极管闪烁 三、时间间隔为1s的流水灯控制(任务7)

  32. 二 中断系统 内容概要 • 介绍片内功能部件中断系统的硬件结构和工作原理。 • 掌握与中断系统有关的特殊功能寄存器以及中断系统的应用特性。 • 应能熟练地进行中断系统的初始化编程以及中断服务子程序的设计。

  33. 4.2.1 AT89S51中断技术概述 • 1、什么可以引起中断?生活中有很多事件可以引起中断:有人按了门铃,电话铃响了,你的闹钟铃响了,你烧的水开了,你内急了....等等诸如此类的事件,我们把可以引起中断的事件称之为中断源。计算机中也有一些可以引起中断的事件,像MCU51单片机就有5个中断源。 • 看书的例子:你正在看书,突然电话铃响了,......。 • 中断就是正常的工作被外部事件打断了。 中断概念 中断是通过硬件来改变CPU的运行方向的。计算机在执行程序的过程中,外部设备向CPU发出中断请求信号,要求CPU暂时中断当前程序的执行而转去执行相应的处理程序,待处理程序执行完毕后,再继续执行原来被中断的程序。这种程序在执行过程中由于外界的原因而被中间打断的情况称为“中断”。

  34. 中断技术主要用于实时监测与控制,要求单片机能及时地响应中断请求源提出的服务请求,并作出快速响应、及时处理。这是由片内的中断系统来实现的。 当中断请求源发出中断请求时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。 中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续执行被中断的主程序。 图4-13为整个中断响应和处理过程。 34

  35. 图4-13中断响应和处理过程 中断服务程序:CPU响应中断后,转去执行相应的处理程序,该处理程序通常称之为中断服务程序。 主程序:原来正常运行的程序称为主程序。 断点:主程序被断开的位置(或地址)称为断点。 中断源:引起中断的原因,或能发出中断申请的来源,称为中断源。 中断请求:中断源要求服务的请求称为中断请求(或中断申请。 35

  36. 如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。如果单片机没有中断系统,单片机的大量时间可能会浪费在查询是否有服务请求发生的定时查询操作上。 采用中断技术完全消除了单片机在查询方式中的等待现象,大大地提高了单片机的工作效率和实时性。 4.2.2 AT89S51中断系统结构 中断系统结构图如图4-14所示。 中断系统有5个中断请求源(简称中断源),两个中断优先级,可实现两级中断服务程序嵌套。 每一中断源可用软件独立控制为允许中断或关中断状态,中断优先级均可用软件来设置。 36

  37. INT0 INT1 IT0=0 IT1=0 IT0=1 IT1=1 TCON IE IP 自然优先级 高级中断请求 PX0 IE0 EX0 PT0 TF0 T0 ET0 矢量地址 PX1 IE1 EX1 PT1 TF1 T1 自然优先级 ET1 低级中断请求 TI TXD PS RI RXD ES EA SCON 中断标志位 中断优先级 中断源允许 总允许 矢量地址 图4-14 AT89S51的中断系统结构示意图

  38. 4.2.2.1 中断请求源 由图4-14可见,AT89S51中断系统共有5个中断请求源: (1) ——外部中断请求0,中断请求信号由 引脚输入,中断请求标志为IE0。 (2) ——外部中断请求1,中断请求信号由引脚输入,中断请求标志为IE1。 (3)定时器/计数器T0计数溢出发出的中断请求,中断请求标志为TF0。 (4)定时器/计数器T1计数溢出发出的中断请求,中断请求标志为TF1。 (5)串行口中断请求,中断请求标志为发送中断TI或接收中断RI。 38

  39. 图4-15 特殊功能寄存器TCON的格式 4.2.2.2 中断请求标志寄存器 5个中断请求源的中断请求标志分别由TCON和SCON的相应位锁存。 1. TCON寄存器 为定时器/计数器的控制寄存器,字节地址为88H,可位寻址。特殊功能寄存器TCON的格式如图4-15所示。 39

  40. TCON各标志位功能如下: (1)TF1—定时器/计数器T1的溢出中断请求标志位。 当T1计数产生溢出时,由硬件使TF1置“1”,向CPU申请中断。CPU响应TF1中断时,TF1标志由硬件自动清“0”,TF1也可由软件清“0”。 (2)TF0—定时器/计数器T0的溢出中断请求标志位,功能与TF1类似。 (3)IE1—外部中断请求1的中断请求标志位。 (4)IE0—外部中断请求0中断请求标志位,功能与IE1类似。 (5)IT1—选择外部中断请求1为跳沿触发还是电平触发。 40

  41. IT1=0,电平触发方式,引脚上低电平有效,并把IE1置“1”。转向中断服务程序时,由硬件和软件把IE1清“0”。 IT1=0,电平触发方式,引脚上低电平有效,并把IE1置“1”。转向中断服务程序时,由硬件和软件把IE1清“0”。 IT1=1,跳沿触发方式,加到引脚上的外部中断请求输入信号电平从高到低的负跳变有效,并把IE1置“1”。转向中断服务程序时,由硬件自动把IE1清“0”。 (6)IT0—选择外部中断请求0为跳沿触发方式还是电平触发方式,其意义与IT1类似。 AT89S51复位后,TCON被清“0”,5个中断源的中断请求标志均为0。 TR1(D6位)、TR0(D4位)这2位与中断系统无关,已在定时器/计数器中介绍。 41

  42. 2. SCON寄存器 串行口控制寄存器,字节地址为98H,可位寻址。 低二位锁存串行口的发送中断和接收中断的中断请求标志TI和RI,格式如图4-16所示。 图4-16SCON中的中断请求标志位 各标志位的功能: (1)TI—串行口的发送中断请求标志位。每发送完一帧串行数据后,TI自动置“1”。TI标志必须由软件清“0”。 42

  43. (2)RI—串行口接收中断请求标志位。串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。必须在中断服务程序中用指令对RI清“0”。(2)RI—串行口接收中断请求标志位。串行口接收完一个串行数据帧,硬件自动使RI中断请求标志置“1”。必须在中断服务程序中用指令对RI清“0”。 4.2.2.3 中断允许与中断优先级的控制 中断允许控制由中断允许寄存器IE控制。 中断优先级控制由中断优先级寄存器IP控制。 4.2.2.3.1 中断允许寄存器IE AT89S51的对各中断源的开放或屏蔽,是由中断允许寄存器IE控制的。 IE字节地址为A8H,可位寻址,格式如图4-17所示。 43

  44. 图4-17中断允许寄存器IE的格式 IE对中断的开放和关闭实现两级控制。 有一个总的开关中断控制位EA(IE.7位), EA=0时,所有的中断请求被屏蔽; EA=1时,开放中断,但5个中断源的中断请求是否允许,还要由IE中的低5位所对应的5个中断请求允许控制位的状态来决定(图4-17)。 44

  45. IE中各位功能如下: (1)EA—中断允许总开关控制位。 EA=0,所有的中断请求被屏蔽。 EA=1,所有的中断请求被开放。 (2)ES——串行口中断允许位。 ES=0,禁止串行口中断。 ES=1,允许串行口中断。 (3)ET1——定时器/计数器T1的溢出中断允许位。 ET1=0,禁止T1溢出中断。 ET1=1,允许T1溢出中断。 (4)EX1——外部中断1中断允许位。 45

  46. EX1=0,禁止外部中断1中断。 EX1=1,允许外部中断1中断。 (5)ET0——定时器/计数器T0的溢出中断允许位。 ET0=0,禁止T0溢出中断。 ET0=1,允许T0溢出中断。 (6)EX0——外部中断0中断允许位。 EX0=0,禁止外部中断0中断。 EX0=1,允许外部中断0中断。

  47. AT89S51复位以后,IE被清“0”,所有中断请求被禁止。IE中与各个中断源相应的位可用指令置“1”或清“0”。AT89S51复位以后,IE被清“0”,所有中断请求被禁止。IE中与各个中断源相应的位可用指令置“1”或清“0”。 若使某一个中断源被允许中断,除了IE相应的位被置“1”外,还必须使EA位置“1”。 改变IE的内容,可由位操作指令来实现(EA=0;EA=1),也可用字节操作指令实现(IE=0x81)。 47

  48. 【例4-1】若允许片内2个定时器/计数器中断,并禁止其他中断源的中断请求,请编写设置IE的相应程序段。【例4-1】若允许片内2个定时器/计数器中断,并禁止其他中断源的中断请求,请编写设置IE的相应程序段。 (1)用位操作指令 ES=0;//禁止串行口中断 EX0=0;//禁止外部中断0中断 EX1=0; //禁止外部中断1中断 ET0=1;//允许定时器/计数器T0中断 ET1=1;//允许定时器/计数器T1中断 EA=1; //总中断开关位开放 (2)用字节操作指令 IE=0x8A; 上述两段程序对IE的设置是相同的。 48

  49. 4.2.2.3.2 中断优先级寄存器IP AT89S51的中断请求源有两个中断优先级,由软件分别设置为高优先级中断或低优先级中断,可实现: 两级中断嵌套 AT89S51正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序。两级中断嵌套的过程如图4-18所示。 49

  50. 中断的嵌套与优先级处理 • 设想一下,我们正在看书,电话铃突然响了,同时又有人按了门铃,你该先做那样呢? • 如果你正在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个很重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不等人上门)你可能会按你通常的习惯去处理。总之这里存在一个优先级问题。优先级问题不仅仅发生在两个或以上的中断同时产生的情况,也发生在一个中断已经产生,又有一个中断产生的情况。如你正在接电话,有人按门铃的情况,或你正在开门与人交谈,又有电话铃了的情况。考虑一下我们会怎么办吧。

More Related