• 基于C51的中断系统控制


    🐋 前言:中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的。单片机中断(Interrupt)是硬件驱动事件,它使得CPU暂停执行当前的主程序,转而去执行一个中断服务子程序。如果单片机没有中断系统,单片机的大量时间可能会浪费在是否有服务请求发生的定时查询操作上。采用中断技术完全消除了单片机在查询方式 中的等待现象,大大地提高了单片机的工作效率和实时性。


    🐬 目录:


    一、中断请求

    中断系统是单片机中一个重要功能。我们要能够熟练地掌握应用中断,首先需要对相关概念有深入且准确的理解,即必须对以下问题有深刻的认识。

    🐪 1.1 什么是中断?
    ❄️ 当中央处理器CPU正在执行主程序的时候外界发生了紧急事件请求,要求CPU暂停当前的工作,转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方继续原来的工作,这样的过程称为中断

    ❄️ 对于单片机来讲,中断是指 CPU 在处理某一事件 A 时,发生了另一事件 B, 请求 CPU 迅速去处理(中断发生);CPU 暂时停止当前的工作(中断响应), 转去 处理事件 B(中断服务);待 CPU 将事件 B 处理完毕后,再回到原来事件 A 被 中断的地方继续处理事件 A(中断返回),这一过程称为中断。

    ❄️ 为了能让大家更容易理解中断概念, 我们先来举一个生活事例: 你打开火, 烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警 声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完 开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。
    在这里插入图片描述

    🐪 1.2 什么是中断系统?
    单片机在执行程序时其程序流程图如下:
    在这里插入图片描述
    如上图,当外部发生中断事件(中断源)请求CPU处理,CPU暂停运行当前运行程序A,转而去运行该处理该事件的中断服务程序B,对该事件处理完毕后,再回到原来被中断的地方(断点)继续运行原来的程序A。实现上述中断功能的部件称为中断系统。

    🐝 1.2.1 有哪些中断源会引起单片机的中断请求?
    STC89C5X系列单片机提供了至少5 个中断请求源,它们分别是:外部中断 0( INT0 ‾ \overline{\text{INT0}} INT0)、外部中断 1( INT1 ‾ \overline{\text{INT1}} INT1)、定时/计数器0(T0) 、定时/计数器 1(T1) 、定时器 2 中断、串口(UART)中断。

    🐝 1.2.2 上述中断源怎样触发中断请求?【重要】

    在这里插入图片描述
    回顾GPIO口P3引脚,P3的每一个引脚除了作为基本输入输出引脚,还会有第二功能。可以看到P3.2和P3.3可作为中断的事件源,它们的某些状态会导致中断请求的发生。

    中断源符号名称中断引起原因中断号中断向量地址
    INT0 ‾ \overline{\text{INT0}} INT0外部中断0P3.2引脚低电平或下降沿信号00003H
    INT1 ‾ \overline{\text{INT1}} INT1外部中断1P3.3引脚低电平或下降沿信号20013H
    T0定时器0中断定时/计数器0计数回0溢出1000B
    T1定时器1中断定时/计数器1计数回0溢出3001B
    T1/R1串行口中断串行通信完成一帧数据发送或接收引起中断40023H

    开中断情况下(特殊寄存器某位为1),当P3.2所连接的物理器件状态发生变化,导致读取到P3.2引脚为低电平(例如按键)或下降沿信号,则向CPU发送中断号为0的中断请求,若CPU响应该中断,则跳转地址0x0003(或许有不同,详细地址参看单片机参考手册)处执行其中断服务函数。其他中断请求可按照上表自行推断。

    🐝 1.2.3 用户怎样控制中断系统
    中断功能是否开启、设置启用哪个中断、中断的触发方式、当多个中断请求发生,CPU响应中断的顺序都是由单片机内部的一些特殊功能寄存器来决定的。用户通过对相应寄存器位进行设置,就能操作中断系统。
    单片机特殊寄存器数据如下(后文会有详细操作,此处只例举常用的两个寄存器):
    在这里插入图片描述

    🌙 中断允许控制寄存器IE
    CPU 对中断系统所有中断以及某个中断源的开放和屏蔽是由 中断允许寄存器 IE 控制的,IE寄存器中具体位代表功能如下:

    76543210
    字节地址:A8HEA-ET2ESET1EX1ET0EX0IE

    EX0(IE.0) ,外部中断 0 允许位。EX0=1,允许中断;EX0=0,禁止中断;
    ET0(IE.1) ,定时/计数器 T0 中断允许位;ET0=1,允许T0中断;ET0=0,禁止T0中断;
    EX1(IE.2) ,外部中断 0 允许位;EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断;
    ET1(IE.3) ,定时/计数器 T1 中断允许位;ET1=1,允许T1中断;ET1=0,禁止T1中断;
    ES(IE.4) ,串行口中断允许位;ES=1,允许串行口1中断;ES=0,禁止串行口1中断;
    ET2(IE.5),定时/计数器T2的溢出中断允许位;ET2=1,允许T2中断;ET2=0,禁止T2中断;
    EA (IE.7) , CPU 中断允许(总允许)位;EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成两级控制。即各中断源首先受EA控制,其次还受各中断源自己的中断允许控制位控制。

    🌙 中断请求控制寄存器TCON
    TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出中断源和外部请求中断源等。

    76543210
    字节地址:88HTF1TR1TF0TR0IE1IT1IE0IT00TCON

    IT0(TCON.0),外部中断 0 触发方式控制位。
    当 IT0=0 时,为电平触发方式。
    当 IT0=1 时,为边沿触发方式(下降沿有效)。
    IE0(TCON.1),外部中断 0 中断请求标志位。
    IT1(TCON.2),外部中断 1 触发方式控制位。
    IE1(TCON.3),外部中断 1 中断请求标志位。
    TF0(TCON.5),定时/计数器 T0 溢出中断请求标志位。
    TF1(TCON.7),定时/计数器 T1 溢出中断请求标志位。

    二、中断响应

    CPU响应中断的三个条件为:
    ⛅️ 中断源有中断请求
    ⛅️ 此中断的中断允许位为1
    ⛅️ CPU开中断(即EA = 1)

    当满足以上三个条件,中断系统将会运行,做出中断处理操作

    二、中断处理

    🍁 基于C51实现外部中断处理(待完成)
    🍁 基于C51实现定时/计数器中断处理(待完成)
    🍁 基于C51实现串口中断处理(待完成)


    感谢观看,如对内容有疑惑或补充,欢迎留言讨论,共同进步!!!

    在这里插入图片描述

  • 相关阅读:
    如何结合整洁架构和MVP模式提升前端开发体验(三) - 项目工程化配置、规范篇
    用一个软件纪念自己故去的母亲,这或许才是程序员最大的浪漫吧
    ggpicrust2包:简化和直观化微生物功能预测分析
    Python考前综合练习-第六章[python123题库]
    Python面试题_第 (5) 章
    数据结构:二叉树(超详解析)
    es6 面试 proxy,map与WeakMap, set 与 weakSet,symbol,class 继承
    Vmvare—windows中打不开摄像头
    在不能升级版本的情况下,解决k8s证书到期且续约只有1年的问题
    计算机毕业设计之java+ssm土家风景文化管理平台-旅游景点攻略网站
  • 原文地址:https://blog.csdn.net/lucklycoder/article/details/126237204