原创 MCS-51单片机外中断软件编程

2009-8-16 00:36 2086 6 6 分类: MCU/ 嵌入式

发布: 2009-4-03 23:38 |  作者: hnrain |   查看: 31次


MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行中断,这一节我们讨论外中断软件编程。
,pB"i)\|0    外中断是由外部原因引起的中断,有两个中断源。即外中断0(INT0)和外中断1(INT1),中断请求信号由引脚P3.2(INT0)和P3.3(INT1)输入。
(QzR5cpA3Xkk]3`[K0电子园51单片机学习网R V_%n9uN$Z$J
    外中断请求信号有两种方式,一是电平方式,二是脉冲方式。可通过有关控制位的定义进行规定。
9wqUPu:V/^2kFx0
&N)u(}fh3O9L0    电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请求输入端采样到有效的低电平时,就会激活外部中断。
v-Mv g&HU0
EZI}1[ lJ A0    脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低即为有效中断请求。这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。
b7jB9{ }(Bzo@0
C%|p1hIS]0    200943211916277.gif  定时器控制寄存器 (TCON)电子园51单片机学习网;G[?U0m
电子园51单片机学习网;j6g8c4m+[/B3Ur
    外中断请求方式的控制位在定时控制寄存器TCON(地址为88H)中的位88(IT0)和位8A(IT1)两个位,当IT0(IT1)=0为电平方式,IT0(IT1)=1为脉冲方式。同时在此寄存器中的位89(IE0)和位8B(IE1)为外中断请求标志位,当CPU采样到INT0(INT1)端出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。电子园51单片机学习网-Pk o(]0?]L;So

` w)kCm0
定时器控制寄存器 (TCON)
位地址8F8E8D8C8B8A8988
位符号TF1TR1TF0TR0IE1IT1IE0IT0

K/U(V0SL+{/A6w0
    200943211916277.gif  中断允许控制寄存器 (IE)
Wy1rc qa9M)y0电子园51单片机学习网$Qa6~MN2C ?-X|LM

中断允许控制寄存器 (IE)
位地址AFAEADACABAAA9A8
位符号EA  /  / ES ET1EX1ET0EX0


,uj0Dm-c+Ct&P3Gma0    下面我们对有关控制位作说明:
+V r?-sz$E,v0
-v6A'tEls0    ·EA——中断允许总控制位,EA=0,中断总禁止,禁止所有中断。EA=1,中断总允许,总允许位打开后,各中断的允许或禁止由各中断允许控制位设置决定。
%TV)Nq8x,])|#Z0
?/`b%Om Fu;w;C0    ·EX0(EX1)——外部中断允许控制位,EX0(EX1)=0,禁止外部中断。EX0(EX1)=1,允许外部中断。电子园51单片机学习网2u7V},y2NlU
电子园51单片机学习网;Dy E/~'f[uxC
    ·ET0(ET1)——定时/计数中断允许控制位,ET0(ET1)=0,禁止定时/计数中断。ET0(ET1)=1,允许定时/计数中断。
{] p5mR,`7|L.T0电子园51单片机学习网.wN&{W'E7X(ky _
    ·ES——串行中断允许控制位,ES=0,禁止串行中断。ES=1,允许串行中断。电子园51单片机学习网7tFa#W#Ln

@3xw S&bL3|l0    中断的允许和禁止就是中断的开放和关闭,中断允许就是开放中断,中断的禁止就是关闭中断。从以上说明我们可看出,MCS-51的中断允许是通过两级控制的,以EA位作为总中断控制位,以各中断控制位为分控制位。当总中断位为禁止状态时,不管分控制位是允许或禁止整个中断都是禁止的。只有当EA=1(允许)时,才能由各分控制位设置各自的中断允许与禁止。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。电子园51单片机学习网0AF,[7T c

lm ?#D@0    值得一提的是:单片机中断响应后不会自动关闭中断,因此在转入中断服务程序后,应由软件指令禁止中断。
7u EDc5vD0电子园51单片机学习网~e[JAO|
    200943211916277.gif  中断优先级控制寄存器 (IP)
A.cmgfL$HH0
0P6u5QpP0  MCS-51的中断优先级控制比较简单,只设置了高、低两个级别的有限级,各中断源的优先级别由优先寄存器(IP)进行控制。
/ke9E&j'R'btE0
R X&Z&U5D8k0

中断优先级控制寄存器 (IP)
位地址BFBEBDBCBBBAB9B8
位符号 /  /  / PS PT1PX1PT0PX0

电子园51单片机学习网Bp!HI?6dP
    ·PX0——外中断0(INT0)优先级控制位。电子园51单片机学习网$s#m0l8V[T0ct
    ·PT0——定时中断0(T0)优先级控制位。
Miu"]%}0    ·PX1——外中断1(INT1)优先级控制位。
q#?1X&`Vn0    ·PT1——定时中断1(T1)优先级控制位。电子园51单片机学习网J*xB'm1l2~ OM
    ·PS ——串行中断(ES)优先级控制位。
.k KL(Rgv2k D!iv+Q0电子园51单片机学习网 {!lny6W(f7y&P
    控制位=0,优先级为低。控制位=1,优先级为高。
{5g8o| qB|U0电子园51单片机学习网$rp(u+R yV
    中断优先级是为了中断嵌套服务的,控制原则为:电子园51单片机学习网#Q1NL4|$W
    (1) 低优先级中断不能打断高优先级的中断服务,而高优先级的中断服务可以打断低优先级的中断服务。
huE.h6V`%X)v.z0    (2) 同级的中断已经响应,其他中断将被禁止。电子园51单片机学习网,L:wI:Z"OI:xolw
    (3) 如果同级的多个中断源同时出现,CPU将按查询次序确定哪个中断被响应,次序为:外中断0→定时中断0→外中断1→定时中断1→串行中断。电子园51单片机学习网rCj5t!`p6j

m;HQ)u+Im |,~q0    200943211916277.gif  中断控制寄存器的状态设置
FK1T?tV:` WN/X)\0
"BG ^|~~h^hH%_0    在应用中,我们可以通过相应的控制寄存器来使用中断系统,因此从使用的角度上看,这些控制寄存器是面向用户的。这些控制寄存器既可以进行字节寻址,也可以进行位寻址,也就是对位状态的寻址既可以使用字节操作指令也可以使用位操作指令,例如:
"w4dHI3T"~5q,n.b s0电子园51单片机学习网!lHL|L5j]
        MOV    IE,#81H
0orgt YcvCM0
D8q.P5yRf9VkB0    如使用位操作指令,也可写为:
8L#RwS#pV D0        SETB    EA
m_5P*U&]8S^R0        SETB    EX0
X7X*}*`@0E3G4J4T"s0电子园51单片机学习网+WfgqL;pI
    对于一般的外中断程序,我们可以这样安排:
-cVl V&h7j wW}0
k pFYt _7tztvgN0        ORG    0000H    ;主程序入口
h K I`3~j H0T0START:  AJMP   MAIN电子园51单片机学习网&m^4N(}4_.j
电子园51单片机学习网+P-j'dsbF
        ORG    0003H    ;外中断程序入口电子园51单片机学习网-O~'f&y CdNS,u
        AJMP   INT00电子园51单片机学习网*v7U{3Kq TYvS/R'Q s

a+_ifz*w'k+k0MAIN:   MOV    IE,#81H  ;允许总中断和外中断电子园51单片机学习网X[ thO.z8y;l H
        ……            ;主程序
w1f @@0R$b0        ……电子园51单片机学习网.Z!I1s l-X{+XOV
        ……
#Z$Fi,N!As0电子园51单片机学习网6xR3K FP?O6O
INT00:  ……            ;外中断服务程序
/@xPA-\nd/A0        ……电子园51单片机学习网`'e(sH h}&c8n
        RETI            ;中断返回
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
6
关闭 站长推荐上一条 /3 下一条