单片机原理及应用:中断系统结构与控制寄存器

news2024/9/20 14:59:39

大家好啊,这几天因为考试断更了一段时间,现在放假了也可以恢复正常的更新速度了。今天我们来认识一下单片机的中断系统,这里可以说是我们学习单片机以来第一个核心功能,我们会分几期内容来深入了解中断系统的作用原理和应用方式。

中断的定义

中断的结构

TCON

SCON

IE

IP

中断的定义

  1. 当CPU正在执行某个程序时,由单片机内部或外部的原因引起的紧急事件,向CPU发出请求处理的信号
  2. CPU在允许的情况下响应请求信号,暂时停止正在执行的程序,保护好断点处的现场
  3. 转向执行一个用于处理该紧急事件的程序
  4. 处理完后又返回被中止的程序断点处,继续执行原程序
以上过程就称为中断,流程如图所示

它并不是单指在输入请求信号的作用下打断原程序,而是包括保存原程序、执行中断服务、返回原程序等多个步骤,重点是在立即执行中断程序的同时不影响原先进程。

中断的结构

先前提到中断是由单片机内部或外部的原因向CPU发送请求信号而引发的,那么我们就要提出一个中断请求源的概念。中断请求源是指产生中断请求的源头,在51单片机中共有5个中断请求源,包括外部中断引脚(INT0和INT1)以及内部中断源(如定时器中断、串口中断等)。

我们从左到右依次介绍,首先是最左侧的中断源,大家看到有6个名称,可能会感到疑惑——不是五个中断源吗。实际上图中的TX和RX对应的是同一个中断,即串口通信中断,TX负责发送功能,而RX负责接收功能。除了串口中断外,都是一个引脚对应一个中断源,INT0是外部中断0,由P3.2引脚输入;紧接着是定时器/计数器T0,由P3.4引脚输入;在之后是INT1和T1,分别对应外部中断1和定时器/计数器1,引脚号可以参考STC89C52的结构图。ST,C89C52STC89C52STC89C52

细心的朋友会发现,T0,T1,TX和RX是直接接到中断标志上的,为什么INT1和INT0后面还有IT0和1的选择呢。实际上这个选择也是由TCON控制的,只是外部中断信号在输入时,需要先设置相应的触发方式。在51单片机中,整个中断系统主要由与中断相关的4个特殊功能寄存器和硬件查询电路等组成,分别为:

  • 定时/计数器控制寄存器TCON
  • 串行口控制寄存器SCON
  • 中断允许控制寄存器IE
  • 中断优先级控制寄存器IP

TCON

TCON全称是定时/计数器控制寄存器,作用是控制定时器的启动与停止,并保存T0、T1的溢出中断标志和外部中断的中断标志。

地址88H8FH8EH8DH8CH8BH8AH89H88H
名称TCONTF1TR1TF0TR0IE1IT1IE0IT0

高四位控制定时器0和1,低四位控制外部中断0和1.

TF1TF0位分别表示定时器1和定时器0的溢出标志位。当定时器溢出时,对应的溢出标志位会被置位。

TR1TR0位用于控制定时器1和定时器0的开始/停止操作。当TR1或TR0位被置位时,对应的定时器开始计数;当TR1或TR0位被清零时,对应的定时器停止计数。

IE1IE0位分别表示外部中断1和外部中断0的使能位。当IE1或IE0位被置位时,对应的外部中断允许产生中断请求。

IT1IT0位用于设置外部中断1和外部中断0的触发类型。当IT1或IT0位为0时,对应的外部中断触发类型为电平触发;当IT1或IT0位为1时,对应的外部中断触发类型为边沿触发。

下面对两种触发方式做一些补充:

当外部中断引脚被设为电平触发时,对应的TCON寄存器的IT0或IT1位需要被清零。这样,当外部中断引脚检测到高电平(或低电平,具体取决于电平触发的方式)时,中断就会被触发,处理器会跳转到外部中断的中断服务程序执行相应的操作。那么电平触发的方式应该怎么确定呢?在上方的引脚图中,我们可以看到P3.2和P3.3对应的INT引脚被加上了横线,这代表“低电平有效”,也就是说当51单片机的外部中断引脚检测到低电平时才会触发中断。

边沿触发也叫跳沿触发,是指当外部中断引脚的电平发生变化时,中断被触发。边沿触发方式可以选择上升沿触发或下降沿触发。在51单片机中,由于“低电平有效”,所以采用下降沿触发。当外部中断引脚检测到高电平下降为低电平时,中断就会被触发,处理器会跳转到外部中断的中断服务程序执行相应的操作。

两种触发方式各有利弊,需要根据使用场景来选择。电平触发的中断响应速度更快,并且对中断源的响应更灵敏。但是如果中断源的电平被保持时间过长,那么中断服务程序可能会被频繁调用,导致额外的中断处理负担,而跳沿触发方式适合于以负脉冲形式输入的外部中断请求,检测规律性的变化电平。

SCON

SCON全称为串行口控制寄存器,由于笔者所在专业对通信无过多要求,这里只是简要介绍其功
能,仅作为参考。
  • SM0/FE: 串口通信模式位/帧错误位。SM0和SM1位用于设置串口通信的工作模式,而FE位用于指示接收到的数据帧是否有错误。
  • SM1: 串口通信模式位。SM0和SM1位组合起来用于设置串口通信的工作模式。不同的SM0和SM1位组合可以实现不同的通信模式,如8位单机通信模式、9位单机通信模式、多机通信模式等。
  • SM2: 多机通信模式位。SM2位仅在SM0和SM1位为10时有效,用于指示当前处于多机通信模式。在多机通信模式下,可以通过地址识别不同的串口设备。
  • REN: 接收使能位。REN位用于控制串口接收器的启用和禁用。当REN位为1时,接收器处于启用状态,可以接收数据;当REN位为0时,接收器处于禁用状态,不接收数据。
  • TB8/RB8: 发送/接收的第8位。TB8位用于指示发送的数据帧的第8位,而RB8位用于指示接收到的数据帧的第8位。
  • TI: 发送中断标志位。TI位用于指示发送操作是否完成,当发送操作完成后,TI位将置1。可以通过检测TI位来判断是否可以发送下一个数据。
  • RI: 接收中断标志位。RI位用于指示接收操作是否完成,当接收到数据后,RI位将置1。可以通过检测RI位来读取接收到的数据。

通过设置和操作SCON寄存器的不同位,可以实现对串口通信相关功能的控制和操作,实现单片机与外部设备的串口通信。

IE

IE全称为中断允许控制寄存器,用于控制CPU对中断的开放或屏蔽、每个中断源是否允许中断。
地址A8HAFHACHABHAAHA8HA9H
名称IEEA/ESET1EX1ET0EX0

EA: 总中断使能位,用于控制总体中断的使能和禁止。当EA位为1时,允许中断;当EA位为0时,禁止中断。

ET0: 定时器0中断使能位,用于控制定时器0中断的使能和禁止。当ET0位为1时,允许定时器0中断;当ET0位为0时,禁止定时器0中断。ET1: 定时器1中断使能位,同理。

EX0: 外部中断0使能位,用于控制外部中断0的使能和禁止。当EX0位为1时,允许外部中断0;当EX0位为0时,禁止外部中断0。EX1: 外部中断1使能位,同理。

ES: 串口中断使能位,用于控制串口中断的使能和禁止。当ES位为1时,允许串口中断;当ES位为0时,禁止串口中断。

通过设置和操作IE寄存器的不同位,可以控制不同中断的允许和禁止。同时,通过设置EA位可以一次性控制所有中断的允许和禁止。

IP

IP全称为中断优先级控制寄存器,作用是设定各中断源的优先级别,IP的每一位均可以由软件来置1或清0。

 

地址B8HBCHBBHBAHB9HB8H
名称IP///PSPT1PX1PT0PX0

 

PX0: 外部中断0的优先级位。当PX0位为1时,外部中断0的优先级为高优先级;当PX0位为0时,外部中断0的优先级为低优先级。

PT0: 定时器0中断的优先级位。当PT0位为1时,定时器0中断的优先级为高优先级;当PT0位为0时,定时器0中断的优先级为低优先级。

PX1: 外部中断1的优先级位。当PX1位为1时,外部中断1的优先级为高优先级;当PX1位为0时,外部中断1的优先级为低优先级。

PT1: 定时器1中断的优先级位。当PT1位为1时,定时器1中断的优先级为高优先级;当PT1位为0时,定时器1中断的优先级为低优先级。

PS: 串口中断的优先级位。当PS位为1时,串口中断的优先级为高优先级;当PS位为0时,串口中断的优先级为低优先级。

IP寄存器中的位设置可以决定不同中断的优先级,高优先级的中断会优先被处理。当多个中断同时到达时,优先级高的中断会先被响应。需要注意,IP寄存器的设置需要与IE寄存器的设置相配合,才能正确地实现中断的优先级控制。

这里补充一点优先级的设定:单片机共有三个优先级,优先顺序分别是高优先级中断>低优先级中断>普通程序,普通程序可以有多个,中断源在无说明的情况下默认为低优先级,也就是5个,而高优先级需要在IP中设定,且只能有一个。正在执行低优先级的中断服务程序可被高优先级的中断源所中断,但不能被同级或低级别的中断源所中断; 正在执行的高优先级的中断服务程序不能被任何中断源所中断。

另外中断源还存在着自然优先级,如果几个同一优先级别的中断源,同时向CPU请求中断,CPU将通过单片机内部的硬件查询逻辑,首先响应自然优先级较高的中断源的中断请求。自然优先级由电路规定,如图所示:

今天我们一同学习了中断的基础概念和系统组成,之后会为大家介绍中断服务函数的使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1367619.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多模态推荐系统综述:二、特征交互 Fusion

二、Fusion 融合不同的多模态信息,与bridge相比,融合更关注项目之间的多模态内部关系。 它可以灵活地融合不同权重和焦点的多模态信息。 注意机制是应用最为广泛的特征融合。 2.1 粗粒度注意力。 一些模型应用注意力机制在粗粒度级别融合来自多种模式…

Rustdesk本地配置文件存在什么地方?

环境: rustdesk1.1.9 Win10 专业版 问题描述: Rustdesk本地配置文件存在什么地方? 解决方案: RustDesk 是一款功能齐全的远程桌面应用。 支持 Windows、macOS、Linux、iOS、Android、Web 等多个平台。 支持 VP8 / VP9 / AV1 …

e2studio开发三轴加速度计LIS2DW12(1)----轮询获取加速度数据

e2studio开发三轴加速度计LIS2DW12.1--轮询获取加速度数据 概述视频教学样品申请源码下载通信模式管脚定义IIC通信模式速率新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置UART配置UART属性配置设置e2studio堆栈e2studio的重定向printf设置R_SCI_UART_Open()函数原…

Android studio调试

Android Studio连接手机详细教程(包含遇到的问题集)_android studio 连接手机-CSDN博客 可以创建虚拟机或直连真机或直连模拟器。 无法打开本地终端 Android studio Failed to start [powershell.exe] 利用Android studio的adb命令删除app应用 - 简书 利用ADB工具免root停用A…

MySQL之子查询、连接查询(内外)以及分页查询

一、案例(接上一篇文章) 09)查询学过「张三」老师授课的同学的信息 -- 一共有两种方式 -- 第一种方式: SELECT s.*,c.cname,t.tname,sc.score FROMt_mysql_teacher t,t_mysql_course c,t_mysql_student s,t_mysql_score sc WHERE…

BabylonJS 6.0文档 Deep Dive 摄像机(二):摄像机碰撞

摄像机、网格碰撞和重力 你玩过第一人称射击游戏(FPS)吗?在本教程中,我们将模拟FPS的摄影机移动:摄影机位于地板上,与地面碰撞,并可能与场景中的任何对象碰撞。 如何实现? 为了实现这一功能,我们必须执…

Linux———head命令详解

目录 head 命令是一个用于在命令行中显示文件开头部分内容的常用工具。 head 命令基本语法: 常用选项 示例 显示文件的前 10 行: 显示文件的前 5 行: 显示文件的前 100 个字节: 不显示文件名的标题信息: 显示…

Elasticsearch基本操作之文档操作

本文来说下Elasticsearch基本操作之文档操作 文章目录 文档概述创建文档示例创建文档(生成随机id)创建文档(自定义唯一性标识) 查看文档示例根据主键查看文档查看所有文档 本文小结 文档概述 文档概述 在创建好索引的基础上来创建文档,并添加数据。这里的文档可以类…

Unity 利用UGUI之Slider制作进度条

在Unity中使用Slider和Text组件可以制作简单的进度条。 首先在场景中右键->UI->Slider,新建一个Slider组件: 同样方法新建一个Text组件,最终如图: 创建一个进度模拟脚本,Slider_Progressbar.cs using System.C…

QT qss文件设置样式

方式一 (单个) 方式二 (全局) 所有按钮都会采用这个样式。 方式三 (qss文件) 创建资源文件 创建qss文件(Button.qss) 引用qss文件 QApplication a(argc, argv);QString qss;QFile…

tiktok云手机有用吗?用哪个好?

很多做独立站的跨境卖家都会搭配一些社媒平台给自己引流带货,比如说目前很火的TikTok,这也是目前比较有效的一种引流方式。本文将介绍tiktok运营方法以及如何用tiktok云手机规避运营风险。 TikTok是个不错的风口,不过我们在国内想要运营好Tik…

7 种常见的前端安全攻击

文章目录 七种常见的前端攻击1.跨站脚本(XSS)2.依赖性风险3.跨站请求伪造(CSRF)4.点击劫持5.CDN篡改6. HTTPS 降级7.中间人攻击 随着 Web 应用程序对业务运营变得越来越重要,它们也成为更有吸引力的网络攻击目标。但不…

Vue3-44-Pinia- 安装步骤

介绍 本文介绍 在 vue3 中 安装 Pinia 的步骤 安装步骤 1、npm 安装 npm install pinia》 安装完成后可以看到 package.json 中添加了 pinia 的依赖信息 2、main.ts 中配置 // 引入 vue实例创建方法 import { createApp } from vue// 引入pinia import { createPinia } fro…

10086 shop

中国移动网上商城--个人中心 查看套餐收费流程

安防视频云平台/可视化监控云平台ARM版EasyCVR无法下载录像文件,如何解决?

视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。GB28181视频监控/AI智能大数据视频分析EasyCVR平台已经广泛应用在工地…

Java LeetCode篇-二叉搜索树经典解法(实现:二叉搜索树的最近公共祖先、根据前序遍历建树等)

🔥博客主页: 【小扳_-CSDN博客】 ❤感谢大家点赞👍收藏⭐评论✍ 文章目录 1.0 判断合法 1.1 使用遍历方式实现验证二叉搜索树 1.2 使用递归方式实现验证二叉搜索树 2.0 求范围和 2.1 使用非递归实现二叉搜索树的范围和 2.2 使用递归方式实现…

【模拟IC学习笔记】 采样保持电路的设计

目录 采样保持工作原理 概念 时域响应-采保信号 采样网络的KT/C噪声 采样电容大小的选取 采样抖动(jitter) jitter对SNR的影响 法一 法二 采样开关的种类 单MOS管 实践:Nmos导通电阻 传输门 栅压自举开关 采样技术 上极板采样 下极板采样 采样保持…

ArcGIS中style文件的导入及lyr的文件的使用

地图是地理信息的重要载体,科学的配色方案可以有效地传递地理信息,而美观协调的配色方案也是我们进行地图符号化设计的重要内容。在日常工作中,我们常常苦恼于自带颜色不能满足需要或是希望使用现成的颜色模板,自定义配色方案导入…

Android14之刷机模式总结(一百七十八)

人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注:Android系统攻城狮 1.前言 本篇目的:Android14之刷机模式总结: 1.bootloader模式 2.recovery模式 3.fastbootd模式 4.OTA模式2…

嵌入式Linux:环境搭建之TFTP、NFS、SSH和FTP的安装和使用

在我们做嵌入式Linux开发的时候,需要安装一些环境以方便我们的开发,本篇文章就来介绍一下TFTP、NFS、SSH和FTP的作用和环境搭建(以Ubuntu为例)。 文章目录 1 TFTP1.1 服务端1.2 客户端 2 NFS2.1 介绍2.2 安装过程2.2.1 安装nfs2.2.2 在服务端创建共享目录…