当前位置:文档之家› 单片机课件第6章中断系统

单片机课件第6章中断系统

叫做:“五源中断,两级管理” 二、中断请求源(“五源中断”) 五个中断源: 入口地址
外部中断0(/INT0)
T0溢出中断 外部中断1(/INT1) T1溢出中断 串口中断
0003H
000BH 0013H 001BH 0023H
利用中断请求标志位来通知!!!
中断源的中断请 求,如何通知 CPU?
CPU识别中断申请的依据: CPU在每个机器周期的S5P2期间,会自动查询各个中断申 请标志位,若查到某标志位被置位,将启动中断机制。
EA —— 总控制位
“—” —— 未定义位 ES —— 串口控制位 ET1—— T1中断控制位 EX1—— /INT1控制位 ET0—— T0中断控制位 EX0—— /INT0控制位 若为“1”,开关接通,允许 例如 SETB EA 若为“0”,开关断开,不允 许 例如 CLR IE.7
2、中断优先级(第二级管理)
一个机器周期
S1
P1 P2
S2
S3
S4
S5
S6
S1
P1 P2
S2
S3
S4
S5
S6
2.中断控制 MCS-51单片机设置了4个专用寄存器用于中断控制,用 户通过设置其状态来管理中断系统。
以上6个中断请求标志位分别分布在TCON、SCON两个寄存器中。 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
§6 MCS-51中断系统
一、概述
什么叫中断?
举例:某同学正在教室写作业,忽然被人叫出去,回来 后,继续写作业。这就是生活中中断的例子。 与上对比,单片机中也有同样的问题。CPU正 在执行原程序,突然,被意外事情打断,转去执行 新程序。CPU执行新程序结束后,又回到原程序中 继续执行。这样的过程就叫
设计程序如下:
ORG LJMP ORG LJMP ORG SETB SETB SETB 0000H MAIN 0003H INT 0100H EA EX0 IT0 …… ; 外部中断0中断服务入口地址 ; 转中断服务 ; 开总中断允许 ; 开INT0中断 ; 下降沿有效
MAIN:
中断服务程序清单如下:
TF1—— T1的溢出中断标志 硬件置1,硬件清0(也可软件清0) TF0 —— T0的溢出中断标志。(同TF1,只是针对T0的)
IE1 —— 外部中断1(/INT1)请求标志。
外部有中断请求时,硬件使IE1置1,硬件清0。 IE0 —— 外部中断0(/INT0)请求标志。 IT1 —— 外部中断1(/INT1)触发类型控制位。 IT1 = 0 ,低电平触发。IT1 = 1 , 下降沿触发。
1
[例题3] 通过外部中断控制八盏灯循环点亮。 解:通过P1口扩展八盏灯,在 INT1 引脚接一个按钮开关到地, 每按一下按钮就申请一次中断,点亮一盏灯,中断服务则是: 依次点亮八盏灯中的一盏。采用边沿触发。硬件电路如下图 所示。
程序如下:
ORG 0000H LJMP MAIN ORG 0013H ; 中断服务程序入口地址 LJMP IN11 MAIN:SETB EA ; 开总中断允许“开关” SETB EX1 ; 开分中断允许“开关” CLR PX1 ; 低 优先级(也可不要此句) SETB IT1 ; 边沿触发 MOV A , #01H ; 给累加器A赋初值 SJMP $ ; 原地等待中断申请 IN11:RL A ; 左环移一次 MOV P1,A ; 输出到P1口 RETI ; 中断返回 END
处理外部中断举例 要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 解:INT0输入按键信号,P1.0输出改变LED状态。 +5V 1.跳变触发:每次跳变引起一次中断请求。
ORG 0000H;复位入口 单片机 AJMP MAIN INT0 ORG 0003H ;中断入口 AJMP PINT0 P1.0 ORG 0100H ;主程序 MAIN:MOV SP,#40H;设栈底 SETB EA ;开总允许开关 SETB EX0 ;开INT0中断 SETB IT0 ;负跳变触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0:CPL P1.0 ;改变LED RETI ;返回主程序
同一级中的5个中断源的优先顺序是: 高 /INT0中断
T0溢出中断 出厂前已由厂家固化顺序 ——事先约定
/INT1中断
T1溢出中断 串口中断
低 中断优先原则:(概括为四句话)
1、低级不打断高级
2、高级不睬低级 3、同级不能打断 4、同级、同时中断,事先约定。
中断 P1,A • DEC A • ACALL DELAY • ACALL DELAY • DJNZ R1, LOOP • SJMP RES
中断服务程序
• EXT0:PUSH ACC • MOV A,#00 • MOV P1,A • ACALL DELAY • ACALL DELAY • CPL A • MOV P1,A • ACALL DELAY • ACALL DELAY • POP ACC • RETI •
子程序2 事件2
中断 中断
四、MCS-51中断的响应过程
日常生活中的中断与单片机中断的比较:
某同学 正在看书 有人找出去 暂停看书 书中作记号 出去做事 回来继续看 单片机 执行主程序 中断信号 暂停执行主程序 当前PC入栈 执行中断程序 返回主程序 过程说明
中断请求 中断响应 保护断点 中断服务 中断返回
中断请求的撤消
1.定时器/计数器中断请求的撤消 中断请求被响应后。硬件会自动清TF0或TF1。 2.外部中断请求的撤消 (1)跳沿方式外部中断请求的撤消是自动撤消 的。 (2)电平方式外部中断请求的撤消。 除了标志位清“0”之外,还需在中断响应后 把中断请求信号引脚从低电平强制改变为高 电平,如下图所示。
中断

中断的作用:
• • 对突发事故,做出紧急处理。
根据现场随时变化的各种参数、信息,做出实时监控。
• CPU与外部设备并行工作,以中断方式相联系,提高工 作效率。 • 解决快速CPU与慢速外设之间的矛盾。
• 在多项外部设备同时提出中断请求情况下,CPU能根 据轻重缓急响应外设的中断请求。
对于MCS-51单片机中断系统的组成可以用一句话来讲,
例 1外部中断的应用:8051单片机的P1口控制8个LED 灯,要求8个灯加1移位点亮,当中断来时,灯全灭后 全亮,然后继续加1移位点亮。
• ORG 0H • AJMP ST • ORG 0003H • AJMP EXT0 • ORG 0030H • ST:MOV SP,#70H • MOV IE,#81H • MOV IP,#01H • MOV TCON,#00H • RES:MOV R1,#08H • MOV A,#0FFH
查询方式扩展外部中断请求输入口的电路实现:
74ls21的逻辑表是:当输入全高时输出为高,任一输入低则输出就为低。 电路分析:当没有按键按下时,由于上拉电阻的作用,74ls21输出高,使 INT0口为高电平,此时中断程序不被触发。如果任何一个按键按下,则 74ls21输出低电平,触发中断程序。 中断程序设计为:如果程序设计检测次序是P1.0、P1.1、P1.2、P1.3口, 优先级即按顺序排列,如果同时有多个键被按下,可根据实际要求设定 为 1、仅仅只响应最优先中断;2、按优先级顺序依次执行各个中断。
3.2.4 MCS-51扩展外部中断请求输入口
8051单片机只提供了两个外部中断请求输入端,如果需要 使用多于两个的中断源,就必须扩展外部中断请求输入口。 1.定时器/计数器用于扩展外部中断请求输入口
8051单片机有两个定时器/计数器,它们作为计数器使用时,
计数输入端T0(或T1)发生负跳变将使计数器加1,利用此特
性,适当设置计数初值,就可以把计数输入端T0(或T1)作为
外部中断请求输入口。其特点是以占用内部定时中断为代价的。
中断服务程序的入口地址仍然为000BH或001BH。
2.查询方式扩展外部中断请求输入口
把多个中断源通过硬件(如与非门)引入外部中断输入端, 同时又连到某个I/O口。当有中断源申请中断时,在中断服务程 序中通过软件查询可确定哪一个是正在申请的中断源,其查询 的次序可由中断优先级决定。其特点是中断响应速度较慢。 适 用于外部中断源较多的场合。下页例题中,我们采用74LS21A 四输入端双与门实现该任务。 3.使用专用芯片扩展外部中断请求输入口 当外部中断源较多,同时又要求中断响应速度很高时,查 询方式扩展外部中断请求输入口的方法很难满足要求。这时可 以使用专用接口芯片进行外部中断请求输入口的扩展。下面例 题中,我们采用74LS21A四输入端双与门实现该任务。
为什么要有 中断优先级?
CPU同一时间只能响应一个中断请求。若同时来了两个或两个 以上中断请求,就必须有先有后。 !!!
为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。
IP —— —— —— PS PT1 PX1 PT0 PX0
P S —— 串口的中断优先级别 PT1 —— 定时 / 计数器T1的中断优先级别 PX1 —— 外部中断1 的中断优先级别 PT0 —— 定时 / 计数器T0的中断优先级别 PX0 —— 外部中断0 的中断优先级别 该位是“1”时,为高级优先级 该位是“ 0”时,为低级优先级
1
2. 电平触发:避免一次按键引起多次中断响应。 +5V 1.软件等待按键释放。 2.硬件清除中断信号。
单片机 ORG 0000H;复位入口 AJMP MAIN INT0 ORG 0003H ;中断入口 AJMP PINT0 P1.0 ORG 0100H ;主程序 MAIN:MOV SP,#40H;设栈底 SETB EA ;开总允许开关 SETB EX0 ;开INT0中断 CLR IT0 ;低电平触发中断 H: SJMP H ;执行其它任务 ORG 0200H ;中断服务程序 PINT0:CPL P1.0 ;改变LED WAIT:JNB P3.2,WAIT;等按键释放 RETI ;返回主程序
相关主题