项目二 中断应用系统设计 本项目学习目标: (1)制作一个单片机控制的彩灯电路。 (2) 理解中断的基本概念; 《单片机原理与应用》 项目二 中断应用系统设计 本项目学习目标: (1)制作一个单片机控制的彩灯电路。 (2) 理解中断的基本概念; (3) 理解MCS-51中断系统的结构和特点; (4) 掌握中断系统的处理过程和使用方法; (5) 掌握中断控制的程序设计方法;
《单片机原理与应用》 中断系统 中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因,而必须中止原来程序的执行,转去执行相应的处理程序,待处理结束之后,再回来继续执行被中止的原程序的过程。
MCS-51单片机的中断系统结构 主程序 中断响应 执行主程序 中断请求 执行中断处理程序 断点 继续执行主程序 中断返回 《单片机原理与应用》 MCS-51单片机的中断系统结构 主程序 中断响应 中断请求 执行主程序 执行中断处理程序 断点 继续执行主程序 中断返回
《单片机原理与应用》 中断的种类 能引起中断的原因是多样的,要求CPU进行处理的任务很多,为了更好地满足整个系统对实时性的要求,有必要对中断进行分类。通常,按引起中断的原因与CPU的关系分为外部中断和内部中断两大类。
《单片机原理与应用》 外部中断 外部中断是由CPU以外的原因引起的。这类中断通过硬件电路向CPU发出中断请求,因此将这类中断称为硬件中断。外部中断常用于外部设备和单片机之间的数据传送或人机交互等场合。
《单片机原理与应用》 外部中断的中断源 ①输入/输出设备及外存储设备; ②定时器或计数器电路; ③电源故障等。
内部中断是指由CPU内部原因引起的中断。这类中断发生在CPU的内部,因此称为内部中断。内部中断可分为陷阱中断和软件中断。 《单片机原理与应用》 内部中断 内部中断是指由CPU内部原因引起的中断。这类中断发生在CPU的内部,因此称为内部中断。内部中断可分为陷阱中断和软件中断。 ①陷阱中断是指由CPU内部事件引起的中断,如程序执行中的故障,或CPU内部的硬件故障等。 ②软件中断是指由专用的软件中断指令或系统调用指令引起的中断。其主要用于引入程序断点,便于进行程序调试和故障检测。
中断源 INT1 MCS-51单片机共有3类5个中断源,两个优先级,中断处理程序可实现2级嵌套,有较强的中断处理能力。 《单片机原理与应用》 中断源 MCS-51单片机共有3类5个中断源,两个优先级,中断处理程序可实现2级嵌套,有较强的中断处理能力。 5个中断源中,2个为外部中断请求 和 ,2个为片内定时器/计数器T0和T1的溢出中断请求TF0和TF1,1个为片内串行口中断请求TI或RI。这些中断请求信号锁存在特殊功能寄存器TCON和SCON中。 INT1
定时器/计数器控制寄存器TCON ①定时器/计数器控制寄存器TCON,其格式如图7.1所示。 图7.1 定时器/计数器控制字段 位地址 《单片机原理与应用》 定时器/计数器控制寄存器TCON ①定时器/计数器控制寄存器TCON,其格式如图7.1所示。 图7.1 定时器/计数器控制字段 位地址 8FH 8EH 8DH 8CH 8BH 8AH 89H 88H TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
与中断有关的控制位 其中与中断有关的控制位有6位:IT0、IE0、IT1、IE1、TF0 、TF1。 《单片机原理与应用》 与中断有关的控制位 其中与中断有关的控制位有6位:IT0、IE0、IT1、IE1、TF0 、TF1。 IT0:外部中断0请求方式控制位。IT0=0,外部中断0为电平触发方式,P3.2引脚上检测到低电平有效;IT0=1,外部中断0为边沿触发方式,P3.2引脚上检测到由高到低的负跳变有效。IT0由软件置位或复位。
《单片机原理与应用》 IE0:外部中断0请求标志位。CPU采样到P3.2引脚出现有效中断请求时,IE0由硬件电路自动置位;当CPU响应中断,转向中断服务程序时,IE0由硬件电路自动复位。
《单片机原理与应用》 外部中断1请求 IT1:外部中断1请求方式控制位,功能与IT0类似。 IE1:外部中断1请求标志位,功能与IE0类似。
《单片机原理与应用》 定时器/计数器溢出中断申请标志位 TF0:定时器/计数器T0溢出中断申请标志位。启动计数后,T0从初始值开始加1计数,当最高位产生溢出时,由硬件电路置位TF0,向CPU发出中断申请。CPU响应TF0中断时清除该标志位,TF0也可用软件查询后清除。 TF1:定时器/计数器T1溢出中断申请标志位,功能与TF0类似。
串行口控制寄存器SCON ②串行口控制寄存器SCON,其格式如图7.2所示。 图7.2 串行口工作方式控制字段 位地址 9FH 9EH 《单片机原理与应用》 串行口控制寄存器SCON ②串行口控制寄存器SCON,其格式如图7.2所示。 图7.2 串行口工作方式控制字段 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H SCON SM0 SM1 SM2 REN TB8 RB8 TI RI
《单片机原理与应用》 与中断有关的控制位 TI:串行口的发送中断标志位。当串行口发送完一帧8位数据后,由硬件电路置位TI。需要注意的是:CPU在响应发送中断请求后,转向中断服务程序时并不会对TI自动进行复位,因此用户应在中断服务程序中对TI进行手动复位。 RI:串行口的接收中断标志位。当串行口接收完一帧8位数据后,由硬件电路置位RI。类似的,用户应在中断服务程序中对RI进行手动复位。
中断允许控制 对于每个中断源,其开发与禁止由中断允许控制寄存器IE的控制位决定,其格式如图7.3所示。 图7.3 中断允许控制字段 位地址 《单片机原理与应用》 中断允许控制 对于每个中断源,其开发与禁止由中断允许控制寄存器IE的控制位决定,其格式如图7.3所示。 图7.3 中断允许控制字段 位地址 AFH AEH ADH ACH ABH AAH A9H A8H IE EA / ET2 ES ET1 EX1 ET0 EX0
与中断有关的控制位有:EA、ES、ET1、EX1、ET0、EX0。 《单片机原理与应用》 与中断有关的控制位有:EA、ES、ET1、EX1、ET0、EX0。 EA:中断允许总控制位。EA=0,关闭总控制位,禁止所有中断;EA=1,开放总控制位,每个中断源根据各自的控制位的置位或复位来确定开发或禁止。 ES:串行口中断允许控制位。ES=0,禁止串行口中断;ES=1,允许串行口中断。
定时器/计数器中断允许控制位 ET1:定时器/计数器T1中断允许控制位。ET1=0,禁止T1中断;ET1=1,允许T1中断。 《单片机原理与应用》 定时器/计数器中断允许控制位 ET1:定时器/计数器T1中断允许控制位。ET1=0,禁止T1中断;ET1=1,允许T1中断。 EX1:外部中断1中断允许控制位。EX1=0,禁止外部中断1;EX1=1,允许外部中断1。 ET0:定时器/计数器T0中断允许控制位。ET0=0,禁止T0中断;ET0=1,允许T0中断。 EX0:外部中断0中断允许控制位。EX0=0,禁止外部中断0;EX0=1,允许外部中断0。
中断响应优先级控制 中断源的响应优先级是由中断优先级寄存器IP的控制位决定的,格式如图7.4所示。 图7.4 中断优先级控制字段 位地址 《单片机原理与应用》 中断响应优先级控制 中断源的响应优先级是由中断优先级寄存器IP的控制位决定的,格式如图7.4所示。 图7.4 中断优先级控制字段 位地址 BFH BEH BDH BCH BBH BAH B9H B8H IP / PS PT1 PX1 PT0 PX0
中断优先级控制位 PS:串行口中断优先级控制位。PS=0,串行口中断响应优先级设为低优先级;PS=1,串行口中断响应优先级设为高优先级。 《单片机原理与应用》 中断优先级控制位 PS:串行口中断优先级控制位。PS=0,串行口中断响应优先级设为低优先级;PS=1,串行口中断响应优先级设为高优先级。 PT1:定时器/计数器T1中断优先级控制位。PT1=0,定时器/计数器T1中断响应优先级设为低优先级;PT1=1,定时器/计数器T1中断响应优先级设为高优先级。 PX1:外部中断1中断优先级控制位。PX1=0,外部中断1中断响应优先级设为低优先级;PX1=1,外部中断1中断响应优先级设为高优先级。
《单片机原理与应用》 中断优先级控制位 PT0:定时器/计数器T0中断优先级控制位。PT0=0,定时器/计数器T0中断响应优先级设为低优先级;PT0=1,定时器/计数器T0中断响应优先级设为高优先级。 PX0:外部中断0中断优先级控制位。PX0=0,外部中断0中断响应优先级设为低优先级;PX0=1,外部中断0中断响应优先级设为高优先级。
《单片机原理与应用》 中断系统结构
单片机对中断优先级的处理原则 同一优先级的中断源同时申请中断时,按自然优先级顺序确定应响应的中断申请; 《单片机原理与应用》 单片机对中断优先级的处理原则 同一优先级的中断源同时申请中断时,按自然优先级顺序确定应响应的中断申请; 不同优先级的中断源同时申请中断时,先处理高优先级的申请,后处理低优先级的申请; 正在处理低优先级中断时收到高优先级中断申请,停止处理低优先级中断以响应高优先级中断申请; 正在处理高优先级中断时收到低优先级中断申请,不响应低优先级中断申请。
对于同一优先级的中断申请 对于同一优先级的中断申请,单片机对中断申请响应顺序安排如下: 中断源 同一中断优先级 外部中断0 最高级 《单片机原理与应用》 对于同一优先级的中断申请 对于同一优先级的中断申请,单片机对中断申请响应顺序安排如下: 中断源 同一中断优先级 外部中断0 最高级 定时器/计数器T0中断 外部中断1 定时器/计数器T1中断 串行口中断 最低级
《单片机原理与应用》 中断响应 单片机响应中断的基本条件是:有效的中断请求;当前的所有中断请求中,响应优先级最高;中断允许控制寄存器IE中源允许开关和总允许开关均已开放。
《单片机原理与应用》 单片机中断响应过程 单片机中断响应过程:单片机一旦响应中断,首先置位相应的优先级有效触发器;然后执行一个硬件子程序调用,把断点地址压入堆栈;再把与各中断源对应的中断服务程序首地址送到程序计数器PC,同时清除中断请求标志(TI和RI除外),从而控制程序转移到中断服务程序。以上过程由中断系统自动完成。
中断服务程序入口地址 各中断源所对应的中断服务程序入口地址: 中断源 入口地址 外部中断0 0003H 定时器/计数器T0中断 000BH 《单片机原理与应用》 中断服务程序入口地址 各中断源所对应的中断服务程序入口地址: 中断源 入口地址 外部中断0 0003H 定时器/计数器T0中断 000BH 外部中断1 0013H 定时器/计数器T1中断 001BH 串行口中断 0023H
《单片机原理与应用》 中断服务程序入口地址 由于每个中断服务程序入口地址处只有8个字节的空间,无法放下完整的中断服务程序,通常是将中断服务程序放在内存的其他区域,而在入口地址处放一条长跳转指令LJMP,以转移到中断服务程序运行。单片机在保护断点后,转入中断服务程序,直到遇到RETI指令返回主程序为止。
《单片机原理与应用》 中断服务程序中加上参数 如使用C51语言编程,只需在中断服务程序中加上参数:interrupt n(n=0-4)即可,n的数值对应5个中断源。在返回主程序时,也无需再加入特别的中断返回指令。断点保护和返回在C51源程序编译时由系统自动完成。