第五章输入输出与中断

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第5章输入/输出与中断5.1输入/输出信息的传送方式5.2中断的概念5.3MCS-51单片机的中断系统5.4中断应用举例退出5.1输入/输出信息的传送方式5.1.1输入/输出的概念单片机常用的输出设备有:显示器、指示灯、微型打印机等。5.1.2输入/输出信息种类计算机与输入/输出设备之间交换信息,有三种信息形式:数据信息、控制信息和状态信息。5.1.3输入/输出设备与CPU的连接计算机的CPU与外设,并不直接相连,而是通过接口电路进行连接。它们的连接关系如图5-1所示。1、锁存功能接口电路用数据锁存器,解决双方速度匹配问题。2、隔离作用CPU既可以与存储器交换数据,也可以与任一外设交换数据。但任一时刻,只能与其中的一个设备交换数据。3、变换作用当外设的电平幅度不符合计算机的要求时,需要接口电路进行电平转换。4、联络作用只有在外设准备就绪时,才能与CPU交换数据,既可避免出错,又可提高CPU的工作效率。外设准备就绪状态,通过接口电路与计算机进行联系。因此,接口电路必需具有联络作用。5.1.4CPU对外设的两种编址方式1、端口与主存储器单元统一编址统一编址,把主存储器的一部分地址空间分给端口,把每一个端口作为一个存储单元。2、端口单独编址对端口单独编址时,端口不占主存地址空间,但必需设置专门的输入/输出指令访问端口。5.1.5CPU与外设之间的数据传送方式CPU与外设之间的数据传送方式通常有以下3种方式:无条件传送方式、查询方式和中断方式。1、无条件传送方式2、查询传送方式3、中断传送方式5.2中断的概念5.2.1中断的定义所谓中断,是指CPU正在处理某些事务的时候,外部又发生了某一事件,请求CPU及时处理。于是,CPU暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。5.2.2为什么要使用中断5.2.3中断的嵌套5.3MCS-51单片机的中断系统MCS-51单片机有5个中断源,两个优先级,可以实现两级中断嵌套。5.3.1中断系统的内部结构MCS-51单片机中断系统的结构,如图5-5所示。1、中断源(1)外部中断源外部中断源INT0、INT1直接触发寄存器TCON的IE0、IE1,产生中断标志。触发方式有两种,脉冲触发和电平触发。外部中断源的触发方式由TCON寄存器中的IT0、IT1来决定。TCON中的位格式如下:TCON(88H)D7D6D5D4D3D2D1D0TF1TF0IE1IT1IE0IT0如果是下降沿触发,当从高至低电平转变时,触发产生。低电平保持多久都只产生一次。如果是低电平触发,那么在低电平时间内中断一直有效。如果在电平没有恢复之前就退出中断程序,那么会在退出后又再次进入中断。只要不退出是不会重复触发的。我的做法是在退出前关闭中断,等后面有空时再打开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相同。(2)内部中断源内部中断源有定时器T0和T1溢出中断源,以及串行口发送/接收中断源。MCS-51内部有2个定时器/计数器,我们分别称它们为定时器T0和定时器T1,定时器T0和T1内部都有各自的计数器。当计数器计满溢出时,分别产生溢出中断,使各自的中断标志位TF0、TF1置“1”,产生中断请求标志。TF0和TF1为TCON寄存器中的2位。TF0:定时器T0的溢出中断标志位。TF1:定时器T1的溢出中断标志位。另一个内部中断源为串行口发送/接收中断源。其中断标志位占用SCON寄存器中的2位,它们是发送中断请求标志TI和接收中断请求标志RI。SCON寄存器的位格式如下:SCON(98H)D7D6D5D4D3D2D1D0TIRITI:串行口内部发送中断请求标志位。当串行口发送完一个字符后,由内部硬件使发送中断标志TI置位。产生中断请求标志。RI:串行口内部接收中断请求标志位。当串行口接收到一个字符后,由内部硬件使接收中断请求标志位RI置位。产生中断请求标志。串行口的发送中断TI,和接收中断RI,共用一个内部中断源。它们逻辑“或”后,作为一个内部的串行口中断源。2.中断允许寄存器IE中断允许寄存器IE的作用,是控制所有中断源的开放或禁止,以及每个中断源是否被允许。寄存器IE的位格式如下:IE(A8H)D7D6D5D4D3D2D1D0EA——ESET1EX1ET0EX0EA:中断总允许位。EA=1,CPU开放中断;EA=0,CPU禁止所有的中断请求。从图5-5的结构图中可以看到,总允许EA好比一个总开关。ES:串行中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。ET1:T1溢出中断允许位。ET1=1,允许T1中断;ET1=0,禁止T1中断。EX1:外部中断1允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。ET0:T0溢出中断允许位。ET0=1,允许T0中断;ET0=0,禁止T0中断。EX0:外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。例5-1若允许片内2个定时器/计数器中断,禁止其它中断源的中断请求。编写设置IE的相应程序段(1)用位操作指令来编写如下程序段:CLRES;禁止串行口中断CLREX1;禁止外部中断1中断CLREX0;禁止外部中断0中断SETBET0;允许定时器/计数器T0中断SETBET1;允许定时器/计数器T1中断SETBEA;CPU开中断(2)用字节操作指令来编写:MOVIE,#8AH或者用:MOV0A8H,#8AH;A8H为IE寄存器字节地址3、中断优先级寄存器IP(1)中断优先级寄存器IP的位格式及优先级的设定MCS-51单片机具有2个中断优先级,均可编程设定为高优先级或低优先级。寄存器IP的位格式如下:IP(B8H)D7D6D5D4D3D2D1D0———PSPT1PX1PT0PX0PS:串行口中断优先级控制位。PS=1,设定串行口为高优先级中断;PS=0,设定串行口为低优先级中断。PT1:T1中断优先级控制位。PT1=1,设定定时器T1为高优先级中断;PT1=0,设定定时器T1为低优先级中断。PX1:外部中断1优先级控制位。PX1=1,设定外部中断1为高优先级中断;PX1=0,设定外部中断1为低优先级中断。PT0:T0中断优先级控制位。PT0=1,设定定时器T0为高优先级中断;PT0=0,设定定时器T0为低优先级中断。PX0:外部中断0优先级控制位。PX0=1,设定外部中断0为高优先级中断;PX0=0,设定外部中断0为低优先级中断。MCS-51单片机复位后,IP寄存器低5位全部被清0,将所有中断源设置为低优先级中断。(2)不同优先级中断请求同时发生时CPU响应的优先顺序(3)相同优先级中断请求同时发生时CPU响应的优先顺序MCS-51单片机有5个中断源,当它们处于同优先级时的优先级顺序如表6-1所示。例5-2设置IP寄存器的初始值,使2个外中断请求为高优先级,其它中断请求为低优先级。(1)用位操作指令SETBPX0;2个外中断为高优先级SETBPX1CLRPS;串口为低优先级中断CLRPT0;2个定时器/计数器低优先级中断CLRPT1(2)用字节操作指令MOVIP,#05H或:MOV0B8H,#05H;B8H为IP寄存器的字节地址5.3.2中断响应与中断返回1、中断响应条件MCS-51单片机响应中断有四个条件:一是中断源有请求;二是寄存器IE的总允许位EA=1,且IE相应的中断允许位为1;三是无同级或高级中断正在服务;四是现行指令执行完最后一个机器周期。正在执行的指令是RETI或是访问IE或IP的指令。需要再去执行完一条指令,才能响应新的中断请求2、中断响应与中断返回(1)保存断点,PC压栈(2)取中断向量(3)执行中断服务程序及中断返回(4)响应中断后各中断标志位的清除中断请求的撤消1.定时器/计数器中断请求的撤消中断请求被响应后。硬件会自动清TF0或TF1。2.外部中断请求的撤消(1)跳沿方式外部中断请求的撤消是自动撤消的。(2)电平方式外部中断请求的撤消:除了标志位清“0”之外,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平,如图5-8所示。只要P1.0端输出一个负脉冲就可以使D触发器置“1”,从而撤消了低电平的中断请求信号。所需的负脉冲可增加如下两条指令得到:ORLP1,#01H;P1.0为“1”ANLP1,#0FEH;P1.0为“0”电平方式的外部中断请求信号的完全撤消,是通过软硬件相结合的方法来实现的。3.串行口中断请求的撤消响应串行口的中断后,CPU无法知道是接收中断还是发送中断,还需测试这两个中断标志位的状态,以判定是接收操作还是发送操作,然后才能清除。所以串行口中断请求的撤消只能用软件清除CLRTI;清TI标志位CLRRI;清RI标志位5.4中断应用举例【例5-1】图5-6为3个故障源显示电路,当系统无故障时,3个故障源输入端X1~X3全为低电平,对应的3个显示灯全灭;当某部分出现故障时,其对应的输入端由低电平变为高电平,从而引起MCS-51单片机中断,中断服务程序的任务是判定故障,并点亮对应的发光二极管。其中,发光二极管LED1~LED3对应3个输入端X1~X3。实现上述功能的电路如图5-6所示。3个故障源X1~X3通过“或非门”与8031单片机的外部中断0输入端相连,同时,X1~X3与P0口的P1.0~P1.2引脚相接,3支发光二极管LED1~LED3分别与P0口的P1.3~P1.5相接。主程序为:ORG0000HAJMPMAINORG0003HAJMPSERVEMAIN:ORLP1,#0FFH;灯全灭,准备读入SETBIT0;选择边沿触发方式SETBEX0;允许INT0中断SETBEA;CPU开中断AJMP$;等待中断中断服务子程序为:SERVE:JNBP1.0,L1;若X1无故障,跳到L1CLRP1.3;点亮LED1L1:JNBP1.1,L2;若X2有故障,跳到L2CLRP1.4;点亮LED2L2:JNBP1.2,L3;若X3有故障,跳到L3CLRP1.5;点亮LED3L3:RETI

1 / 37
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功