单片机的中断系统

作者简介

彭煜轩,男,银川科技学院计算机与人工智能学院,2022级计算机与科学技术8班本科生,单片机原理及应用课程第3组。

指导老师:王兴泽

电子邮件:1696409709@qq.com

前言

本篇文章是参考《单片机原理及应用(c语言版)第2版》杨居义·编著教材编写的笔记

由彭煜轩、马梅,李军,余文兵,杜国祥同学共同完成此篇文章,其中马梅同学负责新建项目内容,李军,余文兵负责新建源程序文件内容,杜国祥负责编译程序内容,彭煜轩负责

Proteus软件仿真内容

认识单片机的中断系统

中断的概念

CPU在执行程序的过程中,由于外界的原因,无法尽快终止CPU当前的程序执行,而去执行相应的处理程序,待处理结束后,在回来继续执行开始被终止的程序,这种陈旭在执行过程中由于外界的原因被中间打断的情况被称为“中断“。

中断的作用

可以实现CPU与外部设备的并行工作,提高CPU利用效率

可以实现CPU对外部事件的实时处理,进行实时控制

实现多项任务的实时切换

单片机的中断系统的基本组成

中断源:中断源是出发中断亲求的硬件或者软件事件,常见的中断源:外部中断:来自外部设备的信号(例如按键输入,外部传感器,外部硬件事件等),内部中断:来自单片机内部的事件,如定时器溢出,看门狗定时器溢出,串口接收数据等。

中断请求(IRQ):当中断源触发时,它会向单片机发出中断请求信号,要求暂停当前程序的执行并转去处理中断。

中断向量:每种终端源都有一种对应的中断向量号,指向该中断源的服务程序入口地址,中断向量通常保存自强中断向量表中。中断向量是一个指针表,每一个中断源有一个唯一的入口地址,处理器通过查找向量表来找到对应的服务程序。

中断控制寄存器:中断控制寄存器用于控制中断的启用、禁止、优先级等。它可以使得程序选择性地启用或禁用某些中断,设置中断的优先级,并且在发生中断时,确定是否触发中断响应。
中断服务程序(ISR, Interrupt Service Routine):每个中断源都对应一个中断服务程序。中断服务程序用于处理该中断源引发的事件,如读取外部数据、清除中断标志等。中断服务程序是由程序员预先编写的特定代码,通常会执行一系列操作来处理中断事件。

80C51 中断系统具有五个中断源,它们是:
外部中断 0(INT0):该中断源是通过外部引脚 P3.2 触发的,可以由外部信号(如按键、传感器等)触发。外部中断 0 可以响应低电平触发或下降沿触发,具体取决于相应控制寄存器(如 TCON)的配置。
外部中断 1(INT1):该中断源是通过外部引脚 P3.3 触发的,类似于外部中断 0。外部中断 1 也可以响应低电平触发或下降沿触发,具体同样由控制寄存器(如 TCON)决定。
定时器 0 中断(Timer0):该中断源是由定时器 0(T0)溢出引发的。定时器 0 工作在定时器或计数器模式下,当定时器溢出时,会触发该中断。它常用于周期性任务的执行。
定时器 1 中断(Timer1):该中断源是由定时器 1(T1)溢出引发的。定时器 1 也有类似定时器 0 的功能,通常用于更复杂的时间控制或计数任务。
串行通信中断(Serial Interrupt):该中断源是由串行通信的接收或发送事件触发的。当串行接收到数据或完成发送时,会触发串行中断。这个中断通常用于串行数据通信的处理。

80C51 中断系统具有两个优先级,它们是:高优先级和低优先级。

这两个优先级通过中断优先级控制寄存器 IP 和 IE(中断使能寄存器)进行设置和管理。

高优先级(High Priority)
高优先级的中断源会在低优先级的中断源未响应时被立即响应。即使低优先级中断正在处理中,高优先级中断会抢占并立即处理中断请求。高优先级的中断包括外部中断 0、定时器 0 中断、外部中断 1 和定时器 1 中断。

低优先级(Low Priority)
低优先级的中断会在高优先级中断未处理完之前被挂起,直到高优先级中断处理完毕才会响应低优先级中断。串行通信中断(Serial Interrupt)通常是一个低优先级的中断。

80C51 中断系统具有四个寄存器,它们是:

TCON(定时器控制寄存器)
TCON 寄存器控制定时器和外部中断的启动、停止及相关状态。它包含了溢出标志位、启动控制位和外部中断触发方式等。

TCON 的位说明:
TF0:定时器 0 溢出标志位
TF1:定时器 1 溢出标志位
TR0:定时器 0 启动控制位
TR1:定时器 1 启动控制位
IE0:外部中断 0 标志位
IE1:外部中断 1 标志位
IT0:外部中断 0 触发方式
IT1:外部中断 1 触发方式

SCON(串行控制寄存器)
SCON 是 80C51 单片机用于控制串行通信的寄存器。它包含了控制串行通信的相关配置位,包括波特率、数据格式、启用串行口等功能。

SCON 的位说明:
TI(发送中断标志):该位为 1 时,表示串行口发送完成,可以准备下一次发送。如果该位为 0,则表示串行口正在发送数据。
RI(接收中断标志):该位为 1 时,表示串行口接收到数据,可以读取接收到的字符。如果该位为 0,则表示串行口未接收到数据。

80C51 中断系统具有四个寄存器,它们是:

IE(中断使能寄存器)
该寄存器用于控制各个中断源的使能状态。通过设置相应的位,可以启用或禁用外部中断、定时器中断、串行中断等。

IE 的位说明:
EA:全局中断使能位(1 为启用所有中断,0 为禁用所有中断)
ES:串行通信中断使能
ET1:定时器 1 中断使能
EX1:外部中断 1 使能
ET0:定时器 0 中断使能
EX0:外部中断 0 使能

IP(中断优先级寄存器)
该寄存器用于设置中断源的优先级。80C51 单片机具有两级中断优先级,可以通过此寄存器设定哪些中断为高优先级,哪些为低优先级。

IP 的位说明:
IP0:外部中断 0 优先级
IP1:定时器 0 中断优先级
IP2:外部中断 1 优先级
IP3:定时器 1 中断优先级
IP4:串行通信中断优先级

实践案例

使用定时器T1中断方式控制P3口的8位LED灯闪烁

任务描述:使用定时器/计数器T1工作于方式1,采用中断方式控制P3口LED的闪烁,闪烁周期为100ms即亮50sm,熄灭50ms

电路图如下所示

代码图如下所示:

效果图如下所示:

TCON— 定时器 / 计数器控制寄存器

D7

D6

D5

D4

D3

D2

D1

D0

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

D7到D4为定时器

IT1 / IT0:外中断 1/0 触发方式控制位。当 ITi = 0 时,外部中断 1/0 为电平触发方式。当 ITi = 1 时,外部中断 1/0 为脉冲触发方式。
IE1 / IE0:外部中断 1/0 标志。I Ei = 1,外部中断 1/0 向 CPU 申请中断。

SCON— 串行口控制寄存器

D7

D6

D5

D4

D3

D2

D1

D0

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

D7到D2为通信

TI:串行发送中断标志 CPU 将数据写入发送缓冲器 SBUF 时,就启动发送,每发送完一个串行帧,硬件将使 TI 置位。
RI:串行接收中断标志 在串行口允许接收时,每接收完一个串行帧,硬件将使 RI 置位。

80C51 中断入口地址分配

MCS-51 单片机中断源的自然优先级、入口地址及中断编号

中断源

自然优先级

中断入口地址

C51 编译器对中断的编号

外部中断 0

0003H

0

定时器 T0 溢出中断

000BH

1

外部中断 1

0013H

2

定时器 T1 溢出中断

001BH

3

串行通信中断 RI 或 TI

0023H

4

C 语言编写中断服务函数的格式如下:
函数类型 函数名 (形式参数列表) [interrupt n] [using m]
其中,interrupt 后面的 n 是中断编号,取值为 0~4;using 中的 m 表示使用的工作寄存器组号(如不声明,则默认用第 0 组)。

例如,定时器 T0 的中断服务函数可以用如下方法编写:
Void Time0 (Void) interrupt 1 using 0
// 定时器 T0 的中断服务函数,T0 的中断编号为 1,使用
第 0 组工作寄存器
{
…… // 中断服务程序
}

80C51 外部中断扩展
单片机仅有两个外部中断输入端。
可用两种方法扩展:

定时器 T0、T1。(工作在计数方式下)

中断和查询结合。

用定时器作外部中断源

例:将定时器 T0 扩展为外部中断源。

解:将定时器 T0 设定为方式 2(自动恢复计数初值),
TH0 和 TF0 的初值均设置为 FFH,允许 T0 中断,CPU 开放中断,
源程序如下:
TMOD=0x06;
TH0=0xff;
TL0=0xff;
TR0=1;
ET0=1;
EA=1;
...
T0 引脚每输入一个负跳变,TF0 都会置 1,向 CPU 请求中断,T0 引脚相当于边沿触发的外部中断源输入线。

中断和查询相结合

图:一个外中断扩展城多个外中断的原理图

Void int_1 () interrupt 2 // 外部中断 1 中断类型号为 2
{
unsigned char i;
P1 = 0xff; // 读 P1 口引脚前先全部置 1
i = P1; // 在 P1 口引脚状态读入变量 i
i &= 0x0f; // 采用与操作屏蔽掉 i 的高 4 位
Switch (i)
}

{
case 0x01: exint0(); break; /调用函数 exint0 (),EXINTT0 中断服务,此处省略/
case 0x02: exint1(); break; /调用函数 exint1 (),EXINTT1 中断服务,此处省略/
case 0x04: exint2(); break; /调用函数 exint2 (),EXINTT2 中断服务,此处省略/
case 0x08: exint3(); break; /调用函数 exint3 (),EXINTT3 中断服务,此处省略/
Default: break;
}

中断系统的应用

中断系统的初始化实质上是针对 4 个与中断有关的特殊功能寄存器 TCON、SCON、IE 和 IP 进行控制和管理,具体步骤如下所示。

(1) 开 CPU 中断总开关(EA)。

(2) 设置中断允许寄存器 IE 中相应的位,确定各个中断源是否允许中断。

(3) 对多级中断设置中断优先级寄存器 IP 中相应的位,确定各中断源的优先级别。

(4) 设置定时器控制寄存器 TCON 中相应的位,确定外部中断是边沿触发还是电平触发的触发方式。

实践案例

用外中断控制 P2 口 8 个 LED 亮灭

任务描述: P3.3 引脚(/INT1)上接按键 S,使用外中断控制 P2 口 8 个 LED 亮灭。当第一次按下按键 S 时,P2 口 8 位 LED 就亮,再次按下 S 按键,P2 口 8 个 LED 就灭,如此循环,就可看见 LED 灯亮灭两种状态,

电路图如图所示。

代码如图所示

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

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

相关文章

C 语言 “神秘魔杖”—— 指针初相识,解锁编程魔法大门(一)

文章目录 一、概念1、取地址操作符(&)2、解引用操作符(*)3、指针变量1、 声明和初始化2、 用途 二、内存和地址三、指针变量类型的意义1、 指针变量类型的基本含义2、 举例说明不同类型指针变量的意义 四、const修饰指针1、co…

Scratch游戏推荐 | 我的世界:平台冒险——像素世界的全新挑战! ⛏️

🎮 Scratch游戏推荐 | 我的世界:平台冒险——像素世界的全新挑战! ⛏️🌍 今天给大家推荐一款精彩绝伦的Scratch平台冒险游戏——《我的世界:平台冒险 – 第二章》!由atomicmagicnumber制作,这…

Python 入门教程(2)搭建环境 | 2.4、VSCode配置Node.js运行环境

文章目录 一、VSCode配置Node.js运行环境1、软件安装2、安装Node.js插件3、配置VSCode4、创建并运行Node.js文件5、调试Node.js代码 一、VSCode配置Node.js运行环境 1、软件安装 安装下面的软件: 安装Node.js:Node.js官网 下载Node.js安装包。建议选择L…

【0x0019】HCI_Remote_Name_Request详解

目录 一、概述 二、命令格式参数说明 2.1. BD_ADDR 2.2. Page_Scan_Repetition_Mode 2.3. Reserved 2.4. Clock_Offset 三、响应事件及参数说明 3.1. HCI_Command_Status事件 3.2. (可选)HCI_Remote_Host_Supported_Features_Notification事件…

网络安全技术详解:虚拟专用网络(VPN) 安全信息与事件管理(SIEM)

虚拟专用网络(VPN)详细介绍 虚拟专用网络(VPN)通过在公共网络上创建加密连接来保护数据传输的安全性和隐私性。 工作原理 VPN的工作原理涉及建立安全隧道和数据加密: 隧道协议:使用协议如PPTP、L2TP/IP…

HTML5技术贴:现代网页开发的革命

引言 HTML5作为最新的HTML标准,为网页开发带来了革命性的变化。它不仅提高了网页的性能和可访问性,还提供了更多能有效增强网络应用的API。本文将深入探讨HTML5的八大新特性,帮助读者更好地理解和应用这些新特性。 HTML5的八大新特性 1. 语…

紫光展锐联合上汽海外发布量产车型,赋能汽车智能化

当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。 11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发…

Kafka如何保证消息可靠?

大家好,我是锋哥。今天分享关于【Kafka如何保证消息可靠?】面试题。希望对大家有帮助; Kafka如何保证消息可靠? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Kafka通过多种机制来确保消息的可靠性,主要包…

comfyui更新后,新版Crystools菜单栏的CPU、GPU信息不显示的解决办法

设置->菜单->使用新版菜单先禁用,然后保存旧版菜单位置,然后再把新版菜单打开,改为上,再取消保存旧版菜单位置,就出来了 1. **插件名称与功能**: - 插件名称:ComfyUI-Crystools - 功能描述…

椭圆参数方程

如上图所示,分别作椭圆的外摆线和内摆线容易得到两个圆方程分别为 x y a,x y b,下面求出 x 和 y 的表达式。设∠AOD θ,而∠POD 称为旋转角,而这里的 θ 称为离心角,而 OA a,OB b&#x…

tcpdump抓包wireshark分析

背景 分析特定协议的数据包,如 HTTP、DNS、TCP、UDP 等,诊断网络问题,例如连接故障、延迟和数据包丢失。 大概过程 1.安装tcpdump yum update yum install tcpdump2.抓包,从当前时间起,一小时后停止&#xff0c…

【MyBatis源码】详解datasource包,DataSourceFactory,数据库连接池

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 java.sql包和javax.sql包java.sql 包核心接口javax.sql 包核心接口 数据源工厂接口DataSourceFactory自定义HikariCPDataSourceFactor…

基于组件软件可信度量

基于组件软件可信度量 课程:软件质量分析 作业 可编写下面的java程序: package org.example;import java.util.Arrays;public class ComponentBasedMeasurementModel {public static void main(String[] args) {double[][] keyComponentJudgmentMatrix …

Windows.old 文件夹是什么?它可以手动删除吗?

当我们在 Windows 系统中进行重大更新,如从 Windows 7 升级到 Windows 10,或者在 Windows 10 中执行某些系统重置操作后,会在系统盘(通常是 C 盘)中发现一个名为 “Windows.old” 的文件夹。那么,这个文件夹…

Android13 允许桌面自动旋转

一)需求-场景 Android13 实现允许桌面自动旋转 Android13 版本开始后,支持屏幕自动旋转,优化体验和兼容性,适配不同屏幕 主界面可自动旋转 二)参考资料 android framework13-launcher3【06手机旋转问题】 Launcher默…

Goland2024.3 发布,有点东西

好多人夸我嘴甜,你要不要尝尝~ 上周,Goland2024 年最后的一个大版本正式发布了。 虽然这次的更新并不是很丰富,但是仍然有几个值得我们关注的几个亮点。 第一个,支持循环导入的检查 循环导入的出现往往是不经意的,但是…

数据结构之算法复杂度(超详解)

文章目录 1. 算法复杂度1.1 数据结构1.2 算法1.3 二者的重要性 2. 算法效率开胃小菜:复杂度概念 3. 时间复杂度3.1 大O表示法3.2 时间复杂度示例练习例1例2例3例4例5例6例7 4. 空间复杂度4.1 空间复杂度示例练习例1例2 5. 开胃小菜扩展5.1 思路2:采用空间…

【C++笔记】map和set的使用

【C笔记】map和set的深度剖析 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】map和set的深度剖析前言一.set1.1 序列式容器和关联式容器1.2 set系列的使用1.3 set类的介绍1.4 set的构造和迭代器1.5 set的增删查1.6…

最新AI自动无人智享直播系统 —— 视频自动播软件热门之选

在当今数字化浪潮汹涌澎湃的时代,直播行业正经历着前所未有的变革与创新。而最新的 AI 自动无人智享直播系统,无疑成为了视频自动播软件中的热门之选,正引领着直播领域迈向新的高度。 这款 AI 自动无人智享直播系统,其核心优势在于…

气膜球幕:科技与艺术的完美融合,沉浸式体验引领未来—轻空间

在现代化展览和活动中,如何突破传统展示方式,吸引观众的目光,带来前所未有的沉浸式体验?气膜球幕作为一种创新的科技展示平台,凭借其独特的球形结构和多功能应用,正在成为各大展览、活动和娱乐项目的首选。…