好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第四章1外部中断讲义教材.ppt

35页
  • 卖家[上传人]:yuzo****123
  • 文档编号:238782833
  • 上传时间:2022-01-12
  • 文档格式:PPT
  • 文档大小:757KB
  • / 35 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 4.3 中断系统 本节需要掌握:1、中断及相关概念2、微机中为何要设置中断3、MCS-51单片机的中断系统结构4、中断源与中断有关的寄存器设置5、中断的处理过程 计算机与外设之间传递信息:如何解决快速的CPU与慢速的外部设备之间传送数据的矛盾中断控制方式 当外部设备需要进行输入/输出 操作时,向CPU发出中断 请求信号, CPU进行中断处理 4.3.1 中断 一、中断定义 中断是指当CPU在正常执行程序时(事件A),由于外部或内部事件(事件B)强迫CPU停止当前执行的程序,转去为事件服务(中断服务),服务完毕,又能自动返回到被中断的程序中继续执行中断服务程序正常程序断点 2、中断的申请:中断源向CPU发出处理申请 3、中断的响应:CPU停止当前执行的程序A,转去处理中断申请的事件B 4、中断服务:对事件B的整个处理过程 5、中断返回:处理结束后,CPU再回到原来被打断的程序(事件A)继续执行 6、中断系统:实现上述功能的部件 四、中断处理过程 执行当前指令有请求否关中断保护断点和现场开中断中断服务关中断恢复现场开中断返回NY取下一条指令返回 1、中断源提出申请,并建立相应的中断标志(由硬件置位标志位); 2、CPU结束当前指令,响应该中断申请,同时把主程序断点处地址(程序计数器PC当前值)压入堆栈,即保护断点; 3、保护现场。

      把断点处的有关信息(如工作寄存器、累加器、标志位的内容),压入堆栈; 4、执行中断服务程序; 5、恢复现场把保存的现场内容从堆栈弹出,以恢复寄存器和存储单元的原有内容; 6、返回主程序(或调用程序),执行中断返回指令,把断点处地址从栈顶弹出,从断点处继续执行主程序(或调用程序)返回 4.3.2 80C51的中断系统 一、 80C51的中断系统结构 (一)80C51的中断系统有5个中断源,2个优先级,可实现二级中断嵌套 与中断有关的特殊功能寄存器有4个:1、IE:中断允许寄存器,控制CPU是否响应中断请求2、IP:中断优先级寄存器,控制中断请求的优先级3、TCON:定时/计数器控制寄存器,存放2个外部中断和2个定时/计数器中断中断请求标志和触发方式4、SCON:串行口控制寄存器,存放串行口中断标志二)80C51中断系统的结构 有5个中断源,2个优先级,可实现二级中断嵌套 8051的中断源外部中断源: 由P3.2端口线线引入,低电电平或下降沿引起 由P3.3端口线线引入,低电电平或下降沿引起内部中断源: T0:定时时器/计计数器0中断,由T0回零溢出引起 T1:定时时器/计计数器1中断,由T1回零溢出引起。

      TI/RI:串行I/O中断,串行端口完成一帧帧字符发发送/接收后引起 二、中断请求标志 1、TCON(定时/计数器控制寄存器)的中断标志IT0/IT1(TCON.0/2),外部中断0/1触发方式控制位 当IT0=0时,为电平触发方式 当IT0=1时,为边沿触发方式(下降沿有效)IE0/1(TCON.1/3),外部中断0/1中断请求标志位TF0(TCON.5),定时/计数器T0溢出中断请求标志位TF1(TCON.7),定时/计数器T1溢出中断请求标志位 利用中断请求标志位来向CPU请求中断!TF1 T1的溢出中断标志 硬件置1,硬件清0(也可软件清0)TF0 T0的溢出中断标志IE1 外部中断1(/INT1)请求标志 外部有中断请求时,硬件使IE1置1,硬件清0IE0 外部中断0(/INT0)请求标志IT1 外部中断1(/INT1)触发类型控制位 IT1=0 ,低电平触发IT1=1 , 下降沿触发 IT0 外中断0(/INT0)触发类型控制位,用法同IT1 2、SCON的中断标志RI(SCON.0),串行口接收中断标志位当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI同样,RI必须由软件清除。

      TI(SCON.1),串行口发送中断标志位当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程每发送完一个串行帧,由硬件置位TICPU响应中断时,不能自动清除TI,TI必须由软件清除 一、中断允许许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的 4.3.4 80C51中断的控制 EX0(IE.0),外部中断0允许位;ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位;ET1(IE.3),定时/计数器T1中断允许位;ES(IE.4),串行口中断允许位;EA (IE.7), CPU中断允许(总允许)位 若为“1”,开关接通,允许 若为“0”,开关断开,不允许为什么要有中断优先级? CPU同一时间只能响应一个中断请求若同时来了两个或两个以上中断请求,就必须有先有后 为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制 二、中断优先级控制 80C51单片机有两个中断优先级,可实现二级中断服务嵌套每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来规定的 PX0(IP.0): 外部中断0优先级设定位;PT0(IP.1): 定时/计数器T0优先级设定位;PX1(IP.2): 外部中断0优先级设定位;PT1(IP.3): 定时/计数器T1优先级设定位;PS (IP.4) : 串行口优先级设定位。

      该位是“1”时,为高级优先级 该位是“ 0”时,为低级优先级 同一优先级中的中断申请不止一个时,则有中断优先权排队问题同级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:80C51单片机的中断优先级有三条原则: CPU同时接收到几个中断时,首先响应优先级别最高的中断请求正在进行的中断过程不能被新的同级或低优先级的中断请求所中断正在进行的低优先级中断服务,能被高优先级中断请求所中断事件1事件2子程序2子程序1中断嵌套的概念: 主程序中断中断 三、中断响应过程和中断服务程序的执行 1 响应中断,由系统硬件将当前PC的内容压栈保护,将相应的中断服务程序的入口地址送PC 2 执行中断服务程序 5个中断源中断入口地址如下: INT0 0003H T0 000BH INT1 0013H T1 001BH 串行口 0023H 四、中断的返回 中断服务程序的最后一条指令为将压栈保护的PC的内容弹出,送回PC CPU可由被中断的位置继续执行原有程序 返回以INT0中断为为例简简述中断过过程(IT0=1):主程序在运行过过程中 中断源出现现中断信号(P3.2引脚出现现下降沿信号) 相应应的中断标标志(IE0)硬件自动动置1 向CPU申请请中断 CPU根据IE( EA=1,EX0=1 )、IP的设设置决定是否相应应中断 相应应的中断标标志位(IE0)自动动复位 将断点的地址存入堆栈栈 将相应应的中断服务务的入口地址0003H赋赋予程序计计数器PC,执执行中断程序 执执行完中断程序后,堆栈栈中断点地址由硬件自动赋动赋 予PC,程序返回主程序继继续执续执 行。

      C51编译器支持在C源程序中直接以函数形式编写中断服务程序常用的中断函数定义语法如下: void 函数名() interrupt nn为中断类型号,C51编译器允许031个中断,n取值范围031下面给出了8051控制器所提供的5个中断源所对应的中断类型号和中断服务程序入口地址:中断源 n 入口地址外部中断0 0 0003H定时/计数器0 1 000BH外部中断1 2 0013H定时/计数器1 3 001BH串行口 4 0023H例如定时器T0的中断服务程序用如下方法编写:void time0(void)interrupt 1 using 0/定时器T0的中断服务函数,T0的编号为1,使用第0组工作寄存器/中断服务程序外部中断程序模板main( )IT0=1;/中断边沿触发EX0=1;/允许外部中断0EA=1;/总允许while(1);/等待中断int0() interrupt 0 P2_0=!P2_0;/中断内容 前面不需要函数说明不能有返回值不能有形参主程序中没有调用中断函数的语句外部中断程序模板main( )IT0=1;/中断边沿触发EX0=1;/允许外部中断0EA=1;/总允许while(1);/等待中断int0() interrupt 0 P2_0=!P2_0;/中断内容 前面不需要函数说明不能有返回值不能有形参主程序中没有调用中断函数的语句中断函数与一般函数的区别中断函数一般函数前面不需要函数说明前面需要函数说明不能有返回值可以有返回值不能有形参可以有形参主程序中不需要调用语句 主程序中需要调用语句函数执行时间是随机的函数执行时间是确定的函数的入口地址是固定的 函数的入口地址是随机的用中断方式做计计数器1. 用外部中断0测量负跳变信号的累计数,同时在LED数码管上显示出来。

      用中断方式做计计数器#include #define uchar unsigned charuchar code led = 0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;/各数字的数码码管段码码uchar counter=0;main() EA=1; EX0=1; IT0=1; while(1) P1=ledcounter;void int0() interrupt 0 counter+; if(counter=10)counter=0;用外部中断改变流水灯的方式程序要求:中断前: P0.0P0.7的8个灯依次亮外部中断0: P0.0P0.7的左右4个灯闪烁闪烁 亮8次外部中断1: P0.0P0.7的8个灯间间隔闪烁闪烁 8次 设设定外部中断0为为高优优先级级,先执执行外部1中断,过过程中用外部0中断来将其中断,反之不行注意保护现场护现场 设设定外部中断1为为高优优先级级,先执执行外部0中断,过过程中用外部1中断来将其中断,反之不行注意保护现场护现场 在中断服务程序中,通常首先要保护现场,然后才是真正的中断处理程序。

      中断返回时需要恢复现场 在保护和恢复现场时,为了不使现场 的数据遭到破坏,一般规定此时CPU不再响应新的中断请求在编写中断服务程序的过程中,要注意在保护现场 前关中断,在保护现场 后若允许高优先级中断,则应 开中断同样,在恢复现场 前也应先关中断,恢复之后再开中断C51中断服务程序的注意事项:1)若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU对中断的响应,在中断返回前再开放中断2)注意外部电平触发的中断不锁存若在外部电平出现时被中断屏蔽,而在中断识别之前电平消失,它被完全忽略中断处理本身不能锁存外部电平请求3)外部中断0、1及定时器0、1的中断申请标志在CPU响应中断后会自动清0,但串行口中断标志TI/RI及定时器2的中断申请标志TF2不会自动清0,必须在中断服务程序中用软件清0,否则会立即产生重复中断,程序会陷入死循环对于串口中断,通常要判别是RI或TI中断4)为提高中断响应的实时性,中断服务程序应尽量简短,并避免使用复杂变量类型及复杂算术运算通常在中断服务程序中使用一些标志,由主程序或相应背景程序根据对应的标志作相应的处理 本节课 重点(重点的重点)中断的概念、五个中断源(顺序)中断有关的寄存器各位的含义中断的过程中断服务函数与一般函数的区别中断程序的书写框架作业简述中断函数与一般子函数的区别。

      以INT1中断为例简述中断响应的过程习题 4.1、4.2中可以做的习题 4.3(7)(8)。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.