从头开始学51单片机之5:中断系统

5.1 中断系统概述

  • 中断技术是MCU实现实时处理和控制的关键技术,可以极大提高MCU工作效率和处理问题的灵活性。MCU的中断系统包含其实现中断功能的各种软硬件总称。
  • 中断的概念:CPU执行程序时,MCU外部或内部发生某一事件,CPU暂时中止当前的工作,转到中断服务程序处理所发生的事件;处理完该事件后,CPU再回到原来被中止的地方,继续原来的工作。这个过程称为中断,CPU处理事件的过程,称为CPU的中断响应过程。

  • 中断源:向CPU发出中断请求的来源
  • 中断请求:中断源提出的服务请求
  • 主程序:原来正在运行的程序
  • 断点:主程序被断开的位置(本质上是地址值)
  • 中断源分类:内部中断源和外部中断源
  • MCU中断处理步骤:中断请求 -> 中断响应 -> 中断处理 -> 中断返回

5.2 51系列单片机的中断系统

1. 51系列单片机中断系统结构

  • 以AT89S51为例,可以提供5个中断源(AT89S52有6个中断源),具有2个中断优先级
  • 有4个用于中断控制的寄存器:IE、IP、TCON、SCON

 2. 51系列单片机中断源

1\small \overline{INT0}外部中断源0请求,P3.2引脚IE0有两种信号触发方式:电平触发和边沿触发
2\small \overline{INT1}外部中断源1请求,P3.3引脚IE1
3T0定时器/计数器T0溢出中断TF0内部中断
4T1定时器/计数器T1溢出中断TF1
5TX/RX串口中断请求TI/RI

串口接收中断标志RI

串口发送中断标志TI

 3. 51系列单片机中断寄存器

TCON
位地址8FH8EH8DH8CH8BH8AH89H88H
TCON (88H)TF1TF0IE1IT1IE0IT0
IT0

外部中断0的触发方式选择位,可由软件置”1“或清”0“

0:电平触发方式,低电平有效。CPU响应中断后不能硬件或软件使IE0清零,因此中断返回前必须撤销引脚上的低电平,否则将再次引起中断,导致出错

1:边沿触发方式,负跳变有效。CPU响应中断后硬件自动使IE0清零。要求外部输入的高电平或低电平的持续时间必须大于12个时钟周期,才能保证检测到先高后低的负跳变

IE0

外部中断请求0的中断请求标志位

0:无中断请求

1:有中断请求,当CPU响应该中断时,则程序转向中断服务程序

IT1

外部中断1的请求方式选择位,定义与IT0类似

IE1

外部中断请求1的中断请求标志位,定义与IE0类似

TF0

T0溢出中断请求标志位,T0可对内部时钟信号或从外部输入(P3.4)的脉冲进行计数。当计数器溢出时,即表明定时时间已到或计数值已满,这时由硬件将TF0置”1“,并向CPU发出中断请求,CPU响应TF0中断时,硬件自动将TF0清”0“,TF0也可由软件清”0“

TF1

T1的溢出中断请求标志位,功能与TF0类似

SCON

位地址9FH9EH9DH9CH9BH9AH99H98H
SCON (98H)TIRI
RI

串行口接收中断请求标志位。当串行口接受完一帧数据后,RI由硬件自动置1,向CPU申请中断。转向中断服务程序后,RI必须用软件清零

TI

串行口接收中断请求标志位。当串行口接受完一帧数据后,RI由硬件自动置1,向CPU申请中断。转向中断服务程序后,RI必须用软件清零

IE
位地址AFHAEHADHACHABHAAHA9HA8H
IE (A8H)EAESET1EX1ET0EX0
EA

中断允许总控制位。当EA=0时,CPU禁止所有的中断请求;当EA=1时,CPU开放中断。此时每个中断源的中断是否允许,还取决于各中断源的中断允许控制位的状态

EX0

外部中断0中断允许位。若EX0=1,则允许外部中断0中断;否则,禁止其中断

ET0

定时器/计数器T0的溢出中断允许位。若ET0=1,则允许定时器/计数器T0溢出时提出的中断请求;否则,禁止其中断

EX1

外部中断1中断允许位

ET1

定时器/计数器T1的溢出中断允许位

ES

串行口中断允许位

IP
位地址BFHBEHBDHBCHBBHBAHB9HB8H
IP (B8H)PSPT1PX1PT0PX0
PX0

外部中断0的中断优先级控制位。若PX0=1,则外部中断0为高中断优先级;否则,为低中断优先级

PT0

定时器/计数器T0中断优先级控制位

PX1

外部中断1的中断优先级控制位

PT1

定时器/计数器T1中断优先级控制位

PS

串行口中断优先级控制位

  • 51系列单片机复位后IP被清零,所有中断源均设定为低优先级
  • 当同一优先级的中断源同时向CPU请求中断时,CPU按照自然优先级依次响应

  • 基本原则:低优先级不看了一打断高优先级;高优先级可以打断低优先级,实现中断嵌套;同级中断由自然优先级决定最终嵌套顺序

5.3 中断处理过程

1. 中断响应

  • 中断响应的条件:中断源有请求 + CPU总中断允许开放(EA=1) + 中断允许寄存器IE相应位为1;无高级中断服务程序在执行中 + 现行指令执行到最后1个机器周期且已结束 + 若现行指令为RETI或需访问SFR中IE或IP的指令时,执行完该指令且紧随其后的另1条指令也已执行完
  • 中断响应的过程:1)保护断点,执行一条由中断系统提供的硬件LCALL指令把被中断程序的断点压入堆栈;2)将程序转向中断服务程序的入口位置,相应的中断服务程序的入口地址装入PC

2. 中断处理

  • 保护现场:先将在中断服务程序中要使用的累加器A、PSW、工作寄存器等内容压入堆栈
  • 中断服务:完成具体任务
  • 恢复现场:将原来压入堆栈的工作寄存器、PSW、累加器A等内容弹回

3. 中断返回

  • 中断服务完成后,MCU返回断点位置,继续执行原来的程序
  • 汇编指令中,由专门的指令RETI实现

4. 中断请求撤销

  • 中断响应后,TCON和SCON中的中断请求标志位需要及时清除,否则会造成中断混乱
定时中断

定时中断响应后,硬件自动把中断标志位(TF0、TF1、TF2)清零,是自动撤除

外部中断

1)边沿触发:硬件自动清零

2)电平触发:在中断响应后把中断请求输入端从低电平强制改为高电平,需配合硬件电路和软件代码实现

串行口

TI和RI不会自动清零,需用软件方法清除

5. 中断响应时间

  • 从查询中断请求标志位到转向中断区入口地址所需的机器周期数


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部