中断的引入

中断系统是为使CPU具有对外界紧总事件的实时处理能力而设置的

当中央处理机CPU正在处理某件事的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作 ,这样的过程称为中断。实现这种功能的部件称为中断系统,请示CPU中断的请求源称为中断源。微型机的中断系统一般允许多个中断源,当几个中断源同时向CPU请求中断,要求为它服务的时候,这就存在CPU优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU总是先响应优先级别最高的中断请求。

当CPU正在处理一个中断源请求的时候(执行相应的中断服务程序 ),发生了另外一个优先级比它还高的中断源请求。如果CPU能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系统,没有中断嵌套功能的中断系统称为单级中断系统。

STC89C51RC/RD+系列单片机提供了8个中断请求源,它们分别是:外部中断0(INTO )、定时器0中断、外部中断1(INTI )、定时器1中断、串(UART )中断、定时器2中断、外部中断2(INT2 )、外部中断3(INT3)。所有的中断都具有4个中断优先级。用户可以用关总中断允许位(EAE.7)或相应中断的允许位来屏蔽所有的中断请求,也可以用打开相应的中断允许位来使CPU响应相应的中断申请:每一个中断源可以用软件独立地控制为开中断或关中断状态:每个中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,低优先级的中断请求不可以打断高优先级及同优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来决定系统先响应哪个中断。

|--------------|--------|-------------|-----------------|----------|------|------|------|----------|----------|
| 中断源 | 中断向量地址 | 相同优先级内的查询次序 | 中断优先级设置(IPH,IP) | 优先级0(最低) | 优先级1 | 优先级2 | 优先级3 | 中断请求标志位 | 中断允许控制位 |
| INT0 (外部中断0) | 0003H | 0(highest) | PX0H,PX0 | 0,0 | 0,1 | 1,0 | 1,1 | IE0 | EX0/EA |
| Timer 0 | 000BH | 1 | PT0H,PT0 | 0,0 | 0,1 | 1,0 | 1,1 | TF0 | ET0/EA |
| INT1 (外部中断1) | 0013H | 2 | PX1H,PX1 | 0,0 | 0,1 | 1,0 | 1,1 | IE1 | EX1/EA |
| Timer 1 | 001BH | 3 | PT1H,PT1 | 0,0 | 0,1 | 1,0 | 1,1 | TF1 | ET1/EA |
| UART | 0023H | 4 | PSH,PS | 0,0 | 0,1 | 1,0 | 1,1 | RI+TI | |
| Timer 2 | 002BH | 5 | PT2H,PT2 | 0,0 | 0,1 | 1,0 | 1,1 | TF2+EXF2 | (ET2)/EA |
| INT2 (外部中断2) | 0033H | 6 | PX2H,PX2 | 0,0 | 0,1 | 1,0 | 1,1 | IE2 | EX2/EA |
| INT3 (外部中断3) | 003BH | 7(lowest) | PX3H,PX3 | 0,0 | 0,1 | 1,0 | 1,1 | IE3 | EX3/EA |
[中断查询次序]

通过设置新增加的特殊功能寄存器IPH中的相应位,可将中断优先级设为四级,如果只设置IP或XICON,那么中断优先级就只有两级,与传统8051单片机两级中断优先级完全兼容。

如果使用C语言编程,中断查询次序号就是中断号,例如:

|------|-----------------------|--------------|
| void | Int0_Routine(void) | interrupt 0 |
| void | Timer0_Rountine(void) | interrupt 1 |
| void | Intl_Routine(void) | interrupt 2 |
| void | Timer1_Rountine(yoid) | interrupt 3 |
| void | UART_Routine(void) | interrupt 4 |
| void | Timer2 Routine(yoid) | interrupt 5 |
| void | Int2 Routine(void) | interrupt 6 |
| void | int3 Routine(void) | interrupt 7x |

中断允许寄存器EE和XICON

STC89C51RC/RD+系列单片机CPU对中斯源的开放或屏蔽,每一个中断源是否被允许中断,是由内部的中断允许寄存器E(地址为A8H)和XICON(地址为C0H)控制的,寄存器IE的格式如下:

EA: CPU的总中断允许控制位,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请,EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制:其次还受各中断源自己的中断允许控制位控制。

ET2: 定时/计数器T2的溢出中断允许位。ET2=1,允许T2中断: ET2=0,禁止T2中断。

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

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

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

ET0: T0的溢出中断允许位,ET0=1,允许T0中断;ET0=0禁止T0中断

EX0: 外部中断0中新允许位。EX0=1,允许中断;EX0=0禁止中断。

CPU 能响应定时器 0 中断的条件:需要配置 IE 寄存器的 bit1: ET0 bit7:EA

  1. ET0中断允许要置一 ET0 = 1
  2. EA总中断要置一 EA = 1
相关推荐
CS小麻瓜22 分钟前
Web植物管理系统-下位机部分
c++·嵌入式硬件·湖南大学
MGT_97962 小时前
基于51单片机的GPS定位系统(仿真)
单片机·嵌入式硬件·51单片机
艾格北峰3 小时前
STM32 BootLoader 刷新项目 (六) 获取帮助-命令0x52
arm开发·stm32·单片机·嵌入式硬件
m0_739312874 小时前
【STM32】独立看门狗(IWDG)原理详解及编程实践(上)
stm32·单片机·嵌入式硬件
CV金科5 小时前
蓝桥杯-STM32G431RBT6(串口)
c语言·stm32·单片机·嵌入式硬件·蓝桥杯
硬核科技7 小时前
变压器在电源中的核心作用
网络·单片机·嵌入式硬件·硬件工程·智能硬件·开关电源
CV金科8 小时前
蓝桥杯-STM32G431RBT6(UART解析字符串sscanf和解决串口BUG)
c语言·stm32·单片机·嵌入式硬件·mcu·算法·bug
培林将军8 小时前
C51单片机-单按键输入识别,键盘消抖
单片机·嵌入式硬件·计算机外设
hong1616888 小时前
单片机(Microcontroller)原理及应用
单片机·嵌入式硬件