第 5章 输入/输出与中断
5.1 输入/输出信息的传送方式
5.2 中断的概念
5.3 MCS -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.4 CPU对外设的两种编址方式
1、端口与主存储器单元统一编址统一编址,把主存储器的一部分地址空间分给端口,把每一个端口作为一个存储单元。
2、端口单独编址对端口单独编址时,端口不占主存地址空间,但必需设置专门的输入/输出指令访问端口。
5.1.5 CPU与外设之间的数据传送方式
CPU与外设之间的数据传送方式通常有以下 3种方式:无条件传送方式、查询方式和中断方式。
1、无条件传送方式
2、查询传送方式
3,中断传送方式
5.2 中断的概念
5.2.1 中断的定义所谓中断,是指 CPU正在处理某些事务的时候,
外部又发生了某一事件,请求 CPU及时处理 。 于是,
CPU暂时中断当前的工作,转而处理所发生的事件 。
处理完毕,再回到原来被中断的地方,继续原来的工作 。 这样的过程,称为中断 。
5.2.2 为什么要使用中断
5.2.3 中断的嵌套
5.3 MCS -51单片机的中断系统
MCS-51单片机有 5个中断源,两个优先级,可以实现两级中断嵌套 。
5.3.1 中断系统的内部结构
MCS-51单片机中断系统的结构,如图 5-5所示 。
1,中断源
(1) 外部中断源外部中断源 INT0,INT1是由外部输入的两个中断源 。 这两个外部中断请求源,直接触发寄存器 TCON
的 IE0,IE1,产生中断标志 。 触发方式有两种,一种是脉冲触发,一种是电平触发 。 外部中断源的触发方式由 TCON寄存器中的 IT0,IT1来决定 。 下面介绍
TCON寄存器中的 IE0,IT0,IE1,IT1。 TCON中的位格式如下:
T C O N ( 8 8 H ) D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
T F 1 T F 0 I E 1 I T 1 I E 0 I T 0
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寄存器的位格式如下:
S C O N ( 9 8 H ) D 7 D 6 D 5 D 4 D 3 D 2 D 1 D 0
TI RI
TI:串行口内部发送中断请求标志位 。 当串行口发送完一个字符后,由内部硬件使发送中断标志 TI置位 。 产生中断请求标志 。
RI:串行口内部接收中断请求标志位 。 当串行口接收到一个字符后,由内部硬件使接收中断请求标志位 RI置位 。 产生中断请求标志 。
串行口的发送中断 TI,和接收中断 RI,共用一个内部中断源 。 它们逻辑,或,后,作为一个内部的串行口中断源 。
2.中断允许寄存器 IE
中断允许寄存器 IE的作用,是控制所有中断源的开放或禁止,以及每个中断源是否被允许 。 寄存器 IE
的位格式如下:
I E ( A8 H ) D7 D 6 D5 D4 D 3 D2 D1 D0
EA — — ES ET
1
EX 1 ET
0
EX 0
EA:中断总允许位 。 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中断 。
3,中断优先级寄存器 IP
(1) 中断优先级寄存器 IP的位格式及优先级的设定
MCS-51单片机具有 2个中断优先级,均可编程设定为高优先级或低优先级 。 寄存器 IP的位格式如下:
IP ( B 8H ) D7 D6 D5 D4 D 3 D2 D1 D0
— — — PS PT
1
PX1 PT
0
PX0
PS:串行口中断优先级控制位 。 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.3.2 中断响应与中断返回
1,中断响应条件
MCS-51单片机响应中断有四个条件:一是中断源有请求;二是寄存器 IE的总允许位 EA=1,且 IE相应的中断允许位为 1;三是无同级或高级中断正在服务;四是现行指令执行完最后一个机器周期 。
2,中断响应与中断返回
(1) 保存断点
(2) 取中断向量
(3) 执行中断服务程序及中断返回
(4) 响应中断后各中断标志位的清除
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相接 。
主程序为:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP SERVE
MAIN,ORL P1,#0FFH ;灯全灭,准备读入
SETB IT0 ;选择边沿触发方式
SETB EX0 ;允许 INT0中断
SETB EA ; CPU开中断
AJMP $ ;等待中断中断服务子程序为:
SERVE,JNB P1,0,L1 ;若 X1无故障,跳到 L1
CLR P1,3 ;点亮 LED1
L1,JNB P1,1,L2 ;若 X2有故障,跳到 L2
CLR P1,4 ;点亮 LED2
L2,JNB P1,2,L3 ;若 X3有故障,跳到 L3
CLR P1,5 ;点亮 LED3
L3,RETI