第五章 中断系统主要内容
1、微机的输入 /输出方式
2、中断的概念
3,8051中断系统结构及中断控制
4、中断处理过程
5、外部中断扩展方法
6、中断程序举例
5.1 微机的输入 /输出方式一、无条件传送方式二、查询传送方式三、直接存储器存取( DMA)方式四、中断传送方式
5.2 中断的概念中断,CPU挂起正在执行的程序而转去处理特殊的事件的操作。
采用中断技术可以实现以下功能:
1、分时操作
2、实时处理
3、故障处理
5,3 8051中断系统结构及中断控制
5,3,0 8051中断系统结构
8051单片机中断系统的组成:
由五个中断源、四个中断控制寄存器构成。
1、五个中断源,
2个外部,2个定时器 /计数器,1个串行通信中断
2、四个中断控制寄存器 ( 标志、允许、优先级 ):
中断控制寄存器 IE、中断优先级寄存器 IP、定时器 /计数器控制寄存器 TCON( 6位)、串行通信寄存器 SCON( 2位),控制中断类型、中断的开关、中断的优先级
IE
5,3,1 8051中断源
8051有 5个中断源:
1,INT0----外部中断 0,从 P3.2引脚输入;
2,INT1----外部中断 1,从 P3.3引脚输入;
3,T0----定时器 /计数器 0溢出中断,内中断;
4,T1----定时器 /计数器 1溢出中断,内中断;
5,TX/RX----串行口中断,内中断。
5个中断源的中断服务程序入口地址:
5,3,2 中断控制所涉及的寄存器( 4个)
一、中断请求标志分布在两个寄存器中
1,TCON中的中断标志( 4个)
TCON:定时器 /计数器控制寄存器
TF1:定时器 /计数器 1溢出中断请求标志,溢出时置 1,向 CPU发出中断请求,响应后 自动清 0。
TF0:定时器 /计数器 0溢出中断请求标志,含义同
TF1 。
IE1:外部中断 1的中断请求标志,外部 有中断请求信号时置 1,向 CPU发出中断请求,响应后 自动清
0。
IE0:外部中断 0的中断请求标志,含义同 IE1 。
IT1:外部中断 1的触发方式控制位:
IT1=0:低电平触发;
IT1=1:下降沿触发。
IT0:外部中断 0的触发方式控制位,含义同 IT1 。
2,SCON中的中断标志( 2个)
TI:串行口 发送中断请求标志,串行口 发送完一帧数据后置 1,向 CPU发出中断请求,响应后不自动清 0,需软件编程清 0。
RI:串行口 接收中断请求标志,串行口 接收到一帧数据后置 1,向 CPU发出中断请求,响应后不自动清 0,需软件编程清 0。
二、中断允许控制寄存器 IE
各位 为 1时允许 中断,为 0时禁止 中断。
EA:中断允许总控制位。
EA=0,CPU禁止中断,EA=1,CPU开放中断。
ES:串行口中断允许位
ET1:定时器 /计数器 1溢出中断允许位
ET0:定时器 /计数器 0溢出中断允许位
EX1:外部中断 1的中断允许位
EX0:外部中断 0的中断允许位例 5-1 假设某单片机系统允许片内定时器 /计数器中断,
禁止其它的中断。试设置 IE的值。
法一:用字节操作指令
MOV IE,#8AH
或 MOV 0A8H,#8AH
法二:用位操作指令
SETB ET0
SETB ET1
SETB EA
三、中断优先级控制寄存器 IP(priority)
8051单片机有两个中断优先级,高和低优先级 。
各位 为 1时为高优先级,为 0时为低优先级 。
PS----串行口中断优先级控制位;
PT1----定时器 /计数器 1中断优先级控制位;
PT0----定时器 /计数器 0中断优先级控制位;
PX1----外部中断 1中断优先级控制位;
PX0----外部中断 0中断优先级控制位。
中断优先级次序:
( 1)高优先级中断能够打断低优先级中断服务程序实现中断嵌套。
( 2)同级优先级的次序相同优先级中断不能够打断其中断服务程序实现中断嵌套。
例 5-2 假设某单片机系统片外中断为高优先级,片内中断为低优先级。试设置 IP的值。
法一:用字节操作指令
MOV IP,#05H
或 MOV 0B8H,#05H
法二:用位操作指令
SETB PX0
SETB PX1
CLR PS
CLR PT0
CLR PT1
5.4 中断处理过程中断处理过程分为三个阶段:响应、处理、返回。
5,4,1 中断响应一、中断响应条件( 6条)
( 1)有中断请求;
( 2) CPU开放中断,即 EA=1;
( 3)对应的中断源允许中断;
( 4)无同级或更高级中断正在服务;
( 5)当前的指令周期已经结束;
( 6)执行了指令 RETI或访问 IE,IP后又执行了一条指令。
CPU在每个机器周期的 S5P2期间对个中断源采样。
二、中断响应操作过程
1、查询中断源
( 1) 采样置中断标志,在 S5P2期间进行;
( 2) 查询中断标志,在 S6期间进行;
( 3) 处理中断,在下一个 S1期间。
2、置中断处理标志对不可编程的“高优先级生效触发器”或“低优先级生效触发器”置位。
3、转入中断服务程序
( 1)保护断点,PC值进栈( 先送低 8位,再送高 8位 )
( 2)转去执行中断服务程序:把中断入口地址装入
PC并执行,使用的是 LCALL指令。
三、中断响应时间 ( 3~8个机器周期 )
1、基本响应时间 ( 3个机器周期 )
( 1)查询中断标志,1个机器周期;
( 2)转去执行中断服务程序,2个机器周期。
2、额外的处理时间 ( 0 ~5 个机器周期 )
RETI指令,2个机器周期;
MUL或 DIV指令,4个机器周期。
5,4,2 中断处理一、含有中断服务程序的程序结构
ORG 0000H
START,LJMP MAIN
LJMP INTEX0
ORG 000BH
LJMP INTT0
ORG 0013H
LJMP INTEX1
ORG 001BH
LJMP INTT1
ORG 0023H
LJMP INTS
ORG 0030H
MAIN,……
:
INTEX0,…

:
:
INTT0,…

:
:
INTEX1,…

:
:
INTT1,…

:
:
二、中断服务程序的结构 ( 四部分 )
1、保护现场;
2、处理中断的程序;
3、恢复现场;
4、中断返回,RETI
三、编写中断服务程序应注意的几点
1、中断程序入口处的处理;
2、程序中可以禁止高级中断;
3、在保护和恢复现场时可关闭 CPU中断,以免造成混乱。
5,4,3 中断返回在中断服务子程序的最后必须用,RETI”指令
RETI指令作用有二:
1、子程序返回;
2、清除中断服务标志,即给“优先级生效”触发器清
0。
第五章作业
2 4 5
5.5 外部中断扩展方法
8051的外部中断源仅有两个,需要时可以扩展。
5,5,1 利用定时器扩展外部中断源方法,
( 1)把 8051的定时器 /计数器 做计数器使用 ;
( 2)计数 初值设为 FFFFH( 16位计数器) ;
( 3)外部中断请求信号从 P3.4或 P3.5输入 。
当外部中断请求信号有效时,使计数器加 1而溢出,
向 CPU发出中断请求。
5,5,2 中断加查询扩展外部中断源一、电路及工作原理各个外中断经过
,线或,接入到 INT0
或 INT1上,高产生中断请求。
P1.0~P1.3用于查询。
二、中断服务程序的查询部分设 4个装置的中断优先级是 装置 1?装置 4,其程序为:
中断程序入口及主程序部分:
ORG 0000H
START,AJMP MAIN
ORG 0003H
LJMP INTRP

MAIN,……
:
查询部分:
INTRP,CLR EA ;关中断
PUSH PSW
PUSH A
SETB EA
JB P1.0,DV1
JB P1.1,DV2
JB P1.2,DV3
JB P1.3,DV4
EXIT,CLR EA
POP A
POP PSW
SETB EA
RETI
各装置的中断服务程序部分:
DV1,……
(装置 1的中断服务程序 )

LJMP EXIT
DV2,……
(装置 2的中断服务程序 )

LJMP EXIT
DV3,……
(装置 3的中断服务程序 )

LJMP EXIT
DV4,……
(装置 4的中断服务程序 )

LJMP EXIT
5.6 中断程序举例
5,6,1 主程序一、主程序的起始地址在 0000H处放一,LJMP”指令二、主程序的初始化内容初始化,是对将要用到的单片机内部的部件或扩展芯片进行初始状态设定。
此处需要设定的寄存器有 TCON,IP和 IE
TCON:设定外中断的触发方式
IP:中断优先级
IE:中断允许、禁止
5,6,2 中断服务程序一、中断服务程序的起始地址中断服务程序的 入口地址中断服务程序的 起始地址二、中断服务程序编制中的注意事项
1、视需要确定是否保护现场
2、及时清除那些不能自动清除的中断标志
3、中断服务程序中的,PUSH”与,POP”指令必须成对使用
4、主程序与中断服务程序间的参数传递方法:
可通过( 1)寄存器;( 2)存储单元;( 3)堆栈;
( 4)变量。
例 5-3 如右图所示,
将 P1口的 P1.4~P1.7作为输入位,P1.0~P1.3作为输出位。要求利用 8031
将开关所设的数据读入单片机,并依次通过
P1.0~P1.3输出,驱动发光二极管,以检查 P1.4
~P1.7输入的电平情况
(高电平 LED亮 )。现要求采用中断触发方式,每中断一次完成一次操作 。
程序如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTER
ORG 0030H
MAIN,SETB EX0
SETB IT0
SETB EA
HERE,SJMP HERE
中断服务子程序:
(输入、显示)
ORG 0200H
INTER,MOV P1,#0F0H
MOV A,P1
SWAP A
MOV P1,A
RETI
END
例 5-4 如右图所示的中断电路可实现系统的故障显示。当系统的各部分正常工作时,
4个故障源的输入均为低电平,显示灯全不亮。当有某个部分出现故障时,则相应的输入线由低电平变为高电平
,相应的发光二极管点亮。
程序如下:
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP INTER
ORG 0030H
MAIN,SETB EX0
SETB IT0
SETB EA
HERE,SJMP HERE
中断服务子程序:
ORG 0100H
INTER,JNB P1.0,L1
SETB P1.1
L1,JNB P1.2,L2
SETB P1.3
L2,JNB P1.4,L3
SETB P1.5
L3,JNB P1.6,L4
SETB P1.7
L4,RETI
END
例 5-5 某工业监控系统具有温度、压力,pH值等多路监控功能。在 pH值 <7时将向 CPU申请中断,CPU响应后令
P3.0引脚输出高电平,经驱动使加碱管道电磁阀接通 1秒,
以调整 pH值。
一、电路及分析:
中断请求输入相当于,四输入的与或门,,
外电路上升沿有效。
P1.0~P1.3用于查询中断源。
P1.4~P1.7用于清除中断请求。
主程序及中断程序入口部分:
ORG 0000H
LJMP MAIN
LJMP INTX0
ORG 0030H
MAIN,MOV SP,#5FH
SETB EX0
SETB IT0;下降沿触发
SETB EA
SJMP $
查询部分:
INTX0,CLR EA
PUSH PSW
PUSH A
SETB EA
JB P1.0,DV1
JB P1.1,DV2
JB P1.2,DV3
JB P1.3,DV4
EXIT,CLR EA
POP A
POP PSW
SETB EA
RETI
各装置的中断服务程序部分,
DV1,……
(装置 1的中断服务程序 )

LJMP EXIT
DV2,……
(装置 2的中断服务程序 )

LJMP EXIT
DV4,……
(装置 4的中断服务程序 )

LJMP EXIT
装置 3的中断服务程序,
DV3,SETB P3.0
LCALL DELAY
CLR P3.0
CLR P1.6
SETB P1.6
LJMP EXIT
延时时间计算:
8+(2+(2+4*249+2)*100 +2)*10+8
=1000056μS
≈1S
延时 1秒的子程序,
(设晶振为 12MHz)
DELAY,PUSH 30H
PUSH 31H
PUSH 32H
MOV 32H,#10
DY1,MOV 31H,#100
DY2,MOV 30H,#249
LY3,NOP
NOP
DJNZ 30H,DY3
DJNZ 31H,LY2
DJNZ 32H,LY1
POP 32H
POP 31H
POP 30H
RET
第五章作业
2 4 5
9 13 例 5