单片机课件第6章中断系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
处理外部中断举例 要求每次按动按键,使外接发光二极管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 ;返回主程序
一个机器周期
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
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 ;返回主程序
同一级中的5个中断源的优先顺序是: 高 /INT0中断
T0溢出中断 出厂前已由厂家固化顺序 ——事先约定
/INT1中断
T1溢出中断 串口中断
低 中断优先原则:(概括为四句话)
1、低级不打断高级
2、高级不睬低级 3、同级不能打断 4、同级、同时中断,事先约定。
中断嵌套的概念:
主程序
子程序1 事件1
3.2.4 MCS-51扩展外部中断请求输入口
8051单片机只提供了两个外部中断请求输入端,如果需要 使用多于两个的中断源,就必须扩展外部中断请求输入口。 1.定时器/计数器用于扩展外部中断请求输入口
8051单片机有两个定时器/计数器,它们作为计数器使用时,
计数输入端T0(或T1)发生负跳变将使计数器加1,利用此特
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 , 下降沿触发。
INTI MOV MOV CJNE AJMP CALL D20 ; 延时去抖动 P1,#0FFH ;P1口送全1值(准双向口原因) A, P1 ; 读P1口各引脚(设另四口未用) A, #0FFH,CLOSE ; 验证是否确实有键闭合 INT0 ; 无键按下(按键时间过短)则退 ;出中断
CLOSE: JNB ACC.3, KEY 0 ; 查询0号键 JNB ACC.2, KEY 1 ; 查询1号键 JNB ACC.1, KEY 2 ; 查询2号键 JNB ACC.0,KEY 3 ; 查询3号键 INT0: RETI KEY 0: …… ; 7号键处理程序 KEY 01: MOV A, P1 ; 再读P1口各引脚 JNB ACC.0, FUNC71 ; 确认键是否释放 RETI KEY 1: …… ; 其他键处理程序 …… D20: …… ; 20ms延时子程序 …… END
§6 MCS-51中断系统
一、概述
什么叫中断?
举例:某同学正在教室写作业,忽然被人叫出去,回来 后,继续写作业。这就是生活中中断的例子。 与上对比,单片机中也有同样的问题。CPU正 在执行原程序,突然,被意外事情打断,转去执行 新程序。CPU执行新程序结束后,又回到原程序中 继续执行。这样的过程就叫
• LOOP:MOV 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”之外,还需在中断响应后 把中断请求信号引脚从低电平强制改变为高 电平,如下图所示。
叫做:“五源中断,两级管理” 二、中断请求源(“五源中断”) 五个中断源: 入口地址
外部中断0(/INT0)
T0溢出中断 外部中断1(/INT1) T1溢出中断 串口中断
0003H
000BH 0013H 001BH 0023H
利用中断请求标志位来通知!!!
中断源的中断请 求,如何通知 CPU?
CPU识别中断申请的依据: CPU在每个机器周期的S5P2期间,会自动查询各个中断申 请标志位,若查到某标志位被置位,将启动中断机制。
例 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
性,适当设置计数初值,就可以把计数输入端T0(或T1)作为
外部中断请求输入口。其特点是以占用内部定时中断为代价的。
中断服务程序的入口地址仍然为000BH或001BH。
2.查询方式扩展外部中断请求输入口
把多个中断源通过硬件(如与非门)引入外部中断输入端, 同时又连到某个I/O口。当有中断源申请中断时,在中断服务程 序中通过软件查询可确定哪一个是正在申请的中断源,其查询 的次序可由中断优先级决定。其特点是中断响应速度较慢。 适 用于外部中断源较多的场合。下页例题中,我们采用74LS21A 四输入端双与门实现该任务。 3.使用专用芯片扩展外部中断请求输入口 当外部中断源较多,同时又要求中断响应速度很高时,查 询方式扩展外部中断请求输入口的方法很难满足要求。这时可 以使用专用接口芯片进行外部中断请求输入口的扩展。下面例 题中,我们采用74LS21A四输入端双与门实现该任务。
EA —— 总控制位
“—” —— 未定义位 ES —— 串口控制位 ET1—— T1中断控制位 EX1—— /INT1控制位 ET0—— T0中断控制位 EX0—— /INT0控制位 若为“1”,开关接通,允许 例如 SETB EA 若为“0”,开关断开,不允 许 例如 CLR IE.7
2、中断优先级(第二级管理)
为什么要有 中断优先级?
CPU同一时间只能响应一个中断请求。若同时来了两个或两个 以上中断请求,就必须有先有后。 !!!
为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。
IP —— —— —— PS PT1 PX1 PT0 PX0
P S —— 串口的中断优先级别 PT1 —— 定时 / 计数器T1的中断优先级别 PX1 —— 外部中断1 的中断优先级别 PT0 —— 定时 / 计数器T0的中断优先级别 PX0 —— 外部中断0 的中断优先级别 该位是“1”时,为高级优先级 该位是“ 0”时,为低级优先级
中断
。
中断的作用:
• • 对突发事故,做出紧急处理。
根据现场随时变化的各种参数、信息,做出实时监控。
• CPU与外部设备并行工作,以中断方式相联系,提高工 作效率。 • 解决快速CPU与慢速外设之间的矛盾。
• 在多项外部设备同时提出中断请求情况下,CPU能根 据轻重缓急响应外设的中断请求。
对于MCS-51单片机中断系统的组成可以用一句话来讲,
IT0 —— 外中断0(/INT0)触发类型控制位,用法同IT1。
SCON SM0 SM1 SM2 REN
TB8 RB8
TI
RI
TI —— 串口发送中断标志位。 发送完数据,硬件使TI置1,软件清0(CLR TI) RI —— 串行口接收中断标志位。 硬件置1,软件清0。
三、中断控制(两级管理) 1、中断屏蔽(第一级管理) 在中断源与CPU之间有二级中断允许控制逻辑电路,类似开关,其 中第一级为一个总开关,第二级为五个分开关,由IE控制。 IE EA — — — — ES ET1 EX1 ET0 EX0
设计程序如下:
ORG LJMP ORG LJMP ORG SETB SETB SETB 0000H MAIN 0003H INT 0100H EA EX0 IT0 …… ; 外部中断0中断服务入口地址 ; 转中断服务 ; 开总中断允许 ; 开INT0中断 ; 下降沿有效
MAIN:
中断服务程序清单如下:
查询方式扩展外部中断请求输入口的电路实现:
74ls21的逻辑表是:当输入全高时输出为高,任一输入低则输出就为低。 电路分析:当没有按键按下时,由于上拉电阻的作用,74ls21输出高,使 INT0口为高电平,此时中断程序不被触发。如果任何一个按键按下,则 74ls21输出低电平,触发中断程序。 中断程序设计为:如果程序设计检测次序是P1.0、P1.1、P1.2、P1.3口, 优先级即按顺序排列,如果同时有多个键被按下,可根据实际要求设定 为 1、仅仅只响应最优先中断;2、按优先级顺序依次执行各个中断。
1
[例题3] 通过外部中断控制八盏灯循环点亮。 解:通过P1口扩展八盏灯,在 INT1 引脚接一个按钮开关到地, 每按一下按钮就wenku.baidu.com请一次中断,点亮一盏灯,中断服务则是: 依次点亮八盏灯中的一盏。采用边沿触发。硬件电路如下图 所示。
程序如下:
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
只要P1.0端输出一个负脉冲就可以使D触发器置“1” , 从而撤消了低电平的中断请求信号。所需的负脉冲 可增加如下两条指令得到: ORL P1,#01H ;P1.0为“1”
ANL
P1,#0FEH
;P1.0为“0”
电平方式的外部中断请求信号的完全撤消,是 通过软硬件相结合的方法来实现的。 3.串行口中断请求的撤消 响应串行口的中断后,CPU无法知道是接收中 断还是发送中断,还需测试这两个中断标志 位的状态,以判定是接收操作还是发送操作, 然后才能清除。所以串行口中断请求的撤消 只能使用软件的方法 CLR TI ;清TI标志位 CLR RI ;清RI标志位