第4章 单片机应用功能介绍 4.1 单片机中断系统介绍 4.1.1 中断系统结构 在CPU和外设交换信息时,存在着快速CPU和慢速外设间的矛盾,机器内部有时也可能出现突发事件,为此,计算机中通常采用中断技术。 ?中断 CPU和外设并行工作,当外设数据准备好( 或有某种突发事件发生)时向CPU提出请求,CPU暂停正在执行的程序转而为该外设服务(或处 理紧急事件),处理完毕再回到原断点继续执行原程序。 ?中断源 引起中断的原因,中断申请的来源,中断源可以是I/O设备、故障、时钟、调试中人为设置。 ?中断优先级 当有多个中断源同时 向CPU申请中断时,CPU优先响应最需紧急处理的中断请求,处理完毕再响应优先级别较低的 ,这种预先安排的响应次序。 ?中断的嵌套 在中断系统中,高优先级的 中断请求能中断正在进行的较低级的中断源处理, 8XX51有5个中断源,3个在片内,2个在片外,它们在程序存贮器中有固定的中断入口地址, 当CPU响应中断时,硬件自动形成这些地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形式中断嵌套。 1.中断源 8XX51有5个中断源,其符号、名称、产生条件及中断服务程序的入口地址如表4-1。 表4-1 中断服务程符号 名 称 中 断 引 起 原 因 序入口 外部中断0 P3.2引脚的低电平或下降沿信号 INT0 0003H 外部中断1 P3.3引脚的低电平或下降沿信号 INT1 0013H 定时器0中断 定时计数器0计数回零溢出 T0 000BH 定时器1中断 定时计数器1计数回零溢出 T1 001BH 串行通信完成一帧数据发送或接收引起串行口中断 TI/RI 0023H 中断 2. 中断控制的有关寄存器 (1)中断的允许和禁止——中断控制寄存器IE IE寄存器的各位对应相应的中断源,如果允许该中断源中断则该位置1,禁止中断则该 1 1/33页
位置0 。 表4-2 EA - - ES ETI EX1 ET0 EX0 中断总控 串行口 T1 INT1 T0 INT0 不用 不用 允/禁 允/禁 允/禁 允/禁 允/禁 允/禁
EA:中断总控开关,是CPU是否响应中断的前提。 EA=1,CPU开中断; EA=0, CPU关中断。 ES: 串行口中断允许位, ES=1,允许串行口发送/接收中断; ES=0,禁止串行口中断。 ET1:定时器T1中断允许位, ET1=1,允许T1计数溢出中断; ET1=0,禁止T1中断。 ET0: 定时器T0中断允许位, ET0=1,允许T1计数溢出中断; ET0=0,禁止T0中断。 EX1: 外部中断INT1允许位, EX1=1,允许INT1中断; EX1= 0,禁止INT1中断。 EX0: 外部中断INT0允许位, EX0=1,允许INT0中断; EX0= 0,禁止INT0中断。 (2)中断请求标志及外部中断方式选择寄存器TCON 表4-3 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 T1 T1 T0 T0 INT1 INT1 INT0 INT0 请求 工作 请求 工作 请求 方式 请求 方式 有/无 启/停 有/无 启/停 有/无 下沿/ 低有/无 下沿/低 电平 电平
说明: ? IT0和IT1为外中断INT0 和INT1中断触发方式选择,若选下降沿触发则相应位置 1;若选低电平触发 ,IT相应位置0。 ? 某中断源有中断请求,该中断标志置1,无中断请求,该中断标志置0 ?TR0 和 TR1 为定时器T0和T1 工作启动和停止控制。 (3)中断优先级管理寄存器IP 五个中断源的优先级别由IP寄存器管理,相应位置1,则该中断源优先级别高,置0 2 2/33页
的优先级别低。 ---------PS PT1 PX1 PT0 PX0 - - - 无用位 无用位 无用位 串行口 T1 INT1 T0 INT0 高/低 高/低 高/低 高/低 高/低 当 某几个中断源在IP寄存器相应位同为1或同为零时,由内部查询确定优先级,查询的顺序是:INT0 ? T0 ? INT1 ? T1 ? 串行口 。
3.中断系统结构如图4-1所示 图4-1 4. 中断响应过程 (1)中断处理过程 中断处理过程分为四个阶段:中断请求,中断响应,中断处理、中断返回。MCS,51系列单 片机的中断过程流程如图所示。 中断请求、中断响应过程由硬件完成。 中断服务程序应根据需要进行编写。程序中要注意保护现场和恢复现场。 中断返回是通过执行一条RETI中断返回指令,使堆栈中被压入的断 点地址送PC,从而返回主程序的断点继续执行主程序。另外RETI还有恢复优先级状态触发器 的作用,因此不能以RET指令代替“RETI”指令。 若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,然而下面三种情况单片机不响应此中断: ?当前正在执行的那条指令没执行完; ?当前响应了同级或高级中断; ?正在操作IE、IP中断控制寄存器或执行RETI指令。 3 3/33页
在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。 (2)中断请求的撤除 CPU响应中断后,应撤除该中断请求标志,否则会再次中断。 ?对定时计数器T0、T1的溢出中断,CPU响应中断后,硬件自动清除中断请求标志TF0和TF1。 ?对边沿触发的外部中断INT1和INT0,CPU响应中断后硬件自动清除中断请求标志IE0和IE1。 ?对于串行口中断,CPU响应中断后,没有用硬件清除中断请求标志TI、RI,即这些中断标志 不会自动清除,必须用软件清除,这是在编串行通信中断服务中应该注意的。 ?对电平触发的外部中断,CPU在响应中断时也不会自动清除中断标志,因此,在CPU响应中断后应立即撤除INT1或INT0的低电平信号。
4.1.2 中断系统的应用 1.中断技术是实时控制中的常用技术,51系列单片机有三个内部中断,二个外部中断。所谓外部中断就是在外部引脚上有产生中断所需要的信号。 每个中断源有固定的中断服务程序的入口地址(称矢量地址或向量地址)。当CPU响应中断以后单片机内部硬件保证它能自动的跳转到该地址。因此,此地址是应该熟记的,在汇编程序中,中断服务程序应存放在正确的向量地址内,(或存放一条转移指令)。 2.单片机的中断是靠内部的寄存器管理的,这就是中断允许寄存器IE,中断优先权寄存器IP ,必须在CPU开中断即开全局中断开关EA,开各中断源的中断开关,CPU才能响应该中断源的中断请求,其中缺一不可。 3.从程序表面看来,主程序和中断服务程序好象是没有关连的,只有掌握中断响应的过程,才能理解中断的发生和返回,看得懂中断程序,并能编写高质量中断程序。 4.本章重点应掌握中断的基本概念,中断程序的具体应用将在3.11.7中再继续讨论。
4.2 定时/计数器功能 4.2.1 8051定时/计数器结构和工作原理 51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。 ?两个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合 ?定时/计数器实际上是16位加1计数器。 T0由2个8位持殊功能寄存器TH0和TL0构成, T1由2个8位持殊功能寄存TH1和TL1构成。 ?每个定时器都可由软件设置为定时工作方式或 计数工作方式。 ?T0和T1受特殊功能寄存器TMOD和TCON控制。 1. 定时器工作方式 4 4/33页
设置为定时工作方式时,定时器计数的脉冲是由51单片机片内振荡器经12分频后产生的。(定时器又分四种工作方式,3.10.3讨论) 每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。 如:当8051采用12MHz晶体时,每个机器周期为1μs,计5 个机器周期即为5 μs,即定时5 μs 。 2. 计数器工作方式 设置为计数工作方式时,通过引脚T0(P3(4)和T1(P3(5)对外部脉冲信号计数。 ?当输入脉冲信号产生由1至0的下降沿时,定时器的值加1, 在每个机器周期CPU采样T0和T1的输入电平。若前一个机器周期采样值为高,下一个机器周期采样值为低,则计数器加 1。 ?由于检测一个1至0的跳变需要二个机器周期,故最高计数频率为振荡频率的二十四分之一。 ?虽然对输入信号的占空比无特殊要求,但为了确保某个电平在变化之前至少被采样一次,要求电平保持时间至少是一个完整的机器周期。
4.2.2 定时计数器的控制寄存器 ?定时器共有两个控制寄存器: 定时器控制TCON(88H) 定时器工作模式寄存器TMOD(89H) 1. 工作模式寄存器TMOD(89H) TMOD用于控制T0和T1的操作模式。其各位的定义如下: 定时器T1 定时器T0
TMOD D7 D6 D5 D4 D3 D2 D1 D0 (89H) GATE C/T M1 M0 GATE C/T M1 M0
? GATE:门控信号 GATE=0,TRx=1时即可启动定时器工作 ; GATE=1,INTx=1才可启动定时器工作。 ? C/T:定时器/计数器选择位 C/T=1,为计数器方式; C/T=0,为定时器方式。 ? M1 M0 工作模式选择位 M1M0=00 工作方式0(13位方式)。 M1M0=01 工作方式1(16位方式)。 M1M0=10 工作方式2(8位自动再装入方式)。 M1M0=11 工作方式3(T0为2个8位方式)。 5 5/33页 |
|