260 likes | 387 Views
第 6 章 MCS-51 的中断控制系统. 所谓中断,是指 CPU 正在处理某些事务的时候,外部又发生了某一事件,请求 CPU 及时处理。于是, CPU 暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。. 退出. 6.1 中断请求源 6.2 中断系统的控制 6.3 中断的响应过程 6.4 外部中断的响应时间 6.5 外部中断的触发方式 6.6 多外部中断源系统设计. 6.1 中断请求源. MCS-51 的中断系统的结构.
E N D
第6章MCS-51的中断控制系统 • 所谓中断,是指CPU正在处理某些事务的时候,外部又发生了某一事件,请求CPU及时处理。于是,CPU暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。 退出
6.1 中断请求源6.2 中断系统的控制6.3 中断的响应过程 6.4 外部中断的响应时间 6.5 外部中断的触发方式 6.6 多外部中断源系统设计
6.1 中断请求源 MCS-51的中断系统的结构
6.1.1定时器/计数器控制寄存器TCON • 定时器/计数器控制寄存器TCON锁存了外部中断源及其触发方式、定时器T0和T1溢出中断。TCON寄存器中的IE0、IT0、IE1、IT1。TCON中的位格式如下:
IE0:为外部中断INT0的请求标志位。当INT0引脚上出现中断请求信号(低电平或脉冲下降沿)时,硬件自动将IE0置“1”,产生中断请求标志。IE0:为外部中断INT0的请求标志位。当INT0引脚上出现中断请求信号(低电平或脉冲下降沿)时,硬件自动将IE0置“1”,产生中断请求标志。 IT0:外部中断INT0触发方式控制位。由软件来置“1”或清“0”,以控制外部中断INT0的触发方式。当IT0=1 时,外部中断INT0为下降沿触发。即外部中断INT0出现下降沿时,触发IE0,使其为“1”;当IT0=0时,外部中断INT0为电平触发。即外部中断INT0出现低电平时,触发IE0,使其为“0”。 IE1:为外部中断INT1的请求标志位。功能与IE0相同。 IT1:外部中断INT1触发方式控制位。功能与IT0相同。
6.1.2 串行口控制寄存器SCON SCON寄存器的位格式如下:
TI:串行口内部发送中断请求标志位。当串行口发送完一个字符后,由内部硬件使发送中断标志TI置位。产生中断请求标志。TI:串行口内部发送中断请求标志位。当串行口发送完一个字符后,由内部硬件使发送中断标志TI置位。产生中断请求标志。 • RI:串行口内部接收中断请求标志位。当串行口接收到一个字符后,由内部硬件使接收中断请求标志位RI置位。产生中断请求标志。 • 串行口的发送中断TI和接收中断RI共用一个内部中断源。它们逻辑“或”后,作为一个内部的串行口中断源。
6.2 中断系统的控制 6.2.1 中断允许寄存器IE 中断允许寄存器IE的作用,是控制所有中断源的开放或禁止,以及每个中断源是否被允许。寄存器IE的位格式如下:
EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。 • ET0:T0溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。 • EX1:外部中断1允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。 • ET1:T1溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。 • ES:串行中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。 • EA:中断总允许位。EA=1,CPU开放中断;EA=0,CPU禁止所有的中断请求。总允许EA好比一个总开关。
6.2.2 中断优先级寄存器IP • (1) 中断优先级寄存器IP的位格式及优先级的设定 • MCS-51单片机具有2个中断优先级,均可编程设定为高优先级或低优先级。寄存器IP的位格式如下:
PX0:外部中断1优先级控制位。PX1=0,设定外部中断0为高优先级中断;PX0=0,设定外部中断1为低优先级中断。PX0:外部中断1优先级控制位。PX1=0,设定外部中断0为高优先级中断;PX0=0,设定外部中断1为低优先级中断。 • PT0:T0中断优先级控制位。PT0=1,设定定时器T0为高优先级中断;PT0=0,设定时器T0为低优先级中断。 • PX1:外部中断1优先级控制位。PX1=1,设外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断。 • PT1:T1中断优先级控制位。PT1=1,设定定时器T1为高优先级中断;PT1=0,设定定时器T1为低优先级中断。 • PS:串行口中断优先级控制位。PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。
MCS-51单片机复位后,IP寄存器低5位全部被清0,将所有中断源设置为低优先级中断。当它们处于同优先级时的优先级顺序如表所示。MCS-51单片机复位后,IP寄存器低5位全部被清0,将所有中断源设置为低优先级中断。当它们处于同优先级时的优先级顺序如表所示。
6.3 中断的响应过程 • MCS-51的CPU在每一个机器周期顺序检查每一个中断源,在每一机器周期的状态周期S6采样并按优先级顺序处理所有被激活了的中断请求,如果没有被下述条件所阻止,将在下一个机器周期的状态周期S1响应激活了的最高级中断请求。 • (1)CPU正在处理相同的或更高优先级的中断。 • (2)现行的机器周期不是所执行指令最后一个机器周期。 • (3)正在执行的指令是RETI或是访问IE或IP的指令(CPU在执行RETI或访问IE、IP的指令后,至少需要再执行一条指令才会响应新的中断请求。 • 如果上述条件中有一个存在,CPU将丢弃中断查询的结果。
CPU响应中断时,先置相应的优先级状态触发器(该触发器指出CPU开始处理的中断优先级别),然后执行一个硬件子程序调用,使控制转移到相应的入口,中断请求源申请标志清0(T1和RI除外),硬件把程序计数器PC的内容压入堆栈,把中断子程序(即中断服务程序)的入口地址(中断向量)送入程序计数器PC。CPU响应中断时,先置相应的优先级状态触发器(该触发器指出CPU开始处理的中断优先级别),然后执行一个硬件子程序调用,使控制转移到相应的入口,中断请求源申请标志清0(T1和RI除外),硬件把程序计数器PC的内容压入堆栈,把中断子程序(即中断服务程序)的入口地址(中断向量)送入程序计数器PC。 • 8031单片机各个断源的中断服务程序入口地址是固定不变的,如下表所示。CPU从相应的中断服务程序入口地址开始执行程序。
ORG 0000HAJMP MAINORG 0003HAJMP INT0ORG 000BHAJMP T0ORG 001BHAJMP INT1ORG 0023HAJMP ES
CPU从相应的中断服务程序入口地址开始执行程序,直到RETI为止。RETI指令表不中断服务程序的结束,CPU执行该指令时、一方面把响应中断时所置位的优先级状态触发器清0;另—方面从栈顶弹出断点地址(两个字节)送到程序计数器PC,CPU从原来中断处更新执行被中断的程序。CPU从相应的中断服务程序入口地址开始执行程序,直到RETI为止。RETI指令表不中断服务程序的结束,CPU执行该指令时、一方面把响应中断时所置位的优先级状态触发器清0;另—方面从栈顶弹出断点地址(两个字节)送到程序计数器PC,CPU从原来中断处更新执行被中断的程序。
例1假定程序进行这样的设置, • SETB EA • SETB EX1 • SETB ET1 • SETB ES • SETB PS • SETB PT1 • SETB PX0 • 则: ______________________可以被响应. • A. CPU 正在执行INT1中断,TF1请求. • B. CPU正在执行TF1中断, TI请求. • C. CPU正在执行INT1中断, INT0请求 . • D. CPU正执行主程序, TF1出现请求
答案: A D • SETB EA ; 总中断允许 • SETB EX1 ;INT1允许 • SETB ET1 ;TF1允许 • SETB ES ;TI 和RI允许 • SETB PS ; TI 和RI高优先级别 • SETB PT1 ;TF1高优先级别 • SETB PX0 ;INT0高优先级别 • A. CPU 正在执行INT1中断,TF1请求. • B. CPU正在执行TF1中断, TI请求. • C. CPU正在执行INT1中断, INT0请求 . • D. CPU正执行主程序, TF1出现请求
例2. 如果计算机使用TF0 和外部中断源INT0, INT0边沿触发方式,级别高。 • 如何设置
答案: 计算机使用TF0 和外部中断源INT0, INT0边沿触发方式,级别高SETB EA ; 总中断允许SETB ET0 ; TF0中断允许SETB EX0 ; INT0中断允许 SETB IT0 ; INT0边沿触发方式SETB PX0 ; INT0级别高
6.4 外部中断的响应时间 • 在一个单一的中断的系统里,外部中断的响应时间总是在3-8个机器周期之间。
6.5 外部中断的触发方式选择 • 6.5.1 电平触发方式 • 电平触发方式适合于外部中断请求以低电平输入而且中断服务程序能清除外部中断请求源的情况。
6.5.2 边沿触发方式 • 外部中断的边沿触发方式适合于以负脉冲形式输入的外部中断请求。
6.6 多外部中断源系统设计 • 6.6.1 用定时器/计数器扩展外部中断源 • 6.6.2 中断和查询结合的方法 • 6.6.3 用优先权编码器扩展外部中断源