单片机原理及应用笔记:单片机中断系统原理与项目实践

高金鹏:男,银川科技学院计算机与人工智能学院,2022级别计算机科学与技术本科生,单片机原理及应用课程第六组。

指导教师:王兴泽

电子邮件:高金鹏3535558665@qq.com

个人CSDN:暴躁的海绵宝宝  暴躁的海绵宝宝-CSDN博客

单片机作为计算机科学与技术中的最重要的学科之一,csdn是有着极大的流量和专业人才的网站,故借此平台提高我的博客写作能力,并且提高对单片机原理和应用的了解更好的掌握这门学科。
本篇文章是参考《单片机原理及应用(c语言版)第2版》杨居易·编著编写的笔记

由海鹏、赵若晨、徐丽钧、开海洋共同完成此篇文章,其中海鹏负责定时控制寄存器,徐丽钧负责串行口控制寄存器的内容,赵若晨负责中断优先级寄存器Ip,开海洋负责C51外部中断扩展,高金鹏负责总结核对校验文档编写最后确认

模块五:单片机中断系统原理

项目21:中断控制器与项目实践

TCON寄存器的结构

TCON寄存器的主要作用是控制定时器/计数器的启动、停止,以及管理外部中断,并标志定时器的溢出和中断情况。通过TCON寄存器,可以实现对定时器/计数器的精确控制,以及对外部事件的及时响应。

TCON寄存器通常是一个8位寄存器,每个位都有特定的功能。以下是一些常见的TCON寄存器位字段及其功能:

  1. TF1(TCON.7):定时器1溢出标志位。当定时器1计数溢出时,TF1位被硬件自动置1,软件需要手动清除该标志位。
  2. TR1(TCON.6):定时器1运行控制位。用于控制定时器1的启动和停止。当TR1=1时,定时器1运行;当TR1=0时,定时器1停止。
  3. TF0(TCON.5):定时器0溢出标志位。当定时器0计数溢出时,TF0位被硬件自动置1,软件需要手动清除该标志位。
  4. TR0(TCON.4):定时器0运行控制位。用于控制定时器0的启动和停止。当TR0=1时,定时器0运行;当TR0=0时,定时器0停止。
  5. IE1(TCON.3):外部中断1边沿检测标志位。当外部中断1(INT1)检测到边沿变化时,IE1位被置1,软件需要手动清除该标志位。
  6. IT1(TCON.2):外部中断1类型控制位。用于控制外部中断1的触发方式。当IT1=1时,INT1为边沿触发;当IT1=0时,INT1为电平触发。
  7. IE0(TCON.1):外部中断0边沿检测标志位。当外部中断0(INT0)检测到边沿变化时,IE0位被置1,软件需要手动清除该标志位。
  8. IT0(TCON.0):外部中断0类型控制位。用于控制外部中断0的触发方式。当IT0=1时,INT0为边沿触发;当IT0=0时,INT0为电平触发。

串行口控寄存器SCON

  1. 串行数据发送:通过设置SCON寄存器中的相关位(如SM0、SM1、TB8等),并写入数据到发送缓冲器(如SBUF),可以启动串行数据的发送过程。发送完成后,TI位被置位,可以触发中断或查询该位来处理发送完成事件。
  2. 串行数据接收:通过设置SCON寄存器中的REN位为1,允许串行口接收数据。当接收到数据时,RI位被置位,可以触发中断或查询该位来处理接收完成事件。在接收过程中,还可以根据SM2和RB8的状态来决定是否接收数据并置位RI位。
  3. 多机通信:在方式2和方式3中,SCON寄存器支持多机通信。通过设置SM2位和TB8位,可以实现地址帧和数据帧的区分和接收。

中断允许寄存器IE

  1. 整体赋值:可以通过对IE寄存器进行整体赋值来同时设置多个中断允许位。例如,IE=0x81;表示开启全局中断(EA=1)并允许外部中断0(EX0=1)。
  2. 单独赋值:也可以单独对IE寄存器中的某个位进行赋值,以允许或禁止特定的中断源。例如,EA=1;表示开启全局中断,EX0=1;表示允许外部中断0。
位序号D7D6D5D4D3D2D1D0
说明EA(全局中断位)-(无效位)ET2(定时/计数2中断允许位,8052用)ES(串行口中断允许位)ET1(定时/计数1中断允许位)EX1(外部中断1允许位)ET0(定时/计数0中断允许位)EX0(外部中断0允许位)
位符号EA-ET2ESET1EX1ET0EX0
位地址AFH-AEHACHABHAAHA9HA8H

中断优先级寄存器IP

  1. 设置优先级:通过对IP寄存器中的相应位进行赋值,可以设置各个中断源的优先级。例如,在8051单片机中,可以通过将PX0设置为1来将外部中断0的优先级设置为高优先级。
  2. 组合使用:IP寄存器通常与IE寄存器组合使用。IE寄存器用于允许或禁止中断源,而IP寄存器用于设置中断源的优先级。当某个中断源被允许(IE寄存器中对应位为1)且其优先级较高时,CPU将优先处理该中断源的中断请求。
  3. 注意事项:在修改IP寄存器时,需要谨慎操作以避免意外地改变中断源的优先级顺序或导致系统不稳定。同时,不同的单片机型号可能有不同的IP寄存器结构和功能,因此在使用时需要查阅具体单片机的手册或文档。

位序号D7D6D5D4D3D2D1D0
说明-(无效位或保留位)PT2(定时/计数2中断优先级位,8052用)PS(串口中断优先级位)PT1(定时/计数1中断优先级位)PX1(外部中断1优先级位)-(无效位或保留位)PT0(定时/计数0中断优先级位)PX0(外部中断0优先级位)
位符号-PT2PSPT1PX1-PT0PX0
位地址(根据具体单片机型号而定)

中断源的自然优先级,中断入口地址及中断编号

中断源自然优先级中断入口地址C51编译器对中断的编号
串口通信中断RI或TI


 



0023H0
定时器1溢出中断001BH1
外部中断0013H(注:可能表示某个特定的外部中断,但具体编号需根据上下文确定)2
定时器0溢出中断000BH3
外部中断00003H4

中断处理过程

  1. 中断响应:当CPU检测到有效的中断请求信号,并且系统处于允许中断的状态时,CPU会暂停当前指令的执行,并准备进入中断处理过程。
  2. 保存现场:在中断响应后,CPU会自动将当前程序的执行状态(包括程序计数器PC、状态寄存器和其他重要寄存器的值)保存到堆栈或特定的内存区域中。这一过程称为保存现场,以确保中断处理完成后能够准确地恢复到被中断的程序中继续执行。
  3. 中断向量号与中断处理程序:CPU会根据中断请求信号确定中断向量号,这是一个唯一的标识符,用于标识不同的中断事件和对应的中断处理程序。然后,CPU会跳转到与该中断向量号相对应的中断处理程序入口点开始执行。
  4. 执行中断处理程序:中断处理程序是预先定义好的一段程序,用于处理特定的中断事件。它会根据中断事件的具体类型执行相应的操作,如读取外部设备的数据、更新内部定时器的值等。中断处理程序可能包含多个子程序或中断服务例程,这些子程序专门用于执行特定的中断处理任务。
  5. 恢复现场:当中断处理程序执行完成后,CPU会从堆栈或特定的内存区域中弹出之前保存的程序执行状态和寄存器值,以恢复被中断的程序的执行环境。这一过程称为恢复现场。
  6. 中断返回:恢复现场后,CPU会返回到被中断的程序中继续执行。此时,程序会从中断点开始继续执行,直到遇到下一个中断事件或程序结束为止。

外部中断扩展

  1. 使用硬件扩展电路

    • 通过硬件电路(如二极管、逻辑门电路等)将多个外部中断源连接到单片机或微控制器的有限外部中断引脚上。
    • 例如,可以使用二极管将多个外部中断源并联到同一个外部中断引脚上,并通过软件查询来确定是哪个外部中断源触发了中断。
  2. 使用定时器/计数器作为外部中断

    • 单片机的定时器/计数器本质上是一个加一计数器,当计数输入端有一个“1-0”的负跳变时,计数器加一。
    • 可以将外部中断源输入到定时器/计数器的输入端,当外部中断源触发时,定时器/计数器会产生一个溢出中断,从而实现对外部中断的扩展。
  3. 使用专用中断扩展芯片

    • 专用中断扩展芯片(如8259A)具有多个中断请求输入端,可以接收多个外部中断源的请求。
    • 通过编程设置,可以将这些中断请求映射到单片机或微控制器的中断向量表上,从而实现对外部中断的扩展。

中断系统的初始化

中断初始化:

使用中断前,必须打开中断。

EA=1;	//打开总中断,必备。
ET0=1;	//根据中断源打开相应的中断允许位,必备。

TR0=1;	//如果使用定时器,则记得打开定时器
EX0=1;	//如果检测外部中断,则记得选择中断触发方式
中断初始化:

使用中断前,必须打开中断。

EA=1;	//打开总中断,必备。
ET0=1;	//根据中断源打开相应的中断允许位,必备。

TR0=1;	//如果使用定时器,则记得打开定时器
EX0=1;	//如果检测外部中断,则记得选择中断触发方式
总结

中断控制器在项目实践中发挥着至关重要的作用,它确保了系统对外部事件的快速响应和高效处理。通过合理配置和管理中断控制器,可以实现对系统资源的合理分配和高效利用,提高系统的整体性能和稳定性。同时,在项目实践中也需要关注中断信号冲突、中断处理程序编写与调试以及硬件兼容性与软件适配等挑战,并采取相应的解决方案来应对这些挑战。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【win10+RAGFlow+Ollama】搭建本地大模型助手(教程+源码)

一、RAGFlow简介 RAGFlow是一个基于对文档深入理解的开源RAG(Retrieval-augmented Generation,检索增强生成)引擎。 主要作用: 让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大…

在 Ubuntu 上部署 Terraform 管理平台:实现云基础设施的集中管理

简介 Terraform 是一款开源基础架构自动化工具,可让您通过命令行界面部署和管理数百台服务器。使用 Terraform,你可以通过在一个人类可读的文件中定义配置来构建、更改和管理你的基础架构。它支持许多云提供商,如 AWS、Azure、GCP 和阿里巴巴…

概率论得学习和整理25:EXCEL 关于直方图/ 频度图 /hist图的细节,2种做hist图的方法

目录 1 hist图的特点 2 hist的设置技巧:直接生成的hist图往往很奇怪不好用:因为横轴的分组不对 3 如何修改分组 4 设置开放边界,把长尾合并,得到hist图1 5 用原始表得到频数表 6 用上面的频数图做柱状图,再修改&…

RabbitMQ的核心组件有哪些?

大家好,我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些?】面试题。希望对大家有帮助; RabbitMQ的核心组件有哪些? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理(Messag…

桥接模式的理解和实践

桥接模式(Bridge Pattern),又称桥梁模式,是一种结构型设计模式。它的核心思想是将抽象部分与实现部分分离,使它们可以独立地进行变化,从而提高系统的灵活性和可扩展性。本文将详细介绍桥接模式的概念、原理…

【原创教程】西门子1500TCP_UDP通信说明大全(下篇)

2.3.3 TRCV故障说明 通讯无法正常连接时,ERROR引脚和STATUS引脚得状态有助于我们判断错误得原因,根据下表得提示,快速排除问题。 2.3.4 TRCV使用 点击TRCV指令得右上角蓝色图标,打开开始组态画面,按照控制要求填写 EN_R:用于激活接收的控制参数,及何时使用TRCV的接收功…

Grafana配置告警规则推送企微机器人服务器资源告警

前提 已经部署Grafana,并且dashboard接入数据 大屏编号地址:Node Exporter Full | Grafana Labs 创建企微机器人 备注:群里若有第三方外部人员不能创建 机器人创建完成,记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…

RabbitMQ如何构建集群?

大家好,我是锋哥。今天分享关于【RabbitMQ如何构建集群?】面试题。希望对大家有帮助; RabbitMQ如何构建集群? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在RabbitMQ中,集群(Cluster&#x…

JDK以及JRE

目录 1.常用的快捷键操作2.重要的dos命令3.Jre(java Runtime environment)4.Jdk(java development kit)5.安装JDK6.JDK的目录7.Jdk的环境变量配置8.写第一个java程序8.1 安装UE软件8.2 写第一个HelloWorld 9.java运行机制 1.常用的…

Groovy 语法快速入门

文章目录 1. Groovy 的特点2. 基本语法2.1. 变量2.2. 字符串2.3. 条件语句 3. 集合操作3.1. 列表(List)3.2. 映射(Map) 4. 循环语句4.1. 普通循环4.2. 闭包遍历 5. 方法定义6. 闭包(Closure)6.1. 定义与调用…

MySQL 事务管理

个人主页:C忠实粉丝 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C忠实粉丝 原创 MySQL 事务管理 收录于专栏[MySQL] 本专栏旨在分享学习MySQL的一点学习笔记,欢迎大家在评论区交流讨论💌 目录 CURD 不加控制&#xff0…

【大模型微调学习5】-大模型微调技术LoRA

【大模型微调学习5】-大模型微调技术LoRA LoRa微调1.现有 PEFT 方法的局限与挑战2.LoRA: 小模型有大智慧 (2021)3.AdaLoRA: 自适应权重矩阵的高效微调 (2023)4.QLoRA: 高效微调量化大模型 (2023) LoRa微调 1.现有 PEFT 方法的局限与挑战 Adapter方法,通过增加模型深…

Windows server服务器之网络安全管理(防火墙入站规则创建)

任务14.1 Windows server 防火墙的管理 系统防火墙概述:无论哪一种操作系统都有自己的防火墙,无论是客户端OS还是服务器端的NOS都有防火墙。 winr-control----打开控制面板 上图是Windows客户端的防火墙,三个重点要关注的内容;网…

【Python】PyWebIO 初体验:用 Python 写网页

目录 前言1 使用方法1.1 安装 Pywebio1.2 输出内容1.3 输入内容 2 示例程序2.1 BMI 计算器2.2 Markdown 编辑器2.3 聊天室2.4 五子棋 前言 前两天正在逛 Github,偶然看到一个很有意思的项目:PyWebIo。 这是一个 Python 第三方库,可以只用 P…

四、CSS3

一、CSS3简介 1、CSS3概述 CSS3 是 CSS2 的升级版本,他在CSS2的基础上,新增了很多强大的新功能,从而解决一些实际面临的问题。 CSS在未来会按照模块化的方式去发展:https://www.w3.org/Style/CSS/current-work.html …

Loki 微服务模式组件介绍

目录 一、简介 二、架构图 三、组件介绍 Distributor(分发器) Ingester(存储器) Querier(查询器) Query Frontend(查询前端) Index Gateway(索引网关&#xff09…

上海亚商投顾:创业板指缩量下跌 多只高位股午后跌停

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天震荡调整,创业板指领跌,高位股开始出现退潮,建设工业、星光股份、…

libnanomsg详解

libnanomsg,或简称为nanomsg,是一个高性能的消息传递库,它为开发者提供了简单且高效的“可扩展协议”实现。以下是对libnanomsg的详细解析: 一、基本概述 项目地址:GitCode - 全球开发者的开源社区,开源代码托管平台 …

MySQL基础大全(看这一篇足够!!!)

文章目录 前言一、初识MySQL1.1 数据库基础1.2 数据库技术构成1.2.1 数据库系统1.2.2 SQL语言1.2.3 数据库访问接口 1.3 什么是MySQL 二、数据库的基本操作2.1 数据库创建和删除2.2 数据库存储引擎2.2.1 MySQL存储引擎简介2.2.2 InnoDB存储引擎2.2.3 MyISAM存储引擎2.2.4 存储引…

geoserver 瓦片地图,tomcat和nginx实现负载均衡

在地理信息系统(GIS)领域,GeoServer作为一个强大的开源服务器,能够发布各种地图服务,包括瓦片地图服务。为了提高服务的可用性和扩展性,结合Tomcat和Nginx实现负载均衡成为了一个有效的解决方案。本文将详细…