250 likes | 406 Views
单片机原理及接口. 陈麟 光电学院 mulzero@gmail.com. 第五章 中断系统. 微机的输入 / 输出方式. CPU 与外部设备交换信息方式: 无条件传送方式 查询传送方式 中断传送方式. 启动外部设备. 延迟. 传送数据. 第五章 中断系统. 无条件传送方式. 这种数据传送方式有些类似于 CPU 和存储器之间的数据传送,即 CPU 总是认为外设在任何时候都是出于“准备好”的状态。因此,这种传送方式不需要交换状态信息,只需要在程序中加入访问外设的指令,数据传送便可以实现。. 输入状态信息. 准备好?. 传送数据.
E N D
单片机原理及接口 陈麟 光电学院 mulzero@gmail.com
第五章 中断系统 微机的输入/输出方式 CPU与外部设备交换信息方式: 无条件传送方式 查询传送方式 中断传送方式
启动外部设备 延迟 传送数据 第五章 中断系统 无条件传送方式 这种数据传送方式有些类似于CPU和存储器之间的数据传送,即CPU总是认为外设在任何时候都是出于“准备好”的状态。因此,这种传送方式不需要交换状态信息,只需要在程序中加入访问外设的指令,数据传送便可以实现。
输入状态信息 准备好? 传送数据 第五章 中断系统 查询传送方式 优点:通用性好,可以用于各类外部设备和CPU间的数据传送。 缺点:是需要有一个等待过程,特别是在进行连续数据的传送时,由于外设速度比CPU慢得多,因此,CPU需要等待很长的时间,效率比较低。 查询传送也称为条件传送,可用于无条件传送不便于使用的场合,以解决外部设备与CPU之间的速度匹配问题。
第五章 中断系统 中断传送方式 • 当CPU正在处理某件事情的时候,外部发生的某一事情请求CPU迅速去处理,于是,CPU暂时中止当前的工作转去处理所发生的事情,中断服务处理完该事情之后,再回到原来被中止的地方,继续原来的工作,这样的过程称为中断。 • 实现这种功能的部件称为中断系统; • 产生中断的请求源(外设)称为中断源。 • 中断源向CPU提出的处理请求称为中断申请。 • CPU暂时中止自身的事务,转去处理事件的过程,称为中断响应过程。 • 对事件的整个处理过程,称为中断服务。处理完毕,再回到原来被中止的地方,称为中断返回。
第五章 中断系统 中断的一般处理过程 外设中断源 申请中断 INTR=0 CPU 响应中断 i+1条指令 i条指令 中断服务程序 CPU处理中断的过程可分为三个阶段,即中断响应、中断、处理和中断返回。
第五章 中断系统 中断的功能 • 分时操作。解决CPU速度快、外设速度慢的矛盾。在外设需要时发出中断申请,CPU才中断原有工作执行中断服务程序,与外设交换数据;中断服务结束,CPU返回原程序继续执行。 • 实时处理。控制系统往往有许多数据需要采集或输出。实时控制中有的数据难以估计何时需要交换。中断可为实时控制提供支持。 • 故障处理。计算机系统的故障往往随机发生,如电源断电、运算溢出、存储器出错等。采用中断技术,系统故障一旦出现,就能及时处理。
自 然 优 先 级 自 然 优 先 级 1 1 1 1 1 0 0 0 0 0 矢量 地址 矢量 地址 第五章 中断系统 8051中断系统结构及中断控制 高 级 中 断 请 求 TCON IE IP IT0=0 PX0 INT0 IE0 EX0 IT0=1 PT0 TO TF0 PC ET0 IT1=0 PX1 INT1 IE1 EX1 IT1=1 TF1 PT1 低 级 中 断 请 求 T1 ET1 TX TI PS + TR RI ES EA 优先级 源允许 总允许 SCON 中断标志 PC 硬件查询 8051单片机中断系统结构图
第五章 中断系统 8051中断源 8051中断系统的五个中断源为 INT0——外部中断0请求,低电平有效。通过P2.3引脚输入。 INT1——外部中断1请求,低电平有效。通过P3.3引脚输入。 T0——定时器/计数器0溢出中断请求。 T1——定时器/计数器1溢出中断请求。 TX/RX——串行口中断请求。 每个中断源都对应一个中断请求标志位,它们设置在特殊 功能寄存器TCON和SCON中。当这些中断源请求中断时,相应 的标志分别由TCON和SCON中的相应位来锁存。
中断源 中断矢量地址 外部中断0(INT0) 0003H 定时器T0中断 000BH 外部中断1(INT1) 0013H 定时器T1中断 001BH 串行口中断 0023H 第五章 中断系统 8051中断矢量 中断矢量:指向中断服务程序入口地址
第五章 中断系统 中断的控制 • 8051中断系统用以下四个特殊功能寄存器控制中断: • 定时器控制寄存器TCON(用六位)。 • 串行口控制寄存器SCON(用二位)。 • 中断允许寄存器IE。 • 中断优先级寄存器IP。
8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TCON (88H) TF1 TF0 IE1 IT1 IE0 IT0 第五章 中断系统 TF1/TF0——定时器/计数器T1/T0的溢出中断请求标志位。当计数器启动后,从初值开始计数,计数器最高位产生溢出时,由硬件使TF1 /TF0置1,并向CPU发出中断请求。CPU响应中断时,硬件自动对TF1 /TF0清0。 IE1/IE0——外部中断1/0的中断请求标志。当检测到外部中断引脚1 /0上存在有效的中断请求信号时,由硬件使IE1 /IE0置1。当CPU响应中断时,由硬件清0。 IT1/IT0——外部中断1/0的中断触发方式控制位。 IT1/IT0 = 0时,为电平触发方式。 IT1/IT0 = 1时,为边沿触发方式。 中断请求标志(TCON)
99H 98H SCON (98H) TI RI 第五章 中断系统 中断请求标志(SCON) TI——串行口发送中断请求标志位。CPU将一个数据写入发送缓冲器SBUF时,就启动发送。每发送完一帧串行数据后,硬件置位IT1。但CPU响应中断时,并不清除TI,必须在中断服务程序中由软件对TI清0。 RI——串行口接收中断请求标志位。在串行口允许接收时,每接收完一个串行帧,硬件置位RI。同时CPU响应中断时不会清除RI,必须用软件对其清0。 SCON为串行口控制寄存器,其低2位锁存串行口的接收中断和发送中断标志RI和TI。
AFH AEH ADH ACH ABH AAH A9H A8H IE (A8H) EA ET1 EX1 ET0 EX0 ES 第五章 中断系统 中断允许控制 8051对中断源的开放或者屏蔽是由中断允许控制器IE控制的。 EA——中断允许总控制位。EA=0,屏蔽所有中断请求;EA=1,,CPU开放中断。 ES——串行口中断允许位。ES=0,禁止;ES=1,允许。 ET1——定时器/计数器T1的溢出中断允许位。 EX1——外部中断1中断允许位。 ET0——定时器/计数器T0的溢出中断允许位。 EX0——外部中断0中断允许位。
BFH BEH BDH BCH BBH BAH B9H B8H IP (B8H) PS PT1 PX1 PT0 PX0 第五章 中断系统 中断优先级控制 PS——串行口中断优先级控制位。 PT1——定时器/计数器T1中断优先级控制位。 PX1——外部中断1中断优先级控制位。 PT0——定时器/计数器T0中断优先级控制位。 PX0——外部中断0中断优先级控制位。 若某几个控制位为1,则相应的中断源就规定为高级中断;若为0,则为低级中断。 8051有两个中断优先级。每一个中断请求源均可以通过对 中断优先级寄存器IP编程为高优先级中断或低优先级中断。
同级内的中断优先级 中断源 外部中断0 最 高 定时器/计数器0溢出中断 外部中断1 定时器/计数器1溢出中断 串行口中断 最 低 第五章 中断系统 当CPU同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件查询顺序。
第五章 中断系统 8051中断处理过程 • (中断源接口电路设置的)中断请求触发器提出中断申请 • 中断总允许位EA=1,即CPU开中断。 • 申请中断的中断源的中断允许位为1,即中断没有被屏蔽。 • 无同级或更高级中断正在被服务。 • 当前的指令周期已经结束。 • 若现行指令为RETI或者是访问IE或IP指令时,该指令以及紧接着的另一条指令已经执行完。
第五章 中断系统 中断处理 CPU在每个机器周期的S5P2采样各中断标志 若查询到某个中断标志=1,在下个机器周期响应中断 置位相应的中断优先级触发器 PC内容入栈(硬件执行LCALL指令,两周期) 中断矢量装入PC 中断返回 • 返回指令RETI。(清除中断响应时所设置的“优先级生效”触发器;从当前栈顶弹出断点地址送入程序计数器PC)。 • 若用户在中断服务程序中进行了压栈操作,则在RETI指令执行前应进行相应的出栈操作。PUSH和POP指令必须成对出现的,否则不能正确返回断点。
EA=1; 各控制位均允许中断 CPU 1、CPU响应中断 置位优先级触发器 执行一条指令 执行主程序 2、CPU自动将断点PC入栈 取下一条指令 指令结束 N Y N 3、CPU将中断源提供的中断矢量地址装入程序计数器PC 是否有中断请求 Y CPU自动执行中断响应 清除中断标志 断点保护 转中断服务 执行PUSH指令 保护现场 CPU 执行中断服务程序 中断服务 执行POP指令 恢复现场 原PC出栈,返回主程序 返回主程序 第五章 中断系统 8051的中断响应
中断服务程序的设计 第五章 中断系统 中断程序设计应注意的问题: 主程序 1、主程序的起始地址(PC=0030H) 2、主程序中初始化: ⑴ 中断服务程序入口地址的设定。 ⑵ 某一中断源中断请求的允许与禁止。 ⑶ 对于外部中断请求,还需进行触发方式的设定。 ⑷ 各中断源优先级别的设定。 ⑸ CPU开中断与关中断。
第五章 中断系统 例. 试编写设置外部中断INT0和串行接口中断为高优先级,外部中断INT1为低优先级。屏蔽T0 和T1中断请求的初始化程序段。
第五章 中断系统 ORG 0000H SJMP MAIN ORG 0003H LJMP INT0INT ;设外部中断中断矢量 ORG 0013H LJMP INT1INT ;设外部中断中断矢量 ORG 0023H LJMP SIOINT ;设串行口中断矢量 ORG 0030H MAIN:… MOV IP,#00010001B ;INT0和串口中断为高优先级 MOV IE,#10010101B;开INT0、INT1、串口、CPU中断
第五章 中断系统 用户在编写中断服务程序时,应注意以下几点: 各中断源的入口矢量地址之间只相隔8个单元,因而,最常见的方法是在中断入口地址单元处存放一条无条件转移指令,转移至存储器其它的任意空间。 • 若在执行当前中断时禁止更高级别中断,应关闭CPU中断或屏蔽更高级中断源的中断,在中断返回前再次开放中断。 • 在保护现场和恢复现场时,为了不使现场信息受到破坏或造成混乱,一般应关闭CPU中断,使CPU暂时不响应新的中断请求。
电路结构: 1、各中断源申请通过非门后与INT0连接。 2、无论哪个外设提出中断请求,都会使INT0引脚电平变低。 3、究竟哪个中断源提出申请,可通过P1.0~P1.3查询。 第五章 中断系统 中断加查询扩展中断源 装置1 装置2 装置3 装置4
保护现场 输入各中断源 中断触发器状态 Y A申请 N A外设服务 Y B申请 N B外设服务 DONE 恢复现场 返回主程序 第五章 中断系统 DV2: …… AJMP EXIT DV3: …… AJMP EXIT DV4: …… AJMP EXIT ORG 0003H LJMP INTRP INTRP: PUSH PSW PUSH A JB P1.0, DV1 JB P1.1, DV2 JB P1.2, DV3 JB P1.3, DV4 EXIT: POP A POP PSW RETI DV1: …… AJMP EXIT