《【大学课件】单片机中断系统.ppt》由会员分享,可在线阅读,更多相关《【大学课件】单片机中断系统.ppt(34页珍藏版)》请在三一办公上搜索。
1、,第四章 单片机 中断系统,http:/,http:/,MCS-51中断系统,概述,与上对比,单片机中也有同样的问题。CPU正在执行原程序,突然,被意外事情打断,转去执行新程序。CPU执行新程序结束后,又回到原程序中继续执行。这样的过程就叫。,什么叫中断?举例:某同学正在教室写作业,忽然闹钟响了,完成设定任务,回来继续写作业。这就是生活中中断的例子。,http:/,中断处理过程,概述,http:/,对突发事故,做出紧急处理。根据现场随时变化的各种参数、信息,做出实时监控。CPU与外部设备并行工作,以中断方式相联系,提高工作效率。解决快速CPU与慢速外设之间的矛盾。在多项外部设备同时提出中断请求
2、情况下,CPU能根据轻重缓急响应外设的中断请求。,中断的作用:,概述,http:/,单片机中断系统,http:/,一、中断源,中断源外部中断定时/计数器溢出中断串行发送结束请求中断串行接收有效请求中断,http:/,中断源:入口地址外部中断0(/INT0)0003HT0溢出中断 000BH外部中断1(/INT1)0013HT1溢出中断 001BH串口中断 0023H T2溢出中断 002BH,中断请求源(“五源中断”),http:/,二、中断控制,单片机设有四个特殊功能寄存器:定时控制寄存器TCON串行控制寄存器SCON中断屏蔽寄存器IE中断优先级寄存器IP,http:/,MCS-51中断控制
3、系统,http:/,TCON,TR0/TR1:定时/计数器运行控制位。,IT0/IT1:外部中断0/1请求触发方式控制位。1为脉冲触发,下降沿有效。0为电平触发,低电平有效。,TCON的字节地址为88H,位地址为88H8FH。,IE0/IE1:外中断/请求标志位。当CPU采样到()端出现有效中断请求时,IE0(IE1)位由硬件置“1”。当中断响应,转向中断服务程序后,由硬件把IE0(或IE1)清零。,1.定时控制寄存器TCON,TF0/TF1:定时/计数溢出标志位。用于定时/计数器控制。,http:/,2.串行中断控制寄存器SCON,串行控制寄存器SCON的字节地址为98HTI:串行口发送中断
4、请求标志位。当发送完一帧串行数据后,由硬件置“1”;在中断响应,转向中断服务程序后,接口硬件不能自动将TI或RI清零,需用户用软件清零,来撤消中断。中断撤消必须在下一个中断到来之前完成。RI:串行口接收中断请求标志位。当接收完一帧串行数据后,由硬件置“1”;在中断响应,转向中断服务程序后,需用软件清“0”。串行中断请求由TI和RI的逻辑或得到。,TCON,http:/,在中断源与CPU之间有二级中断允许控制逻辑电路,类似开关,其中第一级为一个总开关,第二级为六个分开关,由IE控制。,3、中断屏蔽寄存器IE,若为“1”,开关接通,允许例如 EA1;若为“0”,开关断开,不允许例如 IE.70;,
5、http:/,4、中断优先级寄存器IP,CPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。!,为此将6个中断源分成0,1两个个级别,0低、1为高优先级,PT2 定时/计数器T2的中断优先级别PS 串口的中断优先级别PT1 定时/计数器T1的中断优先级别PX1 外部中断1 的中断优先级别PT0 定时/计数器T0的中断优先级别PX0 外部中断0 的中断优先级别,“1”,1优先级“0”,0优先级,最低,优先级控制可以通过修改中断优先级控制寄存器IP的内容实现。IP的字节地址为0B8H,http:/,同一级中的5个中断源的优先顺序是:,中断优先原则:(概括为四句话)
6、1、低级不打断高级2、高级不睬低级3、同级不能打断4、同级、同时中断,事先约定。,http:/,中断汇编程序初始化 SETB IT0 SETB EX0 SETB EA SETB PT0,中断C程序初始化EX0=1;IT0=1;EA=1;PX0=1;,http:/,三、MCS-51中断的响应过程,CPU每个机器周期都需要顺序检查每个中断源,当检测到有中断请求时,能否响应,还要看下述情况是否存在:,(1)CPU正处理相同级别或更高级别的中断;(2)正在执行指令,还未到最后一个机器周期;(3)正在执行的指令是RETI或访问IP、IPH、IE指令,则执 行完上述指令后,再执行一条指令后,才会响应新中断
7、。,http:/,http:/,1、中断请求 中断请求就是中断源向CPU申请中断的过程,即建立中断请求标志位IE0、IE1、TF0、TF1、TI/RI的过程外部中断请求:经由引脚P3.2、P3.3向CPU申请中断的过程。外部中断请求有两种方式:低电平触发和下降沿触发。通过设置触发方式控制位IT0、IT1进行选择。IT0=0,表示为低电平触发方式;IT0=1,表示为下降沿触发方式。IT1的情况类似。内部中断请求:当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。T1的情况类似。当串行口发送结束时,使TI=1;当串行口接收结束时,使RI=1。CPU响应中断后,由软件
8、将TI/RI位清0。,http:/,2、中断响应,CPU对中断请求进行判断,形成中断矢量,转入相应的中断服务程序的过程叫中断响应。1)CPU响应中断的基本条件有中断源提出中断请求;中断总允许位EA1,即CPU中断开放;申请中断的中断源的中断允许位为1,即中断源开放;CPU没有响应同级或更高优先级的中断;当前指令执行结束;如果正在执行的指令是RETI或是访问IE、IP指令。,http:/,2)中断响应过程 单片机在每个机器周期的S5P2期间,顺序采样每个中断源,建立中断请求标志。在下一个机器周期按优先级查询中断标志,如查询到有中断标志为1,则按优先级进行中断响应。硬件将程序计数器PC的当前内容压
9、入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向相应的中断入口。这相当于执行一条长调用指令。,http:/,中断源 入口地址外中断 0003H定时/计数器T0溢出中断 000BH外中断 0013H定时/计数器T1溢出中断 001BH串行口中断 0023H定时/计数器T2溢出中断 002BH,http:/,3、中断处理(中断服务),CPU响应中断后,根据不同的中断源,形成不同的中断矢量,执行相应的中断服务应用程序。CPU执行中断服务应用程序的过程,就是中断处理过程。中断处理一般包括保护现场、中断服务、恢复现场三部分。,http:/,4、中断返回,1)中断返回的过程 在中断服务程序的
10、最后,遇到C语言中断服务程序的“”:将相应的优先级状态触发器清零;恢复断点地址,即从堆栈中弹出栈顶的两个字节到PC,从而返回到断点处;,http:/,2)中断请求的撤销 在中断返回(执行RETI)前,必须撤除中断请求,即将中断标志位清除,否则当CPU返回到主程序后会错误地再一次引起中断响应。(1)T0/T1和边沿触发的INT0/INT1:自动撤销(2)电平触发的INT0/INT1:CPU无法直接控制,需要在引脚处加硬件撤销中断请求。(3)串行口中断:CPU响应中断后不能用硬件清除中断标志位,必须由用户在中断服务程序中用指令来清除相应的中断标志。3)中断响应时间 MCS-51单片机响应中断的最短
11、时间为3个机器周期,最长为8个机器周期。,http:/,事件1,事件2,子程序2,子程序1,中断嵌套的概念:,主程序,中断,中断,http:/,编写中断服务子程序之框架,ORG 0000H LJMP START ORG 0003H LJMP INT0_FUNC ORG 0050HSTART:SETB IT0 MOV A,IPH ORL A,#01H MOV IPH,A,ORG 0200HINT0_FUNC:PUSH PSW PUSH Acc SETB RS0 CLR RS1.POP Acc POP PSW RETI END,SETB PX0 SETB EX0 SETB EA LCALL MYF
12、UNC.SJMP$ORG 0100HMYFUNC:.RET,http:/,例:每次按键都会触发INT0中断,中断发生时将LED状态取反,产生LED状态由按键控制的效果。,void EX_INT0()interrupt 0 using 1LED=LED;/控制LED亮灭,void main()LED=1;EA=1;EX0=1;IT0=1;while(1);,#include#define uchar unsigned char#define uint unsigned intsbit LED=P00;,void main()LED=1;EA=1;EX0=1;IT0=1;while(1);,voi
13、d main()LED=1;EA=1;EX0=1;IT0=1;while(1);,http:/,例:试编程,外部中断0采用下降沿触发,当外部中断0到来时,P1的8个端口输出为00H;外部中断1采用低电平沿触发,当外部中断1到来时,P1的8个端口输出为0FFH;分析外部中断0会否打断外部中断1?,http:/,练习:试编程,目前单片机的P1在数55H和0AAH之间进行跳变,外部中断0采用下降沿触发,当外部中断0到来时,P1的8个端口均在0和1之间进行跳变,跳变10秒后退出中断。,http:/,四、外部中断源扩展,MCS-51单片机只提供了两个外部中断请求输入端,在实际应用中,如果需要使用多于两个
14、的外部中断源,就必须进行外部中断源的扩展。常用的几种外部中断源扩展方法是:利用单片机中的定时器/计数器T0、T1来扩展;外接硬件电路并配合查询程序扩展;外接中断控制芯片(如8259)进行扩展。,http:/,实践,利用单片机中断,扩展成8路抢答器的按键,在P0端口输出按键值。,http:/,实践:全自动洗衣机“启动/暂停”控制Ptoteus仿真,全自动洗衣机工作过程中,当遇到意外事件发生,如衣物缠绕,或需要干预洗衣进程时,如需要添加消毒液,就需要暂停当前洗衣进程,处理这些事件。假设全自动洗衣机有8个流程,用8个指示灯表示;用8个按键进行选择控制。当某个流程工作时,对应的指示灯点亮。当按下按键K
15、时,中断正在进行的流程,对应的流程指示灯闪烁,洗衣机进入等待状态;再次按下K时,指示灯停止闪烁,变成点亮状态,表示洗衣机恢复原来被中断的洗衣流程。,http:/,http:/,#include/包含头文件void delayMs(unsigned int i)/定义延时程序 unsigned int j;/定义延时变量 while(i-)/延时外循环 for(j=0;j 125;j+);/延时外循环 main()/主程序P2=0;/关闭LED IT0=1;/设置中断0边沿触发 EX0=1;/打开中断0允许EA=1;/打开CPU中断允许while(1)/设置主循环P2=P1;/读取按键状态送LED显示delayMs(20);/延时exint0()interrupt 0/外中断0服务程序do/中断循环EA=0;/关中断P2=0;/关闭LEDdelayMs(20);/延时P2=P1;/读取按键状态送LED显示delayMs(20);/延时while(P32=1);/循环闪烁EA=1;/开中断,