返回首页
当前位置: 主页 > 中断系统 >

51单片机中断的响应过程及顺序举例说明

时间:2009-03-04 19:19来源:未知 作者:牛牛 点击:
若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且①当前正在执行的那条指令已被执行完 1、当前末响应同级或高级中断 2、不是在操作IE,IP中断控制寄存器或执行REH指令则单片机响应此中断。 在正常的情况下,从中断请求信号有效开始

若某个中断源通过编程设置,处于被打开的状态,并满足中断响应的条件,而且①当前正在执行的那条指令已被执行完
1、当前末响应同级或高级中断
2、不是在操作IE,IP中断控制寄存器或执行REH指令则单片机响应此中断。
在正常的情况下,从中断请求信号有效开始,到中断得到响应,通常需要3个机器周期到8个机器周期。中断得到响应后,自动清除中断请求标志(对串行I/O端口的中断标志,要用软件清除),将断点即程序计数器之值(PC)压入堆栈(以备恢复用);然后把相应的中断入口地址装入PC,使程序转入到相应的中断服务程序中去执行。
各个中断源在程序存储器中的中断入口地址如下:
中断源 入口地址
INT0(外部中断0) 0003H
TF0(TO中断) 000BH
INT1(外部中断1) 0013H
TFl(T1中断) 001BH
RI/TI(串行口中断) 0023H
由于各个中断入口地址相隔甚近,不便于存放各个较长的中断服务程序,故通常在中断入口地址开始的二三个单元中,安排一条转移类指令,以转入到安排在那儿的中断服务程序。以T1中断为例,其过程下如图四所示。 单片机
由于5个中断源各有其中断请求标志0,TF0,IEl,TFl以及RI/TI,在中断源满足中断请求的条件下,各标志自动置1,以向CPU请求中断。如果某一中断源提出中断请求后,CPU不能立即响应,只要该中断请求标志不被软件人为清除,中断请求的状态就将一直保持,直到CPU响应了中断为止,对串行口中断而言,这一过程与其它4个中断的不同之处在于;即使CPU响应了中断,其中断标志RI/TI也不会自动清零,必须在中断服务程序中设置清除RI/TI的指令后,才会再一次地提出中断请求。
CPU的现场保护和恢复必须由被响应的相应中断服务程序去完成,当执行RETI中断返回指令后,断点值自动从栈顶2字节弹出,并装入PC寄存器,使CPU继续执行被打断了的程序。
下面给出一个应用定时器中断的实例。
现要求编制一段程序,使P1.0端口线上输出周期为2ms的方波脉冲。设单片机晶振频率
Fosc=6MHZ.
1、方法:利用定时器T0作1ms定时,达到定时值后引起中断,在中断服务程序中,使P1.0的状态取一次反,并再次定时1ms。
2、定时初值:机器周期MC=12/fosc=2us。所以定时lms所需的机器周期个数为500D,亦即0lF4H。设T0为工作方式1(16位方式),则定时初值是(01F4H)求补=FEOCH

单片机


图片

START: MOV TMOD,#01H ;T0为定时器状态,工作方式1
  MOV TL0,#0CH ;T0的低位定时初值
  MOV TH0,#0FEH ;T0的高位定时初值
  MOV TCON,#10H ;打开T0
  SETB ET0 ;1ET0,即允许T0中断
  SETB EA ;1EA,即充许全局中断
  AJMP $ ;动态暂存
000BH: AJMP IST0 ;转入T0中断服务程序入口地址IST0
IST0: MOV TL0,#0CH ;重置定时器初值
  MOV TH0,#0FEH ;重置定时器初值
  CPL P1.0 ;P1.0取反
  RET1 ;中断返回
内容来自单片机之家www.dpj100.com

顶一下
(43)
100%
踩一下
(0)
0%
------分隔线----------------------------
推荐内容