您当前的位置:首页 > 自动化 > 单片机

8051单片机原理

发布时间:2008-12-21 19:43:14  来源:    作者:   更新20250321 070354

8051单片机原理


8031、8751AH和89C51,提供了5个中断源:即2个外部中断、两个计时器中断和串列口中断。 8052AH则除了以上5个中断外另增加了第六个中断:那就是第三个计时器/计数器。底下仅将中断结构作一概略性的介绍。

 

中断允许暂存器(INTERRUPT ENABLES)
EA
-
ET2
ES
ET1
EX1
ET0
EX0
 
EA
IE.7
如果EA=0,禁止所有的中断,EA=1时,各中断是否作用,由各允许位决定
-
IE.6
不能使用
ET2
IE.5
允许Timer2溢位或补入中断(8052)
ES
IE.4
允许串行I/O
ET1
IE.3
允许Timer1
EX1
IE.2
允许INT1
ET0
IE.1
允许Timer0
EX0
IE.0
允许INT0


透过设定或清除在SFR里名为IE(Interrupt Enable)暂存器里的位元,每个中断源都可以被各别的(Enable)或禁止(DISABLE)。这个暂存器(IE)也包含有一个整体禁止位元,它可以被清除,以禁止所有的中断。


中断优先权(Interrupt Priority)

 
-
PT2
PS
PT1
PX1
PT0
PX0
 
 
 
IE.7
不能使用
-
IE.6
不能使用
PT2
IE.5
定义Timer2优先权(8052)
PS
IE.4
定义串行I/O优先权
PT1
IE.3
定义Timer1优先权
PX1
IE.2
定义INT1优先权
PT0
IE.1
定义Timer0优先权
PX0
IE.0
定义INT0优先权

每个中断源可透过设定或清除SFR内名为IP(Interrupt Priority)的暂存器内的某些位元,可个别的将它们规划到两层优先权的一层里,较低优先权的中断可以被较高优先权的中断所中断,但并不能被另一个低优先权中断。而高优先权中断就不能被其它中断源中断。如果有两个不同优先权层次的中断同时到达时,则较高优先权的中断要求先被服务。如果相同优先层次的中断同时到达时,则可以用内部的轮询(polling)顺序决定那一个要求先被服务,因此在每个优先层次里有一个次优先权结构由轮询顺序来决定。

IE和IP暂存器及轮询顺序如何动作?

以决定任何中断发生时那一个会被优先服务。中断工作会在每个机械周期的状态5(S5)时,所有的中断旗号都被锁入中断控制系统中,这个取样信号会在下一个机械周期时被加以检查,如果有允许的中断,它的旗号被发现设定"1",此时中断系统就产生一个LCALL至程序记忆体的对应位址。但有某些情况会禁止中断的产生,即相同或较高优先权的中断正在执行时。

硬体所产生的LCALL动作会使得目前的程序计数器值被推入(push)堆叠区,然后将服务程序的起始位址载入PC。如前面所述每个中断服务程序都有一固定的起始位址。中断发生时仅有程序计数器(PC)被推入堆叠区,而PSW或任何一个暂存器都没有放入堆叠区。仅PC被推入堆叠区保存起来,这使得写程序的人可以自己决定要花多少时间去保存其它的暂存器,虽然这会增加程序的负担,但这样,可增快中断响应时间。在许多的中断功能里,例如控制应用时,只要将口里的接脚反相、或重新载入计时器、或读入或写资料至列口缓冲区时,这种作法通常可以比其它的CPU还短的时间完成中断服务的工作。


来顶一下
近回首页
返回首页
分享到:
  • 8051单片机技术 xrxj 于2017-04-22 10:07:44发布
  • 发表评论

     共有人参与,请您也说几句看法

     
       验证码: 看不清楚,点击刷新 看不清楚,点击刷新