1、模块三 中断系统及应用,一、带中断的彩灯控制系统 二、中断概念、设置处理 三、中断过程 四、外中断应用举例,一、带中断的彩灯控制系统,1、系统硬件组成 将模块一中的电路图输入开关接到P3口上,找到P3.2(INT0)的位置。 2、程序功能 彩灯左移(每拨一次P3.2引脚的开关) 3、系统运行 连接实验装置和仿真器,打开仿真环境并输入程序,调试运行。 注意观察每拨一次P3.2引脚开关时系统工作状态。,例:带中断的彩灯控制程序(注意程序结构变化)ORG 0000H START: LJMP MAIN ;跳转到主程序ORG 0003HLJMP INT0 ;转向中断服务程序ORG 0030H ;主程序
2、MAIN: SETB IT0 ;设置边沿触发方式SETB EA ;CPU开放中断SETB EX0 ;允许外中断0中断MOV A,#01MOV P0,A ;只点亮一个灯SJMP $ORG 0100H ;中断服务程序 INT0:RL AMOV P0,ARETIEND,二、中断概念、设置处理,1、中断中断是CPU与外设之间交换信息的一种方式,这种方式是指当计算机执行正常程序时,系统中出现某些急需处理的异常情况或特殊请求(中断请求),CPU暂时中止现行的程序,而转去对随机发生的更紧迫的事件进行处理(中断服务程序),在处理完毕后,CPU自动又返回原来的程序继续运行。,日常生活中的中断与计算机中断的比较:
3、 某人看书 执行主程序 日常事务 电话铃响 中断信号如INT=0 中断请求 暂停看书 暂停执行主程序 中断响应 书中作记号 当前PC入栈 保护断点 电话谈话 执行中断程序 中断服务 继续看书 返回主程序 中断返,2、中断的作用,中断是一项重要的计算机技术,在计算机中得到了广泛的应用。其主要作用如下: 中断技术实现了CPU与外部设备并行工作,提高了CPU的效率; 能对系统运行过程中事件的出现或突然发生的故障,做到及时发现并处理,即实现实时处理;3、中断与调用子程序的区别子程序的执行是由程序员事先安排好的(由一条调用子程序指令来转入),而中断服务程序是由随机的中断事件引起的。,4、中断源引起中断的
4、原因或发出中断申请的来源。51单片机有5个中断源,分为3类:外部中断源(输入)2个,定时计数器中断源2个,串行口发送或接收中断源(串行中断)1个。 5、外部中断外中断0和1共2个,请求信号分别从INT0(P3.2)和 INT1(P3.3) 引脚输入。两种形式:一种是电平方式,低电平有效, CPU在信号输入端采样到有效的低电平,即产生中断。另外是脉冲方式,脉冲后沿有效。CPU在两个相邻机器周期对中断请求引入端进行的采样中,前一次为高电平,后一次为低电平,即产生中断。,80C51中断系统的结构,IE0,EX0,TF0,IE1,TF1,TI,ES,ET1,EX1,ET0,RI,IP,硬件查询,高级,
5、低级,中断入口,中断源,INT0,INT1,中断入口,中断源,1,0,IE,PX0,PS,PT1,PX1,PT0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,EA,1,1,SCON,1,1,T0,T1,RX,TX,IT0,IT1,0,0,TCON,6、外部中断处理 (1)TCON中的中断标志 外部中断源,需要设定中断请求信号的形式。 TCON是一个8位的定时器/计数器控制寄存器,字节地址为88H,可位寻址。其8个位中有低4个位与外中断有关: IT0,外中断0触发方式控制位。=0,电平触发方式。=1,边沿触发方式(下降沿有效)。IE0,外中断0中断请求标志位。TF0,T0溢出中断
6、请求标志位。,(2) 中断允许控制51单片机中的特殊功能寄存器IE是中断允许寄存器,它控制CPU对中断源的开放或屏蔽,以及每个中断源是否允许中断。IE是个8位寄存器,字节地址为A8H,可位寻址。其各位的定义如下: EX0,外中断0允许位;ET0,T0中断允许位;EX1,外中断0允许位;ET1,T1中断允许位; ES ,串口中断允许位;EA , CPU中断允许(总允许)位。,(3)中断优先级控制51单片机有两个中断优先级,可由软件设置每个中断源为高优先中断。每个中断源的中断优先级都是由中断优先级寄存器IP中的相应位的状态来控制的。IP也是一个8位的特殊功能寄存器,字节地址为B8H,可位寻址,各位
7、的定义如下:系统复位时后,IP全部清0,即将所有的中断源设置为低优先级中断。,(4)51单片机中断优先级的原则:, CPU同时接收到几个中断请求时,先响应优先级最高的中断求。 几个同一优先级的中断源同时向CPU请求中断,按自然优先级确定响应哪一个中断请求。其顺序由高至低为:外中断0定时中断0外中断 1定时中断1串行中断。 正在进行的中断过程不能被新的同级或低优先级中断请求所中断。 正在进行的低优先级中断服务程序,能被高优先级中断请求所中断。,三、中断过程,中断请求,中断查询和响应,中断处理,中断返回。 1、中断请求由硬件完成,定时中断和串行中断在内部自动完成,中断请求完成后,相应的请求标志位被
8、直接置位。外中断的请求信号要从(P3.2)和 (P3.3) 引脚输入。中断请求完成后,请求标志位被置位。 2、中断查询和响应中断查询和中断响应是由硬件自动完成的。查询:由CPU测试TCON和SCON中的各标志位的状态,确定有无中断请求及是那一个中断请求。在程序执行过程中,中断查询是在指令执行的每个机器周期中不停地重复进行的。,中断响应条件: 中断源有中断请求;CPU的中断允许位EA(IE.7)被置位,;相应的中断允许位被置位,即某个中断源允许中断。 若遇到以下任一情况,则单片机仍不能响应此中断: 当前CPU正在处理比申请源高级或与申请源同级的中断。 当前正在执行的那条指令没有执行完。 正在访问
9、IE、IP中断控制寄存器或执行RETI指令。并且,只有在执行这些指令后至少再执行一条指令时,才能接受中断请求。 中断响应:是对中断源提出请求的接受,在中断查询中,查询到有效的请求时接着就进行中断响应, 即自动生成中断服务程序的入口地址。,3、中断处理,中断处理应根据具体要求编写中断服务程序。在程序中要注意以下2个问题:现场保护和现场恢复;关中断和开中断 。 4、中断返回中断服务程序的最后一条指令必须是RETI,CPU执行该指令时,把响应中断时置位的优先级触发器复位,再从堆栈中弹出断点地址送PC,使程序回到断点处重新执行先前被中断了的程序。,四、外中断应用举例,例1:将P1口设置成数据输入口,外
10、部设备每准备好一个数据时发出一个正脉冲,使D触发器Q端置0,向送入一个低电平中断请求信号。中断响应后,为了撤销中断请求,可利用P3.0向D触发器的直接置位端SD输出一个负脉冲,使D触发器的Q端置1,从而撤销了低电平的中断请求信号。(低电平撤销问题),程序编制如下:ORG 0000H START: LJMP MAIN ;跳转到主程序ORG 0003HLJMP INT0 ;转向中断服务程序ORG 0030H ;主程序 MAIN: CLR IT0 ;设置电平触发方式SETB EA ;CPU开放中断SETB EX0 ;允许外中断0中断MOV DPTR,#1000H ;置数据区地址指针 ORG 0100
11、H ;中断服务程序,INT0: PUSH PSW ;保护现场PUSH A CLR P3.0 ;由P3.0输出负脉冲NOP ;NOP ;SETB P3.0 ;MOV A,P1 ;输入数据MOVX DPTR,A ;存入数据存储器INC DPTR ;修改数据指针,指向下一个单元POP A ;恢复现场POP PSW ;RETI ;中断返回,例2:故障诊断处理。当系统无故障时,4个故障源输入端全为低电平,显示灯全熄灭,只有当某部分出现故障,其相应的输入线才由低电平变为高电平从而引起中断。中断服务程序的任务就是判定故障源,并进行相应的灯光显示。(外中断扩展问题),程序编制如下:,ORG 0000H AJM
12、P MA1 ;转向主程序ORG 0003HAJMP SERVE ;转向中断服务程序 MA1: MOV P1,#55H ;全部指示灯灭,并为读入故障信号作准备SETB IT0 ;选取外中断为脉冲触发方式SETB EX0 ;允许外中断0中断SETB EA ;开CPU中断 LOOP: MOV A,P1 ;ANL A,#55H ;JNZ LOOP ;有故障信号转LOOPMOV P1,#55H ;无故障信号灯全灭,并为读入故障信号作准备SJMP LOOP ;等待中断,SERVE:JNB P1.0,L1 ;中断服务程序,查询故障源,若有故障,将;相应的灯点亮SETB P1.1SJMP L2 L1: CLR P1.1 L2: JNB P1.2,L3SETB P1.3SJMP L4 L3: CLR P1.3 L4: JNB P1.4,L5SETB P1.5SJMP L6 L5: CLR P1.5 L6: JNB P1.6,L7SETB P1.7SJMP L8 L7: CLR P1.7 L8: RETI,