3.外部中断

news2024/11/14 16:29:15

文章目录

  • 中断原理
  • 代码实现过程
    • 中断源
    • 中断处理函数
    • 中断寄存器
      • 中断控制寄存器
      • 中断优先级寄存器(暂不学)
      • 中断允许寄存器
  • 中断代码

中断原理

你在打游戏,水开了,水壶发出响声,你停止打游戏,去倒水,倒完水接着打游戏

打游戏:就相当于While(1){}里面执行的代码

水壶响:就是中断源

倒水:触发中断后要去做的事情,中断处理函数

代码实现过程

中断源

INT0(外部中断源)、Timer0(定时器中断源)、INT1、Timer1、UART(串口中断源)、Timer2、INT2、INT3

中断触发方式:

    外部中断:下降沿或者低电平

    定时器中断:定时器计数溢出

    串口中断:串口发送或者接收完成

中断处理函数

与中断源对应的中断处理函数,直接使用对应的函数

中断源中断处理函数
INT0Int0_Routine(void) interrupt 0
INT1Int1_Routine(void) interrupt 2
INT2Int2_Routine(void) interrupt 6
INT3Int3_Routine(void) interrupt 7

中断寄存器

保存中断源的中断请求信息的专用寄存器

中断控制寄存器

外部中断只需用到:IT0、IT1、IE0、IE1

中断寄存器功能

外部中断触发方式控制位(代码):IT0、IT1,中断触发标志位(内部):IE0、IE1

下降沿触发:IT0 = 1,低电平触发:IT0 = 0(IT1同理)

外部中断分析

定时器、串口(后续讲)

中断优先级寄存器(暂不学)

中断允许寄存器

在外部中断只需要(置1为打开):

  1. 总中断允许控制位:EA
  2. EX0:外部中断0中断允许位、EX1:外部中断1中断允许位

允许寄存器分析

中断代码

  1. 配置外部中断0为下降沿触发(为1则低电平触发)
  2. 打开外部中断0中断允许位
  3. 打开总中断允许控制位
  4. 当有中断源发出,触发中断,执行中断函数,执行完之后,回到主函数继续执行
#include <reg52.h>
#include <intrins.h>

sbit LED1 = P1^0;	//引脚初始化:P1^0:对应引脚的LED灯,定义LED1代表P1^0这个引脚的LED灯
//延时函数
void Delay120ms()		//@11.0592MHz
{
	unsigned char data i, j;
	i = 216;
	j = 37;
	do
	{
		while (--j);
	} while (--i);
}

void main()
{
    //电路图知:中断源INT0、INT1引脚与按键P3^2、P3^3同一个,则按键为中断源,无需定义按键
	IT0 = 1;	//配置外部中断0为下降沿触发(为1则低电平触发)
	EX0 = 1;	//打开外部中断0中断允许位
	EA = 1;		//打开总中断允许控制位
    while(1)
    {
        Delay120ms();
		Delay120ms();
    }
}

Int0_Routine(void)        interrupt 0	//中断处理函数
{
    Delay120ms();
	LED1 = ~LED1;
}

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

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

相关文章

8 多输出预测与多标签分类pytorch网络搭建

文章目录 前言一、多输出预测(回归)1 坐标数据生成2 网络搭建训练预测二、多标签分类1 多标签数据生成2 网络搭建训练总结前言 前面我们搭建的无论是分类还是回归都只能预测一个标签,这显然效果很局限。下面我们想做到下面这两种效果: 多输出预测(回归):例如训练网络拟…

谷歌浏览器插件-多语言翻译插件-免费好用简单开源

使用说明&#xff1a; 基于translate.js 实现的 免费 谷歌多语言翻译插件 不能确保永久有效&#xff01; 谷歌浏览器翻译插件&#xff0c;支持中、英、日、韩、俄、中文繁体多种语言翻译~ 使用说明 &#xff1a; 第一步&#xff1a; 把收到的压缩包解压出来&#xff0c;放到…

拒绝废话:computed、watch和methods的区分和使用场景

computed、watch和methods是用于处理数据和响应数据变化的不同方式&#xff0c;三者之间有什么不同呢&#xff0c;贝格前端工场作为10年前端老司机&#xff0c;用浅显的语言给大家分享一下。 computed&#xff1a; computed属性是用来定义一个基于依赖的响应式属性。它会根据…

系统测试-白盒测试学习

目录 1、语句覆盖法&#xff1a; 2、判定覆盖法&#xff1a; 3、条件覆盖法&#xff1a; 4、判定条件覆盖&#xff1a; 5、条件组合的覆盖&#xff1a; 6、路径覆盖&#xff1a; 黑盒&#xff1a;需求 白盒&#xff1a;主要用于单元测试 1、语句覆盖法&#xff1a; 程序…

Modbus转Ethernet/IP网关模块与汇川PLC通讯案例

Modbus转Ethernet/IP网关模块&#xff08;XD-MDEP100&#xff09;是一种用于将Modbus协议转换为Ethernet/IP协议的设备。它可以将Modbus RTU和Modbus TCP两种不同格式的Modbus数据包转换为Ethernet/IP协议的数据包&#xff0c;实现不同厂家的设备之间的数据交换和共享。在汇川P…

力扣2296.设计一个文本编辑器

力扣2296.设计一个文本编辑器 对顶栈 将光标看作左右栈的分隔添加元素&#xff1a;往左栈添加元素删除元素&#xff1a;从左栈删除元素光标左(右)移&#xff1a;左(右)栈元素加到右(左)栈 class TextEditor {string left,right;public:TextEditor() {}void addText(string…

理兔chat开发日记

1.注册 注册跟以前的差不多&#xff0c;我们将我们的验证码放在redis下&#xff0c;我们在注册的时候先判断我们输入的验证码是否正确 验证码成功后在我们的实现类中&#xff0c;我们先判断邮箱是否重复&#xff0c;不重复我们就继续注册 我们拥有联号注册的功能&#xff0c;就…

OpenCV 棋盘格相机标定(保姆版)

目录 一、概述 1.1标定原理 1.2实现步骤 1.3应用场景 二、代码 2.1 cv2.calibrateCamera函数 2.1.1输入参数 2.1.2输出参数 2.2完整代码 三、实现效果 3.1处理图像 3.2内参与畸变系数 一、概述 使用 OpenCV 进行相机标定&#xff0c;通常需要拍摄多张包含棋盘格标定…

手机照片怎么改大小kb?3个压缩方法分享

手机照片怎么改大小kb&#xff1f;手机照片调整大小&#xff08;KB&#xff09;不仅是管理存储空间的实用技巧&#xff0c;也是适应多样化分享场景的关键。掌握调整照片大小的方法&#xff0c;能确保图片顺畅上传&#xff0c;同时保持清晰度和加载速度&#xff0c;提升用户体验…

Why can‘t I access GPT-4 models via API, although GPT-3.5 models work?

题意&#xff1a;为什么我无法通过API访问GPT-4模型&#xff0c;尽管GPT-3.5模型可以工作&#xff1f; 问题背景&#xff1a; Im able to use the gpt-3.5-turbo-0301 model to access the ChatGPT API, but not any of the gpt-4 models. Here is the code I am using to tes…

Linux中LVS群集应用基础—NAT模式—LVS+Apache+NFS

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f427;Linux基础知识(初学)&#xff1a;点击&#xff01; &#x1f427;Linux高级管理专栏&#xff1a;点击&#xff01; &#x1f510;Linux中firewalld防火墙&#xff1a;点击&#xff01; ⏰️创作时间&…

ctfshow-web入门-php特性(web123、web125、web126)

目录 1、web123 2、web125 3、web126 1、web123 要求存在 post 传入 CTF_SHOW 和 CTF_SHOW.COM&#xff0c;不能存在 get 传入 fl0g。 正则匹配过滤掉了一些符号&#xff0c;符合则会执行 eval 函数&#xff0c;其中 c 来自 post 传入的 fun。 我们先说非预期解&#xff0c…

Windows搭建RTMP视频流服务器

参考了一篇文章&#xff0c;见文末。 博客中nginx下载地址失效&#xff0c;附上一个有效的地址&#xff1a; Index of /download/ 另外&#xff0c;在搭建过程中&#xff0c;遇到的问题总结如下&#xff1a; 1 两个压缩包下载解压并重命名后&#xff0c;需要 将nginx-rtmp…

【Linux】进程信号 --- 信号预备阶段(入门篇)

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

PIC单片机ICSP接口电路原理图

ICSP接口电路只有五根线&#xff0c;依次为&#xff1a; VPP、VDD、VSS、PGD、PGC&#xff0c;它们与PIC单片机的连接如下图&#xff1a; 题外话单片机中的佼佼者是谁&#xff0c;想知道点击上方图片查看视频 为保证ICSP安全正常工作&#xff0c;烧写时序线PGD和PGC、烧写电压…

C语言 | Leetcode C语言题解之第237题删除链表中的节点

题目&#xff1a; 题解&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/void deleteNode(struct ListNode* node) {struct ListNode * p node->next;int temp;temp node->val;node->val…

深度学习驱动智能超材料设计与应用

在深度学习与超材料融合的背景下&#xff0c;不仅提高了设计的效率和质量&#xff0c;还为实现定制化和精准化的治疗提供了可能&#xff0c;展现了在材料科学领域的巨大潜力。深度学习可以帮助实现超材料结构参数的优化、电磁响应的预测、拓扑结构的自动设计、相位的预测及结构…

线程控制

对线程的控制思路和进程相似&#xff0c;创建、等待、终止&#xff0c;只需要调用接口就行。但是在Linux下没有线程的概念&#xff0c;因为Linux的设计者认为&#xff0c;线程是一种轻量级的进程&#xff0c;毕竟创建线程只需要创建PCB。因此Linux中使用多线程必须使用第三方pt…

打破平台限制,使智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏的一款安卓应用

大家好&#xff0c;今天给大家分享一款专为Android设备设计的模拟器应用Winlator。其核心功能是能够在基于ARM架构的智能手机和平板电脑上无缝运行Windows x86/x64架构的软件和游戏。 Winlator是一款Android应用程序&#xff0c;它允许用户使用Wine和Box86/Box64在Android设备上…

Ubuntu的磁盘扩容遇到的问题

1.先用终端上的命令查看磁盘的使用情况 #查看磁盘空间容量的占用情况 $ df -h #查看当前文件夹中&#xff0c;各个文件占用磁盘空间的情况 $ du -sh* 如果容量少的话&#xff0c;需要尽快扩容 2.开机前的扩容 2.1 VMware 扩展磁盘空间 关闭当前客户机&#xff0c;在编辑虚拟…