DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 237|回复: 0
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-29 10:25:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MCS-51单片机外中断软件编程
MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行中断,这一节我们讨论外中断软件编程。
外中断是由外部原因引起的中断,有两个中断源。即外中断0(INT0)和外中断1(INT1),中断请求信号由引脚P3.2(INT0)和P3.3(INT1)输入。

外中断请求信号有两种方式,一是电平方式,二是脉冲方式。可通过有关控制位的定义进行规定。

电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请求输入端采样到有效的低电平时,就会激活外部中断。

脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低即为有效中断请求。这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。



定时器控制寄存器 (TCON)

外中断请求方式的控制位在定时控制寄存器TCON(地址为88H)中的位88(IT0)和位8A(IT1)两个位,当IT0(IT1)=0为电平方式,IT0(IT1)=1为脉冲方式。同时在此寄存器中的位89(IE0)和位8B(IE1)为外中断请求标志位,当CPU采样到INT0(INT1)端出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。



定时器控制寄存器 (TCON)

位地址
8F
8E
8D
8C
8B
8A
89
88

位符号
TF1
tr1
TF0
tr0
IE1
IT1
IE0
IT0


中断允许控制寄存器 (IE)



中断允许控制寄存器 (IE)

位地址
AF
AE
AD
AC
AB
AA
A9
A8

位符号
EA
/
/
ES
ET1
EX1
ET0
EX0

下面我们对有关控制位作说明:

·EA——中断允许总控制位,EA=0,中断总禁止,禁止所有中断。EA=1,中断总允许,总允许位打开后,各中断的允许或禁止由各中断允许控制位设置决定。

·EX0(EX1)——外部中断允许控制位,EX0(EX1)=0,禁止外部中断。EX0(EX1)=1,允许外部中断。

·ET0(ET1)——定时/计数中断允许控制位,ET0(ET1)=0,禁止定时/计数中断。ET0(ET1)=1,允许定时/计数中断。

·ES——串行中断允许控制位,ES=0,禁止串行中断。ES=1,允许串行中断。

中断的允许和禁止就是中断的开放和关闭,中断允许就是开放中断,中断的禁止就是关闭中断。从以上说明我们可看出,MCS-51的中断允许是通过两级控制的,以EA位作为总中断控制位,以各中断控制位为分控制位。当总中断位为禁止状态时,不管分控制位是允许或禁止整个中断都是禁止的。只有当EA=1(允许)时,才能由各分控制位设置各自的中断允许与禁止。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。

值得一提的是:单片机中断响应后不会自动关闭中断,因此在转入中断服务程序后,应由软件指令禁止中断。



中断优先级控制寄存器 (IP)

MCS-51的中断优先级控制比较简单,只设置了高、低两个级别的有限级,各中断源的优先级别由优先寄存器(IP)进行控制。



中断优先级控制寄存器 (IP)

位地址
BF
BE
BD
BC
BB
BA
B9
B8

位符号
/
/
/
PS
PT1
PX1
PT0
PX0

·PX0——外中断0(INT0)优先级控制位。
·PT0——定时中断0(T0)优先级控制位。
·PX1——外中断1(INT1)优先级控制位。
·PT1——定时中断1(T1)优先级控制位。
·PS ——串行中断(ES)优先级控制位。

控制位=0,优先级为低。控制位=1,优先级为高。

中断优先级是为了中断嵌套服务的,控制原则为:
(1)低优先级中断不能打断高优先级的中断服务,而高优先级的中断服务可以打断低优先级的中断服务。
(2)同级的中断已经响应,其他中断将被禁止。
(3)如果同级的多个中断源同时出现,CPU将按查询次序确定哪个中断被响应,次序为:外中断0→定时中断0→外中断1→定时中断1→串行中断。



中断控制寄存器的状态设置

在应用中,我们可以通过相应的控制寄存器来使用中断系统,因此从使用的角度上看,这些控制寄存器是面向用户的。这些控制寄存器既可以进行字节寻址,也可以进行位寻址,也就是对位状态的寻址既可以使用字节操作指令也可以使用位操作指令,例如:

MOVIE,#81H

如使用位操作指令,也可写为:
SETBEA
SETBEX0

对于一般的外中断程序,我们可以这样安排:

ORG0000H;主程序入口
START:AJMPMAIN

ORG0003H;外中断程序入口
AJMPINT00

MAIN:MOVIE,#81H;允许总中断和外中断
……;主程序
……
……

INT00:……;外中断服务程序
……
RETI;中断返回
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2026-8-12 04:14 , 耗时 0.122214 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表