第05章 中断系统_第1页
第05章 中断系统_第2页
第05章 中断系统_第3页
第05章 中断系统_第4页
第05章 中断系统_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章单片机中断系统5.1中断源 5.2中断控制 5.3中断过程 5.3.1中断请求 5.3.2中断响应 5.3.3中断处理 5.3.4中断返回 5.4外部中断源扩展 5.5全自动洗衣机“启动/暂停”控制Ptoteus仿真 中断概念中断概念单片机正在处理某项事务(如执行洗衣程序)的时候,系统发生了紧急事件(如衣物缠绕),需要处理;单片机暂停当前正在处理的工作,而转去处理这个紧急事件;待紧急事件处理完成后,再回到原来中断的地方,继续处理原来被中断的事务,这个过程称作中断。○中断过程中断请求、中断响应、中断处理、中断返回○中断作用1.通过中断系统,单片机可以同时控制多个外设并行操作。2.通过中断系统,单片机可以方便实现实时处理,及时处理随机事件。3.通过中断系统,可以及时处理系统故障,如掉电、运算溢出等5.1中断源能够向CPU申请中断的事件叫中断源。外部中断源INT0/INT1内部中断源T0/T1/串行口中断矢量中断源中断标志中断矢量引脚优先次序INT0外部中断0IE00003HP3.2高低定时/计数器0中断TF0000BHP3.4INT1外部中断1IE10013HP3.3定时/计数器1中断TF1001BHP3.5串行中断TI/RI0023H5.2中断控制

8051单片机设有四个特殊功能寄存器:定时控制寄存器TCON串行控制寄存器SCON中断屏蔽寄存器IE中断优先级寄存器IP1.定时控制寄存器TCONTCON的字节地址为88H,位地址为88H~8FHIT0/IT1:外部中断0/1请求触发方式控制位。1为脉冲触发,下降沿有效。0为电平触发,低电平有效。IE0/IE1:外中断/请求标志位。当CPU采样到(INT0/INT1)端出现有效中断请求时,IE0(IE1)位由硬件置“1”。当中断响应,转向中断服务程序后,由硬件把IE0(或IE1)清零。TR0/TR1:定时/计数器运行控制位。TF0/TF1:定时/计数溢出标志位。用于定时/计数器控制。

TCOND7D6D5D4D3D2D1D0位名称TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H功能T1中断标志T1启动控制T0中断标志T0启动控制中断标志触发方式中断标志触发方式电平中断单片机在每个机器周期的S5P2检查中断源口线一次,检测到低电平,即置位中断请求标志,向CPU请求中断。中断标志寄存器不锁存电平触发中断请求信号。单片机把每个机器周期的S5P2采样到的外部中断源口线的电平逻辑直接赋值到中断标志寄存器。但当中断请求被阻塞而没有得到及时响应时,将被丢失。电平触发中断请求不能及时撤销,将引起重复中断边沿中断单片机在上一个机器周期检测到中断源口线为高电平,下一个机器周期检测到低电平,即置位中断标志,请求中断。中断标志寄存器锁存边沿中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。2.串行中断控制寄存器SCON串行控制寄存器SCON的字节地址为98H,位地址为98H-9FHTI:串行口发送中断请求标志位。当发送完一帧串行数据后,由硬件置“1”;在中断响应,转向中断服务程序后,接口硬件不能自动将TI或RI清零,需用户用软件清零,来撤消中断。中断撤消必须在下一个中断到来之前完成。RI:串行口接收中断请求标志位。当接收完一帧串行数据后,由硬件置“1”;在中断响应,转向中断服务程序后,需用软件清“0”。串行中断请求由TI和RI的逻辑或得到。

TCOND7D6D5D4D3D2D1D0位名称SM0SM1SM2RENTB8RB8TIRI位地址9FH9EH9DH9CH9BH9AH99H98H功能方式选择方式选择多机通讯控制接收允许发送第9位接收第9位串行发送中断串行接收中断3.中断屏蔽寄存器IE中断屏蔽寄存器IE用于控制各中断源的中断开放或关闭。字节地址为0A8H,位地址为0A8H-0AFHEA:中断允许总控位。EA=0,屏蔽所有的中断请求;EA=1,开放所有中断请求。EA的作用是使中断允许形成两级控制。ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1允许串行口中断。ET1:定时器/计数器T1的溢出中断允许位。ET1=0,禁止T1中断;ET1=1,允许T1中断。EX1:外部中断1()的中断允许位。EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。ET0:定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0=1,允许T0中断。EX0:外部中断0()的中断允许位。EX0=0,禁止外部中断0中断;EX0=1允许外部中断0中断。IED7D6D5D4D3D2D1D0位名称EA

ESET1EX1ET0EX0位地址AFH

ACHABHAAHA9HA8H中断源CPU

串口T1T0

4.中断优先级控制寄存器IPMCS-51单片机的中断源可以设置为两个优先级:高优先级和低优先级,从而实现两级中断嵌套。优先级控制可以通过修改中断优先级控制寄存器IP的内容实现。IP的字节地址为0B8H,位地址为0BFH~0B8H

PS:串行口中断优先级控制位。“0”为低优先级,“1”为高优先级。PT1:定时器/计数器1(T1)的中断优先级控制位。“0”为低优先级,“1”为高优先级。PX1:外部中断1的中断优先级控制位。“0”为低优先级,“1”为高优先级。PT0:定时器/计数器0(T0)的中断优先级控制位。“0”为低优先级,“1”为高优先级。PX0:外部中断0的中断优先级控制位。“0”为低优先级,“1”为高优先级。同一级别中,优先权次序遵从自然优先级,从高到低依次为:INT0、T0、INT1、T1、RI/TI。IPD7D6D5D4D3D2D1D0位名称

PSPT1PX1PT0PX0位地址

BCHBBHBAHB9HB8H中断源

串口T1T0中断优先级遵循下列原则:正在进行中断服务的中断过程不能被新的同级或更低优先级的中断请求所中断,一直到该中断服务程序结束,返回主程序且执行了主程序中的一条指令后,CPU才响应新的同级或低级中断请求。正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套。高级中断结束后,返回低级中断服务。CPU同时接收到几个中断请求时,首先响应高优先级的中断请求,同一优先级内部,按照自然优先级响应。5.3中断过程5.3.1中断请求中断请求就是中断源向CPU申请中断的过程,即建立中断请求标志位IE0、IE1、TF0、TF1、TI/RI的过程外部中断请求:经由引脚P3.2、P3.3向CPU申请中断的过程。外部中断请求有两种方式:低电平触发和下降沿触发。通过设置触发方式控制位IT0、IT1进行选择。IT0=0,表示为低电平触发方式;IT0=1,表示为下降沿触发方式。IT1的情况类似。外部中断请求标志存放在IE0/IE1中。IE0为中断请求标志位。当有中断请求时IE0置1。IE1的情况类似。内部中断请求:当T0计数产生溢出时,由硬件置位TF0。当CPU响应中断后,再由硬件将TF0清0。T1的情况类似。当串行口发送结束时,使TI=1;当串行口接收结束时,使RI=1。CPU响应中断后,由软件将TI/RI位清0。5.3.2中断响应CPU对中断请求进行判断,形成中断矢量,转入相应的中断服务程序的过程叫中断响应。一、CPU响应中断的基本条件有中断源提出中断请求;中断总允许位EA=1,即CPU中断开放;申请中断的中断源的中断允许位为1,即中断源开放;CPU没有响应同级或更高优先级的中断;当前指令执行结束;如果正在执行的指令是RETI或是访问IE、IP指令。CPU在执行RETI或访问IE、IP指令后,至少还需要再执行一条其它指令后才会响应中断请求。二、中断响应过程单片机在每个机器周期的S5P2期间,顺序采样每个中断源,建立中断请求标志。在下一个机器周期按优先级查询中断标志,如查询到有中断标志为1,则按优先级进行中断响应。硬件将程序计数器PC的当前内容压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向相应的中断。这相当于执行一条长调用指令。中断响应过程中断响应过程:保护断点地址;

把程序转向中断服务程序的入口地址(通常称矢量地址)执行中断服务程序。中断响应特别注意:这些工作是硬件自动完成的!

断点地址中断服务子程序的入口地址程序存储器ROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口使用时,通常在这些入口地址处存放一条长跳转LCALLaddr16指令,使程序跳转到用户安排的中断服务程序起始地址上去!5个固定的中断源矢量地址程序存储器ROM0000H:复位后,程序的入口地址(PC=0000H)0023H:串行口中断入口0003H:外部中断0入口000BH:定时器0溢出中断入口0013H:外部中断1入口001BH:定时器1溢出中断入口002AH包含T0中断服务子程序的程序结构:

ORG0000H AJMPMAIN

ORG000BH AJMPINTT0

ORG0100HMAIN:MOVA,#08..INTT0:MOVA,#03..RETIENDAJMPMAINAJMPINTT05.3.3

中断处理中断服务程序从入口地址开始执行,直到返回指令RETI为止,这个过程称为中断处理(执行中断服务)。中断服务子程序一般包括两部分内容,一是保护和恢复现场,二是中断源服务(中断事务处理)。中断响应入口地址RETI保护现场INTT0:PUSHACC PUSHDPHPUSHDPLPUSHPSW

中断源服务

POPPSW

POPDPLPOPDPHPOPACCRETI保护现场恢复现场关中断保护现场开中断中断服务恢复现场开中断中断返回断点地址由堆栈弹出保护和恢复现场之后开中断,是为了允许响应更高级别的中断。保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。关中断RETI指令功能:把断点地址从堆栈取出,送到PC。并清除优先级状态触发器。特别注意:不能用RET指令代替RETI指令!中断响应中断返回RETI5.3.4中断返回5.3.5中断请求撤消外部中断INT0、INT1的中断请求标志位IE0、IE1在CPU响应中断后,由硬件清0撤消。定时/计数器T0、T1溢出标志TF0、TF1在CPU响应中断后,由硬件清0撤消。串行口发送结束/接收结束TI/RI在CPU响应中断后,由软件清0撤消。5.3.6中断响应时间中断响应时间是指CPU检测到中断请求信号到转入中断服务程序所需要的时间。若中断检测时正好是一条指令的最后1个机器周期,且不是RETI或访问IE、IP指令,则CPU执行2个机器周期的长调用转移指令即可执行中断服务程序,共1+2=3个机器周期。若中断检测时CPU正在执行RETI或访问IE、IP指令的第一个机器周期,需2个机器周期完成上述操作,若紧接着的下一条指令是乘法,则需4个机器周期,之后CPU执行一条2个机器周期的长调用转移指令才可执行中断服务程序,故共需8个机器周期。5.4外部中断源扩展MCS-51单片机只提供了两个外部中断请求输入端,在实际应用中,如果需要使用多于两个的外部中断源,就必须进行外部中断源的扩展。常用的几种外部中断源扩展方法是:利用单片机中的定时器/计数器T0、T1来扩展;外接硬件电路并配合查询程序扩展;外接中断控制芯片(如8259)进行扩展。

1.用定时器/计数器扩展外部中断源将定时器/计数器T0、T1设置为计数方式工作方式2负跳变触发初值设为0FFH允许中断当计数输入端发生一个负跳变时,计数器加1,便发生溢出,从而产生中断。

ORG0100H

MOVTMOD,#06H;设置定时器T0为工作方式2、计数模式MOVTH0,#0FFH;设置计数器初值MOVTL0,#0FFH

SETBET0;允许定时器中断

SETBEA;CPU开中断

SETBTR0;启动定时器T0初始化程序如下:2.查询方式扩展外部中断源多个中断源通过一个中断请求引脚申请中断中断源内部采用查询方式确定

例:通过OC门实现外部中断源扩展的基本原理如下图所示参考程序如下:

ORG0003H

LJMPINTER_PRO

ORG0100H

INTER_PRO:

JNBP1.0,SUB0_PRO

JNBP1.1,SUB1_PRO

......

JNBP1.7,SUB7_PRO3.中断控制芯片(如8259)进行扩展

当需要扩展的外部中断源比较多时,可以使用专用中断控制器8259实现。一个8259可以直接扩展8个中断源,经级联后,最多可以扩展64个中断源。堆栈设置触发方式设置中断开放优先级设置中断应用8件事在入口放转移指令保护/恢复现场开关中断中断标志撤销【例】按键中断控制LEDORG0000H

AJMPMAIN

ORG0003H

CLREAAJMPPINT0

ORG0100H MAIN:MOVSP,#3FH

SETBEA

SETBEX0

CLRIT0 H:SJMPH

ORG0200H PINT0:CPLP2.0 WAIT:JNBP3.2,WAIT SETBEA RETI END 例

两级中断ORG0000H ;在0000H单元存放转移指令

LJMPSTART ;转移到主程序

ORG0003H ;外部中断INT0入口

LJMPEXT0 ;转移到外部中断0的中断服务程序

ORG0013H ;外部中断INT1入口

LJMPEXT1 ;转移到外部中断1的中断服务程序

ORG0030H ;主程序从0030H开始存放START:MOVIE,#10000101B ;CPU、INT0、INT1中断开放

MOVIP,#00000100B ;INT1高中断优先级

MOVTCON,#00000101B ;INT0、INT1为下降沿触发

MOVSP,#3FH ;重置堆栈LOOP:MOVP1,#03H ;点亮2只LEDAJMPLOOP ;等待中断EXT0:PUSHACC ;堆栈保护

PUSHPSW MOVR2,#0AH ;闪烁10次LOOP1:MOVP1,#00H ;使LED0、LED1灭

LCALLDELAY

MOVP1,#01H ;使LED0亮

LCALLDELAY DJNZR2,LOOP1 ;循环10次

POPPSW POPACC RETIEXT1:PUSHACC ;堆栈保护

PUSHPSW MOVR3,#0AH ;闪烁10次LOOP2:MOVP1,#00H ;使LED0、LED1灭

LCALLDELAY

MOVP1,#02H ;使LED1亮

LCALLDELAYDJNZR3,LOOP2 ;循环10次

POPPSWPOPACCRETI ;中断返回DELAY:MOVR5,#20 ;延时200ms子程序

DLY1:MOVR6,#200 DLY2:MOVR7,#200DJNZR7,$DJNZR6,DLY2DJNZR5,DLY1RET ;中断返回

ENDPtoteus仿真

全自动洗衣机工作过程中,当遇到意外事件发生,如衣物缠绕,或需要干预洗衣进程时,如需要添加消毒液,就需要暂停当前洗衣进程,处理这些事件。假设全自动洗衣机有8个流程,用8个指示灯表示;用8个按键进行选择控制。当某个流程工作时,对应的指示灯点亮。当按下按键K时,中断正在进行的流程,对应的流程指示灯闪烁,洗衣机进入等待状态;再次按下K时,指示灯停止闪烁,变成点亮状态,表示洗衣机恢复原来被中断的洗衣流程。ORG0000H;在0000H单元存放转移指令

AJMPMAIN;转移至主程序

ORG0003H;INT0中断入口

AJMPWBI;转中断服务程序

ORG0030H;主程序

MAIN:MOVP2,#00H;全灯灭

SETBIT0;边沿触发中断

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论