现代的计算机都具有实时处理功能,当外界有突发事件时,cpu能够及时的做出处理,这就是靠中断来实现的。

当CPU正在处理某一命令时,这时外部发生了某一事件(如电平的变化,或者定时器/计数器溢出时)请求CPU去处理该事件,于是CPU停止处理当前的事件,并保存当前停止时的地址,转去处理所发生的事件,处理完毕后,CPU返回原先保存的停止时的地址,继续处理原先的事件,这样的过程被称为中断。

上图即为中断过程示意图,产生中断的请求源被称为中断源,中断源向CPU提出的处理请求被称为中断请求或中断申请。CPU暂时中止当前的事件,转去处理中断请求所对应的事件称为CPU的中断响应过程,对事件的整个处理过程称为中断服务(中断处理)。处理完毕后,返回到原先被中止的地方称为中断返回

因为有中断请求时,CPU当前执行的的程序是随机的,所以CPU在执行中断服务程序之前,除了硬件会自动把断点地址压入堆栈外,还要注意保护现场数据(相关的工作寄存器,累加器,标志位等信息),以便于在执行完中断服务程序之后恢复原先数据(称为恢复现场)。

89c51单片机的中断系统如图所示

89c51有5个中断源:

INT0    :外部中断0请求,低电平有效。

INT1    : 外部中断1请求,低电平有效。

T0    : 定时/计数器0溢出中断请求。

T1    :定时/计数器1溢出中断请求。

TXD/RXD    : 串口中断请求,当串口发送/接受完一帧数据时,便请求中断。

其中 INT0/1是两个外部中断,T0/1,TXD/RXD是3个内部中断

中断控制

89c51有以下4个特殊功能寄存器

定时器控制寄存器TCON(用6位);

串行口控制寄存器SCON(用2位);

中断允许寄存器IE;

中断优先级寄存器IP.

其中,TCON和SCON只有一部分位用于中断控制。通过对以上各种特殊功能寄存器的各位进行置位或复位操作,即可实现各种中断控制的功能。

1、TCON中的中断标志位

TF1 : 定时/计数器1的中断请求标志位,当定时/计数器溢出时,该位自动置1,并向CPU发出中断请求,当CPU响应中断时,硬件会自动对该位清0。当然,你也可以用“位操作指令”对TF0进行置“1”或清“0”操作。

TF0 :定时/计数器0的中断请求标志位,与TF1原理相同。

IE1 : 外部中断1的中断请求标志位,当检测到外部中断引脚上存在有效的中断请求信号时,由硬件自动使IE1置1,当CPU响应该中断请求时,由硬件自动使IE1清0

IT1 : 外部中断1的中断触发方式控制位

IT1 = 0 时,外部中断1为电平触发方式。CPU在每一个机器周期采样外部中断1请求引脚的输入电平,若外部中断1请求引脚为低电平,则使IE1位置1,若为高电平,则IE1清0。

IT1 = 1 时,外部中断1为边沿触发方式。CPU如果在两个连续的机器周期采样过程中,一个为高电平。接着下一个为低电平,那么IE1则置1,直到CPU响应该中断时,才由硬件使IE1位清0。

IE0 : 外部中断0的中断请求标志位,与IE1原理相同。

IT0 : 外部中断0的中断触发方式控制位,与IT1原理相同。

2、串行控制寄存器SCON

TI : 串行口发送中断请求标志位。CPU将数据写入SBUF时,就启动发送,每发送完一帧串行数据后,硬件自动把TI位置1,但CPU响应中断时,并不清除TI,必须在中断服务程序中由软件对TI清0

RI :串行口接收中断请求标志位,在串口允许接收时,每接收完一个串行帧,硬件自动对RI置1.同样CPU响应中断时不会清除RI位,必须用软件对其清0

3、中断允许控制寄存器IE

89c51对中断源的开放和关闭由中断允许寄存器控制,格式如下

中断允许寄存器IE对中断的开放和关闭实现两级控制,所谓的两级控制就是有一个总的开关中断控制位EA,当EA=0时,屏蔽所有的中断申请,及任何中断申请都不接受,当EA=1时,CPU开放中断,但5个中断源还有由其所对应的控制位的状态进行中断的允许控制。

EA : 中断允许总控制位。 EA = 0 时,屏蔽所有的中断请求,EA = 1时,CPU开放中断,对于中断源的请求是否允许还要取决于各中断源的中断允许控制位的状态。

ES : 串行口中断允许控制位。ES = 0时,禁止串行口中断,ES = 1时,允许串行口中断。

ET1  ;定时/计数器1的溢出中断允许控制位。ET1 = 0时,禁止T1中断,ET1 = 1时,允许T1中断。

EX1 : 外部中断1中断允许控制位。EX1 = 0时,禁止外部中断1中断,EX1 = 1时,允许外部中断1中断。

ET0 :  定时/计数器0的溢出中断允许控制位。ET0 = 0时,禁止T0中断,ET0 = 1时,允许T0中断。

EX0 : 外部中断0中断允许控制位。EX0 = 0时,禁止外部中断0中断,EX0 = 1时,允许外部中断0中断。

4、中断优先级控制寄存器

89c51有两个中断优先级,每一个中断请求源均可编程为高优先级中断和低优先级中断。

PS : 串行口中断优先级控制位,置1时,为高优先级,置0时,为低优先级。

PT1 : 定时/计数器1中断优先级控制位,控制方法同上。

PX1 : 外部中断1中断优先级控制位,控制方法同上。

PT0 : 定时/计数器0中断优先级控制位,控制方法同上。

PX0 : 外部中断0中断优先级控制位,控制方法同上。

当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于内部硬件的查询顺序,如下图所示

当CPU正在处理一个中断请求时,又出现了一个优先级比它高的中断请求时,这时CPU会暂时中止对低优先级中断源的处理,保护当前断点,转去响应优先级更高的中断请求。

89c51中断优先控制的基本原则:

高优先级的中断可以中断正在响应的低优先级的中断,反之则不能

同优先级中断不能互相中断

同一中断优先级中,若有多个中断源同时请求中断,则CPU先响应优先权高的中断,后响应优先权低的中断。

89c51中断系统及中断控制相关推荐

  1. 51 中断系统 外部中断0 外部中断1

    51单片机的中断系统结构 中断允许控制 CPU对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE控制的. EX0(IE.0),外部中断0允许位: ET0(IE.1),定时/计数器T0中 ...

  2. 单片机基础:什么是中断系统、中断系统如何用(附中断系统应用实例)

    中断系统 1.前言 2.什么是中断 3.什么是中断系统 4.中断的流程 5.中断的优先级控制 6.中断源 外部中断 7.与中断有关的特殊功能寄存器 7.1.定时/计数器控制寄存器 `TCON` 7.2 ...

  3. 详解中断系统 与 中断周期

    1.中断系统 1.1 中断系统需要解决的问题 小提示:当我们需要分析某一个系统的结构时?就需要明确该系统应该解决哪些问题? 从每个问题的解决中,逐步剖析系统结构 1.1.1 各中断源如何向CPU提出请 ...

  4. 89C51单片机中的中断系统

    89C51单片机中的中断系统 对于在单片机中的学习,中断系统是一难点,如果中断系统没有理解透彻,51单片机的学习就算是失败的. 首先,举例说明下什么是中断. eg.当你在家正在吃着爆米花,看着电视,突 ...

  5. 单片机的中断系统(一)

    想总结中断由来已久,但是总感觉一章的东西,太多,无从下手. 前几天看到一句话"能把自己学会的东西说出来,才是真的学会".今天,就要会一会这中断系统. 图片和文字内容来自:普中科技的 ...

  6. TMS320F28335项目开发记录9_28335之中断系统

    TMS320F28335项目开发记录9_28335之中断系统 2014年11月08日 12:00:12 阅读数:3104 28335中断系统 1.中断系统 在这里我们要十分清楚DSP的中断系统.C28 ...

  7. DSP28335笔记 ———— 中断系统 之 外部中断

    DSP28335笔记 ---- 中断系统 之 外部中断 我用的开发板是"硬汉DSP28335开发板",文中对于硬件的描述可以说是没有,而且我还没有附上电路图希望在看的朋友不要喷我. ...

  8. 中断系统的简单了解以及C51(STC89C52)单片机中断系统的详解

    目录 一.中断系统简介 二.C51单片机的中断 1.外部中断 2.定时器/计数器中断 三.总结 一.中断系统简介 中断系统是为使CPU具有对外界紧急事件的实时处理能力而设置的. 当中央处理机CPU正在 ...

  9. 【C51自学笔记】中断系统

    中断 中断概念与中断触发: 中断的概念: CPU在处理某一事件A时,发生了另一事件B请求CPU迅速去处理(中断发生): CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务): 待CPU将事件 ...

最新文章

  1. oracle断电 ora01110,oracle在做备份的时候断电
  2. pandas.DataFrame.iterrows
  3. 使用外星人进行测试:如何使用Arquillian测试JPA类型转换器
  4. hashCode之二--Java:重写equals()和hashCode()
  5. 春节假期前5天全国快递处理量达3.65亿件 同比增长224%
  6. Python三种方法统计4位自然数变为黑洞数6174所需次数分布
  7. php cpu型号,linux如何查看cpu型号?
  8. 音视频编解码:NVIDIA Jetson Linux Multimedia API(总结)
  9. 进程和cpu的相关知识和简单调优方案
  10. visio从mysql导入_Visio 怎么从Excel、SQL、SharePoint和其他外部源导入数据?
  11. 2022新版Git教程 从入门到实战(二)Git本地仓库的使用
  12. smtp服务器组件,配置exchange Smtp服务器
  13. STM8停产,新唐的N76E003 pin对pin替换STM8S003F3P6
  14. [置顶] 【原创】无线LED条屏信息报警项目---2012.05
  15. 手机怎么录游戏视频 手机屏幕录制的方法
  16. php函数形参,PHP中的函数形参的默认值
  17. 最新 lineageos 编译过程 详细过程
  18. 东南计算机学硕专硕,2019考研报考注意这个专业学硕竟然不能调剂到专硕
  19. 去掉所有的空格、回车换行符
  20. 怎么在Mysql中添加列_mysql如何给表中添加列(字段)?

热门文章

  1. 肾结石的诱因有哪些?
  2. 没有网络怎么学网络爬虫之BeautifulSoup爬取html表格存入Excel表格
  3. stm32 每次复位启动RTC时间都会变慢
  4. 数字电路逻辑设计笔记(5):chap5集成触发器
  5. 云存储系统监控服务分析
  6. 数据库实验基本操作使用
  7. 【Android音视频开发】【013】SurfaceView生命周期
  8. ARM Cortex -M 体系结构————————ARM微控制器与嵌入式系统(清华大学慕课记录)
  9. 我在HIT第一次.net实验中用到的sql语句
  10. main语句和sout输出语句,变量的类型转换、命名规则、赋值及注意事项