51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > ◆学习MCU > 详细内容
[基础篇]十八、中断系统
阅读次数:5388  字体大小: 【】 【】【

  1. 有关中断的概念

    什么是中断,我们从一个生活中的例子引入。你正在家中看书,突然电话铃响了,你放下书本,去接电话,和来电话的人交谈,然后放下电话,回来继续看你的书。这就是生活中的“中断”的现象,就是正常的工作过程被外部的事件打断了。

    仔细研究一下生活中的中断,对于我们学习单片机的中断也很有好处。第一、什么可经引起中断,生活中很多事件可以引起中断:有人按了门铃了,电话铃响了,你的闹钟闹响了,你烧的水开了 …. 等等诸如此类的事件,我们把可以引起中断的称之为中断源,单片机中也有一些可以引起中断的事件, 8031 中一共有 5 个:两个外部中断,两个计数 / 定时器中断,一个串行口中断。

    第二、中断的嵌套与优先级处理:设想一下,我们正在看书,电话铃响了,同时又有人按了门铃,你该先做那样呢?如果你正是在等一个很重要的电话,你一般不会去理会门铃的,而反之,你正在等一个重要的客人,则可能就不会去理会电话了。如果不是这两者(即不等电话,也不是等人上门),你可能会按你通常的习惯去处理。总之这里存在一个优先级的问题,单片机中也是如此,也有优先级的问题。优先级的问题不仅仅发生在两个中断同时产生的情况,也发生在一个中断已产生,又有一个中断产生的情况,比如你正接电话,有人按门铃的情况,或你正开门与人交谈,又有电话响了情况。考虑一下我们会怎么办吧。

    第三、中断的响应过程:当有事件产生,进入中断之前我们必须先记住现在看书的第几页了,或拿一个书签放在当前页的位置,然后去处理不同的事情(因为处理完了,我们还要回来继续看书):电话铃响我们要到放电话的地方去,门铃响我们要到门那边去,也说是不同的中断,我们要在不同的地点处理,而这个地点通常还是固定的。计算机中也是采用的这种方法,五个中断源,每个中断产生后都到一个固定的地方去找处理这个中断的程序,当然在去之前首先要保存下面将执行的指令的地址,以便处理完中断后回到原来的地方继续往下执行程序。具体地说,中断响应可以分为以下几个步骤: 1 、保护断点,即保存下一将要执行的指令的地址,就是把这个地址送入堆栈。 2 、寻找中断入口,根据 5 个不同的中断源所产生的中断,查找 5 个不同的入口地址。以上工作是由计算机自动完成的,与编程者无关。在这 5 个入口地址处存放有中断处理程序(这是程序编写时放在那儿的,如果没把中断程序放在那儿,就错了,中断程序就不能被执行到)。 3 、执行中断处理程序。 4 、中断返回:执行完中断指令后,就从中断处返回到主程序,继续执行。

    究竟单片机是怎么样找到中断程序所在位置,又怎么返回的呢?我们稍后再谈。

  2. MCS-51 中断系统的结构:

如图(抱歉,本图请找本 51 书看一下)所示,由与中断有关的特殊功能寄存器、中断入口、顺序查询逻辑电路等组成,包括 5 个中断请求源, 4 个用于中断控制的寄存器 IE 、 IP 、 ECON 和 SCON 来控制中断 类弄、中断的开、关和各种中断源的优先级确定。

  1. 中断请求源:

( 1 )外部中断请求源:即外中断 0 和 1 ,经由外部引脚引入的,在单片机上有两个引脚,名称为 INT0 、 INT1 ,也就是 P3.2 、 P3.3 这两个引脚。在内部的 TCON 中有四位是与外中断有关的。

IT0 : INT0 触发方式控制位,可由软件进和置位和复位, IT0=0 , INT0 为低电平触发方式, IT0=1 , INT0 为负跳变触发方式。这两种方式的差异将在以后再谈。

IE0 : INT0 中断请求标志位。当有外部的中断请求时,这位就会置 1 (这由硬件来完成),在 CPU 响应中断后,由硬件将 IE0 清 0 。

IT1 、 IE1 的用途和 IT0 、 IE0 相同。

( 2 )内部中断请求源

TF0 :定时器 T0 的溢出中断标记,当 T0 计数产生溢出时,由硬件置位 TF0 。当 CPU 响应中断后,再由硬件将 TF0 清 0 。

TF1 :与 TF0 类似。

TI 、 RI :串行口发送、接收中断,在串口中再讲解。

2 、中断允许寄存器 IE

在 MCS - 51 中断系统中,中断的允许或禁止是由片内可进行位寻址的 8 位中断允许寄存器 IE 来控制的。见下表

EA

X

X

ES

ET1

EX1

ET0

EX0

其中 EA 是总开关,如果它等于 0 ,则所有中断都不允许。

ES -串行口中断允许

ET1 -定时器 1 中断允许

EX1 -外中断 1 中断允许。

ET0 -定时器 0 中断允许

EX0 -外中断 0 中断允许。

如果我们要设置允许外中断 1 ,定时器 1 中断允许,其它不允许,则 IE 可以是

EA

X

X

ES

ET1

EX1

ET0

EX0

1

0

0

0

1

1

0

0

即 8CH ,当然,我们也可以用位操作指令

SETB EA
SETB ET1

SETB EX1

来实现它。

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号