单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统

上传人:E**** 文档编号:89497391 上传时间:2019-05-25 格式:PPT 页数:26 大小:305.50KB
返回 下载 相关 举报
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统_第1页
第1页 / 共26页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统_第2页
第2页 / 共26页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统_第3页
第3页 / 共26页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统_第4页
第4页 / 共26页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统》由会员分享,可在线阅读,更多相关《单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第5章 单片机中断系统(26页珍藏版)》请在金锄头文库上搜索。

1、5.1 中断技术概述 1、中断的基本概念,5.2 8051中断系统结构及其控制 1、中断系统结构 8051单片机中断系统支持: 5个中断源, 2个中断优先级, 可实现2级中断嵌套。 TCON、SCON、IE和IP进行设置,3、中断的控制 ? CPU如何控制允许中断源的中断申请? ? 两个以上中断源同时中断申请,先响应哪一个? (1)中断允许寄存器 I E 地址:(A8H) 可位寻址,相应位为1时,表示对应的中断请求可以得到响应,其中EA为总中断允许,,(2) 中断允许设置 对相应的位置1或者清除来允许或者禁止 例:SETB EA ;开放CPU中断,可接受中断申请 SETB EX0 ;允许INT

2、0中断 CLR ES ;禁止串行口中断 注: 复位时IE清零,即禁止所有中断,用SETB指令置位IE中相应的位来开启中断。 必须逐级开放中断。总开关和子开关. IE中相应位置0,该位对应的中断源被屏蔽,禁止其中断,(3) 8031的中断优先级 顺序为:外部0,定时0,外部1,定时1,串行口 中断优先级寄存器IP控制 IP(B8H)可位寻址,IP中某位置1时,该中断源为高优先级,相反为低优先级。 例: SETB PT0 ;PT0置1,定时器0为高优先级中断 IP 值为: 时, 其优先级顺序为:T0、 INT0、INT1 、T1、串行口,4、中断处理 中断过程可分:中断请求、中断响应、中断服务和中

3、断返回等。,(1)中断响应 必须满足以下6个条件: IE寄存器中的总允许位EA=1。 相关中断源的中断请求标志位置“1”,即有中断请求。 相关中断源的中断允许位为“1”,即该中断被允许。 无同级或更高级中断在被服务。 当前指令已执行到最后一个机器周期并已经结束。 当前正在执行的指令不是返回指令或访问IE、IP指令。,中断响应的基本步骤: 获取目标地址(中断向量):硬件自动执行长跳转指令“LCALL addre16” ; 断点保护:下一条指令的地址(PC值)入栈保护; 转向目标地址:目标地址“adrr16”赋给PC,转入目标地址处执行中断服务子程序; 清除相应的中断标志位:串行口中断除外,需要用

4、户程序软件清除。,中断向量表,(2)中断服务 中断响应后即进入中断服务环节,通常需要进行“现场保护”。 (3)中断返回 中断服务结束后需要通过RETI指令结束中断服务,已恢复至断点处执行程序。 (4)中断请求的撤销 CPU在响应对应的中断请求后都会自动的清除中断请求标志位,但需要考虑中断请求信号的撤销。,5.3 外部中断的实现 1、触发方式选择 边沿触发 CPU在连续两个机周期采样INTx时,前一个周期为高电平,后一个周期为低电平,则判断该负跳变触发中断,则置位中断标志IEx,申请中断。 电平触发 CPU采样到INT0或INT1脚为低电平则会触发中断。,2、多中断源系统硬件扩展,5.4 中断系

5、统程序设计 明确中断源,正确设置好中断向量,即中断服务程序入口地址的确定。 在主程序中完成IE、IP等寄存器相关标志位的中断初始化工作。 明确中断服务任务,编写中断服务程序,保护好主程序相关寄存器内容,完成中断任务,正确返回主程序断点。,1、中断程序基本结构 (1)汇编程序结构,ORG 0000H AJMP START ORG 0003H AJMP WB0 ORG 000BH AJMP DS0 ORG 0013H AJMP WB1 ORG 001BH,AJMP DS1 ORG 0023H AJMP CK START: SJMP $ WB0: RETI DS0: ,RETI WB1: . RET

6、I DS1: . RETI CK: RETI,(2)C51中断程序结构 8051单片机C51程序结构中断服务函数结构形式: 函数类型 函数名()interrupt n using i n为中断类型号,取值范围为n=04,用以区分5个中断源; 关键字using,i的取值范围为n=03,分别对应工作寄存器组的0区3区; 不使用using n选项,中断函数和主程序使用同一区域的工作寄存器组,在中断函数中编译器自动产生保护和恢复R0R7现场,执行速度慢些。,#include void main() ;中断初始化及其他程序 void int0() interrupt 0;外部中断0服务程序,函数名称可修

7、改 ;设置中断服务子程序 void int1() interrupt 1;定时器0中断程序,函数名称可修改 ;设置中断服务子程序 ,void int2() interrupt 2 ;外部中断0服务程序,函数名称可修改 ;设置中断服务子程序 void int3() interrupt 3 ;定时器1中断服务程序,函数名称可修改 ;设置中断服务子程序 void int4() interrupt 4 ;串行口中断服务程序,函数名称可修改 ;设置中断服务子程序 ,实例: 利用外部按键实现LED显示循环顺序控制,要求采用中断方式。按键一次改变LED显示个数,具体为,按键一次点亮一个LED,按键2次点亮2

8、个LED,按键8次点亮所有LED,按键9次关闭所有LED,按键10次点亮一个LED,以此类推。,汇编语言程序: ORG 0000H LJMP MAIN ;跳转到主程序入口 ORG 0003H LJMP ZD0 ;跳转到中断服务程序入口 MAIN: MOV SP,#50H ;设置堆栈 SETB IT0 ;边沿触发方式 SETB EX0 ;开中断 SETB EA ; MOV P1,#00H ;设置8个LED全灭 MOV A,#00H ;初始化A MOV R7,#0 ;初始化计数次数 AJMP $ ;等待中断,ZD0: CJNE R7,#08H,NEXT ;判断是否到了8次 MOV A,#00H ;

9、参数重新初始化 MOV P1,A MOV R7,#00H RETI NEXT: SETB C ;移位一次,增加点亮LED个数 RLC A MOV P1,A ;数据输出 INC R7 ;次数加1 RETI END,#include #define uchar unsigned char uchar keynumber,keyval; /统计按键次数变量 void int0() interrupt 0 /外部中断0服务子程序 if (keynumber= =8) /次数到8次,重新初始化 keynumber=0; keyval=0; P1=keyval; /数据输出 else keynumber+; /次数加1 keyval=keyval1; /逻辑左移, keyval=keyval | 0x01; /由于低位补零,所以低位补1 P1=keyval; /数据输出 ,main() IT0=1; /设置边沿触发方式 EX0=1; /开放相关中断 EA=1; P1=0x00; /数据初始化 keynumber=0; while(1) ; ,本章结束,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号