蓝桥杯07-51单片机的中断系统

2023-05-16

1.中断:
    你正在追电视剧《神雕侠侣》,正看得入迷的时候,电话响了,你暂停电视剧,去接电话,在接电话的过程中,门铃又响了,你暂时放下电话,去把门打开。如果追电视剧是在执行主程序,那么电话就是中断源,电话铃响了就是中断请求,暂停电视就是现场保护,接电话就是中断响应,门铃响了是更高一级的中断请求,去把门打开,那就是中断嵌套。开完门回来接着聊电话,那是中断返回,接完电话把电视剧暂停打开就是现场恢复
    内核与外设之间的主要交互方式有两种:轮询中断。轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件;中断系统使得内核具备了应对突发事件的能力
    中断有个特点,就是你不知道中断什么时候发生。因此,每个中断都需要有一个中断入口地址,也成为中断向量。这样,不管中断在什么时候发生,它都有一个确定的程序执行起始点。中断响应之后,执行的那段程序,我们称作中断服务函数,也就是这个函数专门是为该中断服务的。

2、关于51单片机的中断系统
    一般来说,51单片机有5个中断源(忽略定时/计数器2),分2个优先级,这个5个中断源按照自然优先级从高到低依次为:
    外部中断0INT0   
    定时/计数器0TF0
    外部中断1INT1
    定时/计数器1TF1    
    串口中断RI/TI
    下面一图将充分说明51单片机的中断系统结构:


    每个中断源都对应着一个固定的入口地址,也就是中断向量,它们依次是:
    0    0x0003:  INT0
    1    0x000B:  TF0
    2    0x0013:  INT1
    3    0x001B:  TF1
    4    0x0023:  RI/TI
    也就是说,不管主程序执行到什么地方,只要外部中断1产生请求,内核要响应该中断,就会到0x0013这个地址去执行代码。如果你是在使用汇编语言进行程序开发的时候,你需要记住每个中断源对应的地址;如果你使用的是C语言,你只需要记住中断源的顺序就可以了,也就是最左边的中断号
3、中断相关的寄存器
    中断相关的寄存器有4个,每个寄存器都是可以位寻址的,这该编程带来了方便。    其中2个为控制寄存器:IE寄存器IP寄存器;
    另外2个为中断请求标志:TCON寄存器SCON寄存器
4、关于中断服务函数程序的编写
    一般情况下,中断的处理函数有两个,其一为中断初始化函数,其二为中断服务函数。初始化函数就是一个普通的函数,而中断服务函数却有特殊的格式要求:
    <1> 中断函数没有返回值,也不能带参数。
    <2> 函数名后面要跟一个关键字interrupt,说明这是一个中断服务函数。
    <3> 在关键字interrupt后面要跟上中断号,说明这个中断服务函数是为那个中断服务的。   

    中断服务函数的格式为:
    void  函数名()  interrupt  中断号
    {  ----函数体----  }
    我们要利用定时器0来进行间隔定时,中断程序架构我们C语言可以这样写:

【注】中断服务函数里应尽量减少操作;

5.例:

 

#include "reg52.h"

sbit L0 = P0^0;
sbit L8 = P0^7;

void Delay(unsigned int t)
{
	while(t--);
	while(t--);
}

void SelectHC573()
{
	P2 = (P2 & 0x1f) | 0x80;
}


void Working()
{
	SelectHC573();
 L0= 0;
 Delay(60000);
	L0= 1;
	Delay(60000);
}



void Init_INT0()    //中断初始函数
{
	IT0 = 1;
	EX0 = 1;
	EA = 1;
}
unsigned char stat_int = 0;
void ServiceINT0() interrupt 0  //中断服务函数里少做事情
{
	stat_int = 1;
}

void LEDINT()
{
	if(stat_int==1)     //查询中断状态
	{
	L8 = 0;              //S5按键接在P3^2,P3^2又是INTO复用
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	Delay(60000);
	L8 = 1;
	}
	stat_int = 0;
}


void main()
{
Init_INT0();
	while(1)
	{
		Working();
		LEDINT();
	}
}


    

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

蓝桥杯07-51单片机的中断系统 的相关文章

  • Git最新教程4——使用码云Gitee使用教程,创建项目仓库并上传代码

    此git栏目均有学习笔记以及相应的视频 xff0c 视频链接在最后 xff0c 学习笔记完全开源 xff1a https gitee com SiobhanMing Siobhan studyNote 目录 一 注册登录码云 xff0c 完
  • CentOS6.5 安装ntopng-1.2.0

    0 准备工作 安装libpcap xff1a 最好源码安装 yum install y libpcap 安装redis yum install y redis 1 安装 tar zxvf ntopng cd ntopng autogen s
  • Java编程题之四个数字组成不同且无重复的三位数

    题目 有1 2 3 4四个数字 xff0c 能组成多少个互不相同且无重复数字的三位数 xff1f 都是多少 xff1f span class token keyword int span count span class token ope
  • 联想笔记本摄像头被禁用

    联想笔记本摄像头被禁用 针对摄像头 xff08 相机 QQ视频 微信视频 xff09 能够正常打开 xff0c 但是不显示画面 xff0c 如果是找不到摄像头这种问题 xff0c 关了吧 xff0c 找其他的别看这个浪费时间 这种情况可能是
  • Zoom to learn, learn to zoom超分辨网络

    目录 论文主要贡献背景创新点一 SR RAW数据集创新点二 CoBi损失函数结果结论 论文 Zhang X Chen Q Ng R et al Zoom to learn learn to zoom C Proceedings of the
  • 操作系统复习之OS的运行环境

    目录 1 3 1用户态与核心态 1 3 2中断与异常 1 3 3系统调用 例题 1 3 1用户态与核心态 在计算机系统中 xff0c CPU通常运行两种不同性质的程序 一种是操作系统内核程序 另一种是用户自编程序 xff0c 简称用户程序或
  • Docker搭建nextcloud+onlyoffice+ldap+smb协作编辑

    安装docker span class token comment 通过yum源安装docker span sudo yum span class token operator span y install docker span clas
  • 装破解软件后,容易出现hardlock.sys蓝屏警告

    一般遇到这种情况先别着急重装系统 xff0c 先进入安全模式把刚才装的软件卸载 xff0c 包括文件夹删干净 然后可以把别的电脑的hardlock sys文件直接拷贝过来替换掉 xff0c 重启一般就可以
  • windows下C++连接本地MySQL数据库

    IDE选用CLion 这是我数据库里的数据 db1数据库里的user表 首先将本地MySQL的lb文件夹里的libmysql dll和libmysql lib这两个文件复制到cmake build debug文件夹下 xff0c 这两个文件
  • Openstack 知识点概述及基本常用命令

    Openstack OpenStack既是一个社区 xff0c 也是一个项目和一个开源软件 xff0c 提供开放源码软件 xff0c 建立公共和私有云 xff0c 它提供了一个部署云的操作平台或工具集 xff0c 其宗旨在于 xff1a 帮
  • Visual Studio 2017 运行、调试使用CMake构建的多可执行程序项目

    在 Windows 环境下 xff0c 笔者主要通过 Visual Studio 进行较大型项目的查看和运行调试 这里记录下使用 Visual Studio 编译 运行和调试可能包含有多个可执行程序的多文件项目的方法 xff0c 特别的 x
  • C语言实现链表的逆序的几种方式

    文章目录 通过头插法实现的通过双指针实现链表的逆序通过栈来实现的通过递归来实现 通过头插法实现的 1 通过头插法 xff08 两条链表 xff09 来实现的 通过遍历原来的链表 xff0c 将遍历得到的每一个节点都插入到新链表的头结点 xf
  • Ubuntu进入(安全模式)修改用户密码

    一 重启系统 xff0c 开机时 xff0c 长按shift进入grub菜单 xff08 有的不用按直接进入如下菜单 xff09 xff1b 选择高级选项 xff1b 回车继续 xff1b 二 选中recovery mode xff08 如
  • Node 之 React ref 最新版本的用法

    在进行React开发时 xff0c 有时在组件的代码中需要访问实际的Dom对象 xff0c 这个时候就要用到ref这个属性来将 dom对象的值保存进来 xff0c 以便代码访问 一 Create Ref 自从 React v16 3开始 x
  • Pagehelper分页插件之自定义COUNT用法

    记录最近遇到的一个小麻烦 1 背景 我这次的需求是实现用户在搜索框输入关键字进行模糊查询 其实挺简单的 xff0c 就是在原来别人的XML代码上做一点修改 xff0c 也就是查询的SQL语句做点改动 xff0c 就是增加三个字段的模糊匹配
  • 网络攻防——kali操作系统基本使用

    1 阅读前的声明 本文章中生成的木马带有一定的攻击性 xff0c 使用时请遵守网络安全相关的法律法规 xff08 恶意攻击操作系统属于违法行为 xff09 2 环境安装 生成木马主要需要如下工具 xff1a kali操作系统 xff0c V
  • Visual Studio Code安装教程(超详细)

    网盘自取 xff1a https pan baidu com s 1BQDyf7uqQopJ3UUZnQ0E6g 提取码 xff1a 2022 点击VSCodeSetup x64进行安装 弹出安装向导 xff0c 勾选我同意 xff0c 点
  • 【实习日记】Sftp & Python上传本地多级文件夹

    实现功能 xff1a 将本地多级文件夹上传至sftp服务器 1 测试 由于公司的sftp已经投入使用了 xff0c 没办法随便连接 xff0c 先在本地用shutil库实现一个文件夹到另一个文件夹的复制 xff0c 把一个本地文件夹当作远程
  • 很简单——拓扑排序(队列实现)

    有N个比赛队 xff08 1 lt 61 N lt 61 500 xff09 xff0c 编号依次为1 xff0c 2 xff0c 3 xff0c xff0c N进行比赛 xff0c 比赛结束后 xff0c 裁判委员会要将所有参赛队伍从前往
  • SSD,NCC,Lucas-Kanade模板匹配,目标跟踪

    SSD xff0c NCC xff0c Lucas Kanade模板匹配 xff0c 目标跟踪 SSD原理 xff1a 实现 xff1a 结果 xff1a NCC原理 xff1a 实现 xff1a 结果 xff1a Lucas Kanade

随机推荐

  • linux下重启Tomcat命令

    第一步 xff1a 进入Tomcat下的bin目录 cd usr local tomcat bin 第二步 xff1a 查询Tomcat是否关闭 ps ef grep java 第三步 xff1a 如果显示以下信息 xff0c 代表着Tom
  • Xshell连接不上Ubuntu 20.04.1 LTS的解决方案

    第一步 xff1a 打开终端输入ifconfig查看IP地址是否错误 xff0c 如果提示如下图 xff0c 需要安装net tools xff0c 输入如下命令 sudo apt install net tools 第二步 xff1a 安
  • “花生壳”实现内网穿透搭建个人网站

    我们先简单介绍一下内网穿透 xff0c 也叫 NAT 穿透 xff0c 进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机 xff0c 在目前国内的内网穿透工具很多 xff0c
  • arch linux 超全安装

    Arch Linux安装 1 制作安装介质 下载ISO镜像文件 xff1a https archlinux org download 官方下载网址 注 xff1a 下载选择 xff0c 中国镜像 制作安装介质 xff1a 在Windows中
  • MySQL8.0远程连接和用户授权相关设置

    文章目录 1 开启MySQL远程连接2 关闭MySQL远程连接3 修改防火墙规则 xff0c 开放端口4 创建用户以及给用户授权5 删除用户及权限 1 开启MySQL远程连接 mysql u root p 进入MySQL数据库后进行一下操作
  • Git代码回归到指定commit

    摘要 工作中 xff0c Git的使用越来越频繁 除了最常用的clone add commit push pull等命令 xff1b 还有回退命令reset 这一篇博客就记录一下该回退命令的简单使用 现在有了可视化工具方便很多 xff0c
  • openGauss企业版安装

    openGauss企业版安装 一 下载openGauss 企业版软件包二 安装Python 3三 安装系统软件依赖四 系统环境设置1 关闭防火墙 安装好了记得打开 2 关闭SELINUX3 设置时区和时间4 设置网卡MTU值5 查看host
  • 专项测试实战 | 如何测试 App 流畅度(基于 FPS 和丢帧率)

    本文为霍格沃兹测试学院学员学习笔记 xff0c 进阶学习文末加群 FPS 和丢帧率可以在一定程度上作为 APP 流畅度的一项衡量标准 xff0c 本文介绍利用 adb shell dumpsys gfxinfo 命令获取软件渲染加载过程的数
  • iOS 视图(UIView)动画

    如果需要在视图 xff08 UIView xff09 上进行一些简单动画 xff0c 可以使用视图动画 视图动画底层也是使用Core Animation xff0c 只是动画的实现细节都封装起来了 UIKit类通常都有animated布尔型
  • MyBatis重复查询产生的一级缓存问题,导致查询失败

    问题 业务场景一直在一个事务中执行同一个sql xff0c myBatis默认第一次查询数据库 xff0c 第二次直接在一级缓存中取 那么在复杂业务中 xff0c 别的线程改变数据的时候 xff0c 那么久可能造成一直使用缓存中的值而造成数
  • 如何安全的从ubuntu16.04升级到18.04?

    Ubuntu全盘备份与恢复 xff0c 亲自总结 xff0c 实测可靠 按照ubuntu官方发布计划 xff0c ubuntu16 04将在2021年4月停止工作 xff0c 加上新出的一些硬件和算法都是考虑了到18 04的兼容 xff0c
  • 当Mysql的Update和Deletes语句不能使用报错时的问题

    当发生Error Code 1175 You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
  • Python代码使用tesseract进行文字识别console没有反应

    今天使用tesseract进行识别 xff0c 跟着B站的视频写了如下代码 span class token keyword import span pytesseract span class token keyword as span
  • 【C++】string的深浅拷贝问题

    深浅拷贝 问题引入浅拷贝深拷贝总结 问题引入 对于一个普通的string类 xff1a class String public String const char str 61 34 34 构造函数 if nullptr 61 61 str
  • 安装debian11系统

    镜像下载地址 xff1a https gemmei ftp acc umu se debian cd current amd64 iso cd debian 11 6 0 amd64 netinst iso 一 选择图形化安装 xff08
  • 头歌平台(EduCoder)————软件测试(黑盒测试)

    第1关 xff1a 等价类划分法 任务描述 本关任务 xff1a 编写代码 xff0c 使用等价类划分法进行黑盒测试 相关知识 为了完成本关任务 xff0c 你需要掌握等价类划分法 第2关 xff1a 边界值法 任务描述 本关任务 xff1
  • Copilot插件下载--IDEA

    1 将你的 github copilot 更新到最新版本 xff08 1 1 24 1610 xff09 然后关闭idea 2 下载这个版本的 github copilot 1 1 20 1417 https plugins jetbrai
  • 蓝桥杯(2)——蜂鸣器与继电器的使用

    目录 蜂鸣器与继电器的使用 一 原理 二 代码控制 三 与LED的连接控制举例 蜂鸣器与继电器的使用 一 原理 首先 xff0c 如何去控制蜂鸣器与继电器呢 xff0c 必须要知道的是蜂鸣器与继电器的各个引脚图 xff08 如下 xff09
  • 蓝桥杯05-独立按键的操作

    目录 xff08 一 xff09 1 原理 xff1a 2 思路 xff1a 一般按下某一键 xff0c 以S7为例时 xff0c 用if函数判断是否按下来执行之后的操作 xff08 延时去抖动 xff09 xff08 二 xff09 xf
  • 蓝桥杯07-51单片机的中断系统

    1 中断 xff1a 你正在追电视剧 神雕侠侣 正看得入迷的时候 xff0c 电话响了 xff0c 你暂停电视剧 xff0c 去接电话 xff0c 在接电话的过程中 xff0c 门铃又响了 xff0c 你暂时放下电话 xff0c 去把门打开