您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 第04章单片机中断系统.
授课教师:左敬龙电话:13828680660短号:68012邮箱:oklong@gmail.com单片机原理及应用MCS-51中断系统概述与上对比,单片机中也有同样的问题。CPU正在执行原程序,突然,被意外事情打断,转去执行新程序。CPU执行新程序结束后,又回到原程序中继续执行。这样的过程就叫。中断什么叫中断?举例:某同学正在教室写作业,忽然被人叫出去,回来后,继续写作业。这就是生活中中断的例子。中断处理过程概述•对突发事故,做出紧急处理。•根据现场随时变化的各种参数、信息,做出实时监控。•CPU与外部设备并行工作,以中断方式相联系,提高工作效率。•解决快速CPU与慢速外设之间的矛盾。•在多项外部设备同时提出中断请求情况下,CPU能根据轻重缓急响应外设的中断请求。中断的作用:概述单片机中断系统中断源1中断控制2中断过程3外部中断源扩展4一、中断源1.中断源外部中断定时/计数器溢出中断串行发送结束请求中断串行接收有效请求中断TLi(8位)THi(8位)TFi中断控制BAC/T=0振荡器1/12&≥1TiTRiGATEINTiC/T=10~70~7中断源:入口地址外部中断0(/INT0)0003HT0溢出中断000BH外部中断1(/INT1)0013HT1溢出中断001BH串口中断0023HT2溢出中断002BH中断请求源(“五源中断”)二、中断控制单片机设有四个特殊功能寄存器:定时控制寄存器TCON串行控制寄存器SCON中断屏蔽寄存器IE中断优先级寄存器IPMCS-51中断控制系统TCONIT0IE0IT1IE1TR0TF0TR1TF1TR0/TR1:定时/计数器运行控制位。IT0/IT1:外部中断0/1请求触发方式控制位。1为脉冲触发,下降沿有效。0为电平触发,低电平有效。TCON的字节地址为88H,位地址为88H~8FH。IE0/IE1:外中断/请求标志位。当CPU采样到(/INT)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。当中断响应,转向中断服务程序后,由硬件把IE0(或IE1)清零。1.定时控制寄存器TCONTF0/TF1:定时/计数溢出标志位。用于定时/计数器控制。2.串行中断控制寄存器SCON串行控制寄存器SCON的字节地址为98HTI:串行口发送中断请求标志位。当发送完一帧串行数据后,由硬件置“1”;在中断响应,转向中断服务程序后,接口硬件不能自动将TI或RI清零,需用户用软件清零,来撤消中断。中断撤消必须在下一个中断到来之前完成。RI:串行口接收中断请求标志位。当接收完一帧串行数据后,由硬件置“1”;在中断响应,转向中断服务程序后,需用软件清“0”。串行中断请求由TI和RI的逻辑或得到。SM0SM1SM2RENTB8RB8TIRISCON在中断源与CPU之间有二级中断允许控制逻辑电路,类似开关,其中第一级为一个总开关,第二级为六个分开关,由IE控制。3、中断屏蔽寄存器IEIEEX0ET0EX1ET1ESET2—EA若为“1”,开关接通,允许例如EA=1;若为“0”,开关断开,不允许例如IE.7=0;EA——总控制位“—”——未定义位ES——串口控制位ET1——T1中断控制位EX1——/INT1控制位ET0——T0中断控制位EX0——/INT0控制位ET2——T2中断控制位4、中断优先级寄存器IPCPU同一时间只能响应一个中断请求。若同时来了两个或两个以上中断请求,就必须有先有后。!!!为此将6个中断源分成0,1两个个级别,0低、1为高优先级IPPX0PT0PX1PT1PSPT2——PT2——定时/计数器T2的中断优先级别PS——串口的中断优先级别PT1——定时/计数器T1的中断优先级别PX1——外部中断1的中断优先级别PT0——定时/计数器T0的中断优先级别PX0——外部中断0的中断优先级别“1”,1优先级“0”,0优先级,最低优先级控制可以通过修改中断优先级控制寄存器IP的内容实现。IP的字节地址为0B8H同一级中的5个中断源的优先顺序是:/INT0中断T0溢出中断/INT1中断T1溢出中断串口中断T2溢出中断高低出厂前已由厂家固化顺序——事先约定中断优先原则:(概括为四句话)1、低级不打断高级2、高级不睬低级3、同级不能打断4、同级、同时中断,事先约定。中断汇编程序初始化SETBIT0SETBEX0SETBEASETBPT0中断C程序初始化EX0=1;IT0=1;EA=1;PX0=1;三、MCS-51中断的响应过程CPU每个机器周期都需要顺序检查每个中断源,当检测到有中断请求时,能否响应,还要看下述情况是否存在:(1)CPU正处理相同级别或更高级别的中断;(2)正在执行指令,还未到最后一个机器周期;(3)正在执行的指令是RETI或访问IP、IPH、IE指令,则执行完上述指令后,再执行一条指令后,才会响应新中断。日常生活中的中断与单片机中断的比较某同学单片机过程说明正在看书执行主程序有人找出去中断信号中断请求暂停看书暂停执行主程序中断响应书中作记号当前PC入栈保护断点出去做事执行中断程序中断服务回来继续看返回主程序中断返回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响应中断后,由软件将TI/RI位清0。2、中断响应CPU对中断请求进行判断,形成中断矢量,转入相应的中断服务程序的过程叫中断响应。1)CPU响应中断的基本条件有中断源提出中断请求;中断总允许位EA=1,即CPU中断开放;申请中断的中断源的中断允许位为1,即中断源开放;CPU没有响应同级或更高优先级的中断;当前指令执行结束;如果正在执行的指令是RETI或是访问IE、IP指令,则多等待一条指令。2)中断响应过程单片机在每个机器周期的S5P2期间,顺序采样每个中断源,建立中断请求标志。在下一个机器周期按优先级查询中断标志,如查询到有中断标志为1,则按优先级进行中断响应。硬件将程序计数器PC的当前内容压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向相应的中断入口。这相当于执行一条长调用指令。中断源入口地址外中断0003H定时/计数器T0溢出中断000BH外中断0013H定时/计数器T1溢出中断001BH串行口中断0023H定时/计数器T2溢出中断002BH3、中断处理(中断服务)CPU响应中断后,根据不同的中断源,形成不同的中断矢量,执行相应的中断服务应用程序。CPU执行中断服务应用程序的过程,就是中断处理过程。中断处理一般包括保护现场、中断服务、恢复现场三部分。关中断保护现场开中断中断服务恢复现场开中断中断返回断点地址由堆栈弹出保护和恢复现场之后开中断,是为了允许响应更高级别的中断。保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。关中断4、中断返回1)中断返回的过程在中断服务程序的最后,遇到C语言中断服务程序的“}”:将相应的优先级状态触发器清零;恢复断点地址,即从堆栈中弹出栈顶的两个字节到PC,从而返回到断点处;2)中断请求的撤销在中断返回(执行RETI)前,必须撤除中断请求,即将中断标志位清除,否则当CPU返回到主程序后会错误地再一次引起中断响应。(1)T0/T1和边沿触发的INT0/INT1:自动撤销(2)电平触发的INT0/INT1:CPU无法直接控制,需要在引脚处加硬件撤销中断请求。(3)串行口中断:CPU响应中断后不能用硬件清除中断标志位,必须由用户在中断服务程序中用指令来清除相应的中断标志。3)中断响应时间MCS-51单片机响应中断的最短时间为3个机器周期,最长为8个机器周期。事件1事件2子程序2子程序1中断嵌套的概念:主程序中断中断例:每次按键都会触发INT0中断,中断发生时将LED状态取反,产生LED状态由按键控制的效果。voidEX_INT0()interrupt0using1{LED=~LED;//控制LED亮灭}voidmain(){LED=1;EA=1;EX0=1;IT0=1;while(1);}#includereg51.h#defineucharunsignedchar#defineuintunsignedintsbitLED=P0^0;例:试编程,外部中断0采用下降沿触发,当外部中断0到来时,P1的8个端口为00H;外部中断1采用低电平沿触发,当外部中断1到来时,P1的8个端口为0FFH;分析外部中断0会否打断外部中断1?练习:试编程,目前单片机的P1在数55H和0AAH之间进行跳变,外部中断0采用下降沿触发,当外部中断0到来时,P1的8个端口均在0和1之间进行跳变,跳变10秒后退出中断。四、外部中断源扩展MCS-51单片机只提供了两个外部中断请求输入端,在实际应用中,如果需要使用多于两个的外部中断源,就必须进行外部中断源的扩展。常用的几种外部中断源扩展方法是:利用单片机中的定时器/计数器T0、T1来扩展;外接硬件电路并配合查询程序扩展;外接中断控制芯片(如8259)进行扩展。实践利用单片机中断,扩展成8路抢答器的按键。实践:全自动洗衣机“启动/暂停”控制Ptoteus仿真全自动洗衣机工作过程中,当遇到意外事件发生,如衣物缠绕,或需要干预洗衣进程时,如需要添加消毒液,就需要暂停当前洗衣进程,处理这些事件。假设全自动洗衣机有8个流程,用8个指示灯表示;用8个按键进行选择控制。当某个流程工作时,对应的指示灯点亮。当按下按键K时,中断正在进行的流程,对应的流程指示灯闪烁,洗衣机进入等待状态;再次按下K时,指示灯停止闪烁,变成点亮状态,表示洗衣机恢复原来被中断的洗衣流程。X111.0592MHzC133pC233pVCCXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115U180C51PROGRAM=Text1.HEXSRCFILE=Text1.ASMR11kR21kR31kR41kR51kR61kR71kR81kVCCU2NOTU3NOTU4NOTU5NOTU6NOTU7NOTU8NOTU9NOTR16100R14100R13100R12100R11100R10100R15100R9100123U10:A7400456U10:B7400R171kR181kSW1SW-SPDTVCCQ12N5551R191kR201kVCCVCCD1D2D3D4D5D6D7D8LS1SPEAKER#includereg51.h//包含头文件voiddelayMs(unsignedinti)//定义延时程序{unsignedintj;//定义延时变量while(i--){//延时外循环for(j=0;j125;j++);//延时外循环}}voidmain(void)//主程序{P2=0;//关闭LEDIT0=1;//设置中断0边沿触发EX0=1;//打开中断0允许EA=1
本文标题:第04章单片机中断系统.
链接地址:https://www.777doc.com/doc-2152722 .html