51单片机两个中断及中断嵌套

文章目录

  • 前言
  • 一、中断嵌套是什么?
  • 二、两个同级别中断
    • 2.1 中断运行关系
    • 2.2 测试程序
  • 三、两个不同级别中断实现中断嵌套
    • 3.1 中断运行关系
    • 3.2 测试程序
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

课程需要:


提示:以下是本篇文章正文内容,下面案例可供参考

一、中断嵌套是什么?

在这里插入图片描述

二、两个同级别中断

2.1 中断运行关系

主函数->中断0->主函数
主函数->中断1->主函数
主函数->中断0->中断1->主函数
主函数->中断1->中断0->主函数
在这里插入图片描述

2.2 测试程序

关键:

   		PX0=0;			//外部中断0为低优先级PX1=0;			//外部中断1为低优先级

代码如下(示例):


#include <reg51.h>
#define uchar unsigned char
void Delay(unsigned int i)		//延时函数Delay( )
{	unsigned int j;for(;i > 0;i--)		for(j=0;j<125;j++)		{;}					//空函数
}
void  main( )		//主函数
{uchar display[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯显示数据组		uchar a;for(;;)		{EA=1;			//总中断允许EX0=1;			//允许外部中断0中断EX1=1;			//允许外部中断1中断IT0=1;			//选择外部中断0为跳沿触发方式IT1=1;			//选择外部中断1为跳沿触发方式PX0=0;			//外部中断0为低优先级PX1=0;			//外部中断1为高优先级for(a=0;a<9;a++)		{						Delay(500);		//延时P1=display[a];		//流水灯显示数据送到P1口驱动LED显示} 	}
}
void int0_isr(void)  interrupt 0  using 0   //外中断0中断函数
{	for(;;){P1=0x0f;		//低4位LED灭,高4位LED亮Delay(400);		//延时P1=0xf0;		//高4位LED灭,低4位LED亮Delay(400);		//延时} 							
}void int1_isr (void)  interrupt 2  using 1  //外中断1中断函数
{uchar m;for(m=0;m<5;m++)			//8位LED全亮全灭5次{P1=0;				//8位LED全亮Delay(500);			//延时P1=0xff;			//8位LED全灭Delay(500);			//延时}
}

中断 1无法打断中断0 同级


三、两个不同级别中断实现中断嵌套

3.1 中断运行关系

中断0 高级中断
中断1 低级中断

主函数->高级中断->主函数
主函数->低级中断->主函数
主函数->低级中断–>高级中断->主函数
主函数->高级中断->低级中断->主函数

嵌套:

主函数->低级中断(执行到一半)->高级中断->低级中断(执行下一半)->主函数

在这里插入图片描述

3.2 测试程序

关键:

   		PX0=0;			//外部中断0为低优先级PX1=1;			//外部中断1为高优先级

代码如下(示例):


#include <reg51.h>
#define uchar unsigned char
void Delay(unsigned int i)		//延时函数Delay( )
{	unsigned int j;for(;i > 0;i--)		for(j=0;j<125;j++)		{;}					//空函数
}
void  main( )		//主函数
{uchar display[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//流水灯显示数据组		uchar a;for(;;)		{EA=1;			//总中断允许EX0=1;			//允许外部中断0中断EX1=1;			//允许外部中断1中断IT0=1;			//选择外部中断0为跳沿触发方式IT1=1;			//选择外部中断1为跳沿触发方式PX0=0;			//外部中断0为低优先级PX1=1;			//外部中断1为高优先级for(a=0;a<9;a++)		{						Delay(500);		//延时P1=display[a];		//流水灯显示数据送到P1口驱动LED显示} 	}
}
void int0_isr(void)  interrupt 0  using 0   //外中断0中断函数
{	for(;;){P1=0x0f;		//低4位LED灭,高4位LED亮Delay(400);		//延时P1=0xf0;		//高4位LED灭,低4位LED亮Delay(400);		//延时} 							
}void int1_isr (void)  interrupt 2  using 1  //外中断1中断函数
{uchar m;for(m=0;m<5;m++)			//8位LED全亮全灭5次{P1=0;				//8位LED全亮Delay(500);			//延时P1=0xff;			//8位LED全灭Delay(500);			//延时}
}

中断 1能打断中断0 不同级

总结

同级别不能中断嵌套,不同级别实现中断嵌套

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

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

相关文章

德国著名自动化公司Festo设计了一款仿生蜜蜂,仅重34g,支持多只蜜蜂编队飞行!...

德国著名的气动元件研发及自动化解决方案供应商Festo公司近日展示了一款仿生蜜蜂&#xff08;BionicBee&#xff09;&#xff0c;重量只有34g&#xff0c;却完全可以实现自主飞行&#xff0c;还支持多只相同的蜜蜂机器人编队飞行。 BionicBee 重约 34 克&#xff0c;长 22 厘米…

Android配置环境

安装jdk&#xff1a; 1.在Android 中文社区下载sdk&#xff1a;android-sdk_r24.4.1-linux.tgz下载jdk&#xff0c;解压 sudo mv /home/用户名/Downloads/jdk1.8.0_271 /usr/java 配置环境变量&#xff1a; 执行命令&#xff1a;sudo gedit /etc/profile 此命令是打开profil…

面试题:spring和mybatis整合之后为什么一级缓存会失效?

答案 一级缓存使用者可以随时使用或者销毁缓存&#xff0c;从SqlSession对象打开时缓存就已经存在。当关闭SqlSession对象缓存就失效。 当与spring整合的时候&#xff0c;直接跳过SqlSession对象&#xff0c;无法直接操作到SqlSession对象&#xff0c;spring在操作SqlSession的…

python安装cx_Oracle 遇到的问题

重要&#xff1a; 搞了一天&#xff0c;最后发现是python的版本和cx_Oracle版本对不上。 一开始安装的python版本是3.12&#xff0c;而cx_Oracle的最新版本是8.3.0&#xff0c; 对应的python版本为3.10&#xff0c;因此将python版本降低为3.10&#xff0c; 执行 pip install cx…

docker打包容器为镜像

要使用Docker将容器打包成镜像&#xff0c;你需要执行以下步骤&#xff1a; 创建一个Dockerfile&#xff0c;定义如何构建你的镜像。 使用docker build命令来创建镜像。 以下是一个简单的示例&#xff1a; 首先&#xff0c;创建一个名为Dockerfile的文件&#xff0c;内容如…

Redis线程模型及性能优化概述

redis线程模型&#xff1a; 网络模块命令处理 redis的性能&#xff1a; 一个取决于物理内存&#xff0c;另一个是对于socket请求的处理速度。 4.0以前 单线程模式 请求流程&#xff1a;对于一个请求&#xff0c;线程会根据操作产生相应的事件&#xff08;读&#xff0c;写事…

基于Springboot的水产养殖系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的水产养殖系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

【MyBatis】进阶使用 (动态SQL)

动态SQL \<if>\<trim>\<where>\<set>\<foreach>\<include> 在填写表单时&#xff0c;有些数据是非必填字段&#xff08;例如性别&#xff0c;年龄等字段&#xff09;&#xff0c;那就需要在接收到参数时判断&#xff0c;根据参数具体的情况…

【知识学习/复习】损失函数篇,包含理解应用与分类:回归、分类、排序、生成等任务

损失函数总结 一、损失函数理解二、不同任务的损失函数的应用1.图像分类2.目标检测3.语义分割4.自然语言处理&#xff08;NLP&#xff09;5.图神经网络&#xff08;GNN&#xff09;6.生成式网络 三、损失函数1. 回归任务损失函数常见损失函数IoU系列损失函数1. IoU损失函数&…

TiDB 利用binlog 恢复-反解析binlog

我们知道TiDB的binlog记录了所有已经执行成功的dml语句&#xff0c;类似mysql binlog row模式 &#xff0c;TiDB官方也提供了reparo可以进行解析binlog&#xff0c;如下所示: [2024/04/26 20:58:02.136 08:00] [INFO] [config.go:153] ["Parsed start TSO"] [ts449…

聊天窗口关键词回复、定时发送、获取手机号发送到服务器

代码逻辑介绍&#xff1a; isUserTyping记录用户是否输入消息&#xff0c;用setInterval定时50秒检测并改变用户状态为false&#xff0c;发送消息、或者自动打印一轮完毕后&#xff0c;置为true。 sendMessage是处理发送消息的函数&#xff1b; appendMessage是将消息追加到…

[C++][数据结构]二叉搜索树:介绍和实现

二叉搜索树 概念 二叉搜索树又称二叉排序树&#xff0c;它是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左右子树也…

IoT Scenario: Smart Retail System-Multiple Sources and Multiple Terminals

物联网/大数据可视化领域发文可以联系&#xff1a;nascimsina.com IoT Scenario: Smart Retail System Overview The use of IoT in the retail industry enhances customer experiences, optimizes inventory management, and provides valuable insights into consumer beh…

Vue+ElementUI实现文件照片音频视频预览

1. 需求是点击预览按钮 根据文件名的后缀去实现预览 2. 具体实现代码及逻辑 1.预览弹框 <el-dialog:visible.sync"visibleFile"width"40%":close-on-click-modal"false"close"cancelHandler":append-to-body"true">…

【架构】后端项目如何分层及分层领域模型简化

文章目录 一. 如何分层1. 阿里规范2. 具体案例分析 二. 分层领域模型的转换1. 阿里规范2. 模型种类简化分析 三. 小结 本文描述后端项目中如何进行分层&#xff0c;以及分层领域模型简化 一. 如何分层 1. 阿里规范 阿里的编码规范中约束分层逻辑如下: 开放接口层&#xff1a…

pinia持久化

安装 pinia-plugin-persistedstate npm i pinia-plugin-persistedstate main.ts import App from ./App.vue import { createPersistedState } from pinia-plugin-persistedstate import { createPinia } from piniaconst pinia createPinia() pinia.use(createPersistedSt…

Java全栈开发前端+后端(全栈工程师进阶之路)-环境搭建

在课程开始前我们要配置好我们的开发环境&#xff0c;这里我的电脑太乱了&#xff0c;我使用vm虚拟机进行搭建开发环境&#xff0c;如果有需要环境的或者安装包&#xff0c;可以私信我。 那我们开始 首先我们安装数据库 这里我们使用小皮面板 小皮面板(phpstudy) - 让天下没…

【计算机毕业设计】基于SSM++jsp的社区管理与服务系统【源码+lw+部署文档+讲解】

目录 摘 要 Abstract 第一章 绪论 第二章 系统关键技术 第三章 系统分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3运行可行性 3.1.4法律可行性 3.4.1注册流程 3.4.2登录流程 3.4.3活动报名流程 第四章 系统设计 4.3.1登录模块顺序图 4.3.2添加信息模块顺序图 4.4.1 数据库E-…

【Node.js工程师养成计划】之express框架

一、Express 官网&#xff1a;http://www.expressjs.com.cn express 是一个基于内置核心 http 模块的&#xff0c;一个第三方的包&#xff0c;专注于 web 服务器的构建。 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用&…

使用LocalGPT+cpolar打造可远程访问的本地私有类chatgpt服务

文章目录 前言环境准备1. localGPT部署2. 启动和使用3. 安装cpolar 内网穿透4. 创建公网地址5. 公网地址访问6. 固定公网地址 前言 本文主要介绍如何本地部署LocalGPT并实现远程访问&#xff0c;由于localGPT只能通过本地局域网IP地址端口号的形式访问&#xff0c;实现远程访问…