资源预览内容
第1页 / 共16页
第2页 / 共16页
第3页 / 共16页
第4页 / 共16页
第5页 / 共16页
第6页 / 共16页
第7页 / 共16页
第8页 / 共16页
第9页 / 共16页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第六章第六章 51单片机的中断系统和外部中单片机的中断系统和外部中断断 6.1 51单片机的中断系统单片机的中断系统 6.2 51单片机的中断处理过程单片机的中断处理过程 6.3 51单片机的中断服务子程序设计单片机的中断服务子程序设计 6.4 51单片机的外部中断单片机的外部中断 6.5 51单片机外部中断应用实例单片机外部中断应用实例 16.1 51单片机的中断系统单片机的中断系统 51单片机的中断体系由相关控制寄存器和外部的中断引脚组成,这些外部中断引脚包括定时/计数器引脚T0/T1/T2/T2EX、外部中断引脚INT0/INT1以及串口发送和接收引脚RXD/TXD。 中断控制寄存器IE内部结构这个寄存器可以位寻址,可以对该寄存器相应位进行置“1”或清“0”来对相应的中断进行操作。 中断优先级控制寄存器IP来提高某个中断的优先级别,从而达到在多个中断同时发生时先处理该中断的目的。中断优先级控制寄存器内部结构,该寄存器可以位寻址,如果中断源对应的控制位被置位为1,则该中断源被置位为高优先级,否则则为低优先级,高优先级的中断事件总是被优先处理。26.2 51单片机的中断处理过程单片机的中断处理过程 6.2.1 51单片机中断系统的初始化步骤单片机中断系统的初始化步骤 1.初始化堆栈指针SP;2.设置中断源的触发方式;3.设置中断源的优先级别;4.使能相应中断源。注:在C语言编写的代码中,第一步会由编译器自动完成。 36.2 51单片机的中断处理过程单片机的中断处理过程 6.2.2 51单片机的中断服务子程序处理流程单片机的中断服务子程序处理流程 1.在中断向量入口放置一条跳转指令,让程序从中断向量入口跳转到其实际代码的起始位置;2.保存当前寄存器的内容;3.清除中断标志位;4.处理中断事件;5.恢复寄存器内容;6.返回到原来主程序的执行处。没有能够及时响应的中断请求标志位没有能够及时响应的中断请求标志位51单片机的中断处理流程单片机的中断处理流程 :屏蔽同级和低级别的中断;把当前程序指针PC的内容保存到堆栈中;根据中断标志位,把相应的中断源对应的中断向量入口地址装入到PC中;从中断向量入口地址跳转到对应的中断服务程序中;执行中断服务;中断服务执行完成之后打开被屏蔽的中断,然后从堆栈中取出原先保存的PC内容,使得程序可以从原先的PC地址继续运行。46.3 51单片机的中断服务子程序设计单片机的中断服务子程序设计 中断服务函数需要使用关键字interrupt来进行定义,interrupt后面的参数04表明了中断源,在实际使用中常常使用using来定义在中断服务函数中使用的寄存器组,其参数可以为03,分别对应通用工作寄存器组0组3,可以减少压入堆栈的变量内容,从而简化中断服务函数的内容,以加快程序执行的速度。标准结构:void 函数名(void) interrupt 中断标号 using 寄存器编号 中断函数代码; 51单片机中断源对应的中断标号按照内部优先级从高到低的顺序分配为05,外部中断0对应的中断号是0,定时/计数器T2对应的中断号是5 。56.4 51单片机的外部中断单片机的外部中断 由中断系统和外部引脚组成,其使用P3端口的P3.2(INT0)和P3.3(INT1)引脚来作为外部信号的输入引脚。 外部中断INT0和INT1在使能后有两种触发方式,一种是下降沿触发,一种是低电平触发,这两种方式可以选择,通过对定时计数器控制寄存器TCON(Timer/Counter Control Register)的相关位的设置来切换 当IT0/IT1被置“1”时,INT0/INT1被引脚上的下降沿触发,否则由引脚上的低电平触发。66.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.1 中断计数(三极管)中断计数(三极管) 1、三极管基础、三极管基础 三极管是一种用电流来控制电流的半导体器件其作用是把微弱信号放大成辐值较大的电信号,也常常用作无触点开关有三个引脚,分布为发射极(emitter/E)、基极(base/B)和集电极(collector/C)。2、Proteus中的三极管中的三极管 位于Transistors库中包括Bipolar、IGBT、JEET等。76.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.1 中断计数(三极管)中断计数(三极管) 3、实例的设计思路、实例的设计思路 内部设置一个软件计数器,当检测到外部中断的时候将该软件计数器增加,然后将计数器拆分之后的值对应的字符编码通过I/O口送出驱动数码管显示。 4、实例的、实例的Proteus电路电路 在51单片机的INT0引脚上连接了一个按键,按键的一端连接到地,另一端通过上拉电阻连接到INT0,对该按键被按下的事件计数,并且在三位8段数码管上显示出来。另外在普通I/O引脚上连接一个按键用于清零计数,当计数达到999或者清零按键被按下的的时候,数码管被归零,重新开始计数。 86.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.1 中断计数(三极管)中断计数(三极管) 4、实例的、实例的Proteus电路电路 96.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.1 中断计数(三极管)中断计数(三极管) 5、实例的应用代码、实例的应用代码 使用IE = 0x81和IT0 = 1使能了外部中断并且将中断触发事件设置为脉冲方式,在中断服务函数EX_INT0中对计数器Counter加1,并且拆分为对应的数字后在主循环中显示。 106.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.1 中断计数(三极管)中断计数(三极管) 6、实例的仿真结果和说明、实例的仿真结果和说明 点击运行,按下K1,可以看到显示的数据随着按键值的改变而发生改变,按下K2可以看到显示数据被清除 116.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.2 低电平中断的应用低电平中断的应用 1、实例的设计思路、实例的设计思路 INT0和INT1引脚上分别两连接到开关S1和S2,P1.0和P1.7引脚使用灌电流方式驱动了两个LED,单片机配置为外部中断0、外部中断1均为电平触发方式,中断优先级为默认。当SW1和SW2单独闭合时,对应的LED1和LED2闪烁;如果SW1闭合后SW2闭合,只有LED1闪烁;如果SW2闭合后SW1闭合,开始LED2闪烁,当SW1闭合后LED2不闪烁,LED1闪烁;如果SW1和SW2同时闭合,LED1闪烁,当SW1断开后LED1停止闪烁,LED2开始闪烁。 2、实例的、实例的Proteus电路电路 126.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.2 低电平中断的应用低电平中断的应用 3、实例的应用代码、实例的应用代码 51单片机使用两个外部中断服务子程序来对外部中断0和外部中断1的进行处理,在中断服务子程序中只做一件事情,就是控制对应的LED翻转。 4、实例的仿真结果和说明、实例的仿真结果和说明 136.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.3 多个信号共用一个外部中断多个信号共用一个外部中断 1、实例的设计思路、实例的设计思路 将多个信号通过输入与门的输出信号连接到单片机的外部中断引脚上,然后同时将4个信号分别连接到51单片机的一个外部引脚上,当检测到外部中断信号的时候去检测这些外部引脚上的信号,然后判断到底是哪个信号触发了外部中断事件。2、实例的实例的Proteus电路电路 4个由按键(K1K4)和上拉电阻构造的低电平事件信号通过74LS21四输入与门连接到单片机的外部中断引脚INT0(P3.2)上,然后4个信号分别连接到单片机的P1.0P1.3引脚上 146.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.3 多个信号共用一个外部中断多个信号共用一个外部中断 3、实例的应用代码、实例的应用代码 当4个外部中断事件中有一个变为低电平的之后,四输入与门的输出为低电平,触发外部中断0中断事件,程序进入EX_Int0函数,然后对P1.4P1.7的引脚电平进行判断,从而确定是哪一个外部中断事件触发了中断事件。 156.5 51单片机外部中断应用实例单片机外部中断应用实例 6.5.3 多个信号共用一个外部中断多个信号共用一个外部中断 4、实例的仿真结果和说明、实例的仿真结果和说明 点击运行,分别按下不同的按键,可以看到对应的发光二极管发生变化。16
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号