带你了解什么是中断以及外部中断案例分析

2023-11-07

了解什么是中断

好,今天我来给大家讲一下我们什么是中断以及如何去运用外部中断源。
首先,我们学习单片机的时候,一定听说过学会中断才是单片机的入门。因为中断系统大大提高了单片机对随机事件的实时处理能力,并且提高了单片机的工作效率。

当然,中断这个概念对初学者会有点难以理解,这里我们举一个例子,比如我在家里看书,这时候有快递员送货上门我听到敲门声,那我肯定是先暂停看书先去开了门,然后取完快递后,再继续回去开始看书。
这里过程我们可以分析为:
1.在家里看书是我当前执行的主程序
2.听到敲门声是中断申请
3.暂停看书去开了门,并且取完快递是单片机对中断的响应和处理
4.回去开始看书是中断结束返回继续执行被打断的主程序

这样分析大家是否对中断有一个初步的认识,就是打断正在执行的程序去做中断的程序,做完了再回来继续做原来的程序。

中断有哪些以及该怎么设置

那我们知道了中断的概念后,我们要去实现中断该怎么做呢?
首先,你要明白用单片机的哪个中断源,其次你要怎么实现这个中断,要设置哪些参数。
这里我们介绍一下对于51单片机的话中断源只有五个,分别为
在这里插入图片描述
总体上可分为外部中断源(外部中断0和外部中断1)和内部中断源(定时器0、定时器1和串行口中断),相对于其他单片机如stm32来说,其中断源更多和中断体系更加复杂,所以建议大家先把51这五个中断源弄明白了,后面遇到的其他复杂中断都是从这些基础上过来的。

知道了有哪些中断源后我们就可以根据自己的需要来选择自己想要用的中断源,比如我想要当系统中的某个输入信号变为低电平时候或者出现下降沿时候执行中断,那我用到外部中断源,那我就选择外部中断0或者外部中断1。

而当我想设计计时多久就来一个其他程序执行,那我就要用到内部中断源里面的定时器0和定时器1,一般用到计时或者计算脉冲边沿数量等等的采用定时器来做中断源。

当我想要用pc或者其他无线传输发送过来的命令来使单片机产生中断的话,我们就可以使用串口中断,比如当我接收到特定的字符时候就执行中断。

现在我们知道了中断是什么,以及我也知道了中断源有哪些可以用,并且我也知道了我要用的是哪个中断源。那现在就是该怎么设置使我实现中断。这里告诉大家,我们要实现中断控制就要去设置中断相关的寄存器。设置好了我们才能使用中断。而相对于的寄存器有哪些呢?
这里我们先列出
1.定时控制寄存器TCON
在这里插入图片描述

2.串行控制寄存器SCON
在这里插入图片描述

3.中断屏蔽寄存器IE
在这里插入图片描述

4.中断优先级寄存器IP(IP寄存器这里下面例子没用到,所以只列出相关位)
在这里插入图片描述

一共有四个,这里我们先不深入将这四个中断寄存器,而是先给大家一个概念先,等后面大家熟悉了,大家就明白这四个寄存器的作用。
或许到了这里有些小伙伴会问,我知道要用这四个寄存器来设置相应中断,但是我该怎么设置呢?要设置哪些呢?我当时学的时候也是这样的,学了一遍也不懂,直到我看到了这张中断控制系统图。
在这里插入图片描述
我们从图中可以很明显的看出当我们要用什么中断的时候,要去设置哪些寄存器位。当年,我就是看到这张图使我一下子明白了该如何去设置相应的中断。这里我们举一个例子带大家了解中断该如何去设置以及使用。

中断案例分析

我们这里举例外部中断源的外部中断0使用,定时器的后期我会再出一期给大家讲解。
首先,Proteus 仿真要求:8 个 LED 一直闪烁;每按一下按键(外部 0 中断 P3.2),8
个 LED 从下向上流水 1 次。

我们可以从上图的中断控制系统可以看到,要使用外部中断0,首先我们要设置IT0,而IT0我们从寄存器TCON可以得出IT0是设置中断触发的,IT0=1为下降沿触发;IT0=0为低电平触发。这里我选择下降沿触发所以IT0=1。

然后IE0是中断标志这里我们不做设置。再后面的EX0是在寄存器IE里面的,而寄存器IE是用来设置相应的中断允许和禁用,所以这里EX0是外部中断0的中断允许位,EX0=1是允许中断;EX0=0是禁止中断。所以这里我们要使EX0=1允许中断
而开启相应中断后我们还要开启总中断就是使EA=1,我们可以从图中看出每一个中断源都有一个EA中断开发。也就是说无论什么中断源,你开启了自己的中断还要去开启总中断。这一定要记得哦。

最后的PX0设置中断优先我们就不设置了。因为这边也就用到了一个中断。
总结就是使{IT0=1;EX0=1;EA=1;},放在主程序里。

  IT0=1;
  EX0=1;
  EA=1;

然后中断寄存器设置好了,我们要开始写中断函数,中断函数这里需要写一个中断的标志interrupt 0。interrrupt我们都知道是中断的意思,而后面的0是指外部中断0(也就是说明我这个中断函数是执行哪个中断的意思)。这里拓展一下相应的中断对于的数字。这里提示一下如果使用的是其他中断,修改完寄存器值还要修改相应的中断函数后面指定的中断数。
在这里插入图片描述

void int0() interrupt 0  
{

}

然后我们在编写中断的程序,这里是每按一下按键(外部 0 中断 P3.2),8个 LED 从下向上流水 1 次
,所以这里我们程序这样编写。

void int0() interrupt 0
{
  unsigned char i,temp=0x7f;
  for(i=0;i<8;i++ )
 {
  P1 = temp ;
  delay(100);
  temp=_cror_(temp,1); 
 }
}

这样我们就设置好了外部中断0的设置,而这里还有一点就是因为你是外部中断源,信号是有单片机外部给的,所以你的信号输入要接到单片机外部中断0的那个IO口,也就是P3.2口,单片机的五个中断源的IO口都在P3口上,大家要记住哦。

中断的程序介绍就到这里,程序放在下面供大家参考。

电路图如下 :
在这里插入图片描述

程序代码:

#include<reg51.h>
#include<intrins.h>  //含左移函数
void delay(unsigned int m)
{
  unsigned int i;
  for(;m>0;m--)
  {
   for(i=540;i>0;i--) {;}
  }
}

void int0() interrupt 0  //中断函数
{
  unsigned char i,temp=0x7f;
  for(i=0;i<8;i++ )  
 {
  P1 = temp ;
  delay(100);
  temp=_cror_(temp,1);   //右移一位
 }
}


void main()
{
  IT0=1;     //中断初始化
  EX0=1;
  EA=1;
  while(1)
  {
  P1=0xff;     //八个LED闪烁
  delay(100);
  P1=~P1;
  delay(100);
  }		 
}


好了,今天我们介绍了中断以及讲解了一个外部中断的例子,下次我来分享一个定时中断的例子,给大家讲解一下什么是定时中断以及其使用。

本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

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

带你了解什么是中断以及外部中断案例分析 的相关文章

  • 普冉32位单片机 PY32C642,M0+内核,1.7 V ~ 5.5 V宽工作电压

    PY32C642 单片机采用高性能的 32 位 ARM Cortex M0 内核 宽电压工作范围 嵌入 24Kbytes Flash 和 3 Kbytes SRAM 存储器 最高工作频率 24 MHz 包含多种不同封装类型产品 工作温度范围
  • Camtasia2024中文绿色版本下载安装详细步骤教程

    Camtasia2024是一款功能强大的屏幕录制和视频编辑软件 它可以帮助用户轻松地记录电脑屏幕上的任何操作 并可以将录制的视频进行编辑和制作成高质量的视频教程 演示文稿 培训课程等 Camtasia具有直观的界面和易于使用的工具 包括添加
  • 研发实验室装修

    研发实验室在企业 高校和研究机构中的地位日益凸显 一个优质的研发实验室装修方案不仅能提升实验室的整体形象 还能提高科研人员的工作效率 激发创新精神 本文将从设计理念 空间规划 材料选择及环保安全等方面 SICOLAB喜格 探讨如何打造高效创
  • 职场生存能力最强的5类人:如何成为职场中的佼佼者?

    职场生存能力最强的5类人 如何成为职场中的佼佼者 在职场中 生存能力强的人往往更容易获得成功 他们具备各种能力和特质 使他们能够在激烈的竞争中脱颖而出 本文将介绍职场生存能力最强的5类人 看看你是否具备这些特点 一 适应能力强的人 在职场中
  • 毕设开题分享 单片机智能教室系统(智能照明+人数统计)

    1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 单片机智能教室系统 智能照明 人数统计 大家可用于 课程设计 或 毕业设计 项目分享 https gitee com feifei1122 simulation project
  • 校招失败后,在小公司熬了 2 年终于进了字节跳动,竭尽全力....

    其实两年前校招的时候就往字节投了一次简历 结果很明显凉了 随后这个理想就被暂时放下了 但是这个种子一直埋在心里这两年除了工作以外 也会坚持写博客 也因此结识了很多优秀的小伙伴 从他们身上学到了特别多东西 把这次面试分享出来 也是希望可以帮助
  • 外包干了2个月,技术退步明显...

    先说一下自己的情况 大专生 18年通过校招进入武汉某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • Linux中的磁盘空间管理:df命令的详解与应用

    在Linux操作系统中 磁盘空间的管理是系统管理员和普通用户都需要面对的重要任务 为了帮助用户更好地理解和管理磁盘空间 Linux提供了一系列工具 其中最常用 最直观的莫过于df命令 df命令 全名为 disk free 它是一个用于显示磁
  • “性能压测揭密:关键指标分析!“

    在进行全链路压测和性能测试时 需要关注多个关键性能指标 KPIs 来评估系统的性能表现 以下是一些常见的性能测试指标 1 吞吐量 Throughput 系统在单位时间内能够处理的请求数量或事务数量 通常以每秒请求数 RPS TPS 来衡量
  • C和指针课后答案

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 第八章课后答案 提示 以下是本篇文章正文内容 下面案例可供参考
  • 带头双向循环链表基础

    带头双向循环链表基础 销毁 销毁 void ListDestory ListNode phead void ListDestory ListNode phead assert phead ListNode cur phead gt next
  • 有效降低EMI干扰的PCB设计原则

    降低EMI干扰的一些PCB设计建议 1 通过在所有信号下提供低阻抗 连续的返回路径来减少地面反弹 尤其是在表层布线时 2 保持所有走线距离板的边缘至少5倍信号线宽 3 对于关键信号 尽量采用带状线布局 4 将高速率 大电流的组件尽可能远离I
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 软件测试|Pydantic处理时间类型数据

    简介 我们之前介绍过使用 pydantic 验证数据 比如校验数据的格式等 但是在我们的日常工作中 还有一种数据是需要我们验证的 比如时间数据 时间数据不同于字符串 列表等数据 与他们的验证不一样 本文就来为大家介绍一下 pydantic
  • 哪里有视频压缩软件免费版在线使用?轻松压缩视频大小

    作为一个文件管理员 我常常需要处理大量的视频文件 有时候 视频文件过大给传输 存储带来了诸多不便 遇到这种情况 很多人就会选择使用视频压缩软件来减小文件大小 不过一些小伙伴不清楚视频压缩软件app 电脑软件 网页有哪些 接下来我们将从功能
  • 短视频时代:影响播放量的秘密与破解之道

    在当下这个信息爆炸的时代 短视频已经成为我们日常生活的一部分 无论是刷朋友圈 看新闻还是消磨时光 短视频都是我们的首选 正因为如此 许多自媒体人和内容创作者纷纷投身到这片热土 希望通过短视频实现自己的价值 然而 许多人在创作过程中都会遇到一
  • 用栈实现队列(OJ中报错的处理)

    用栈实现队列 ERROR AddressSanitizer myQueueFree函数中栈的释放处现了问题 没有调用StackDestory而是直接free了 这个是栈初始化时 capacity与malloc申请的空间大小没有匹配 请你仅使
  • 新画图不好用?『 图层困扰?』『 剪切板拷贝失败?』旧版画图软件yyds

    樊梓慕 个人主页 个人专栏 C语言
  • Python - 字典4

    复制字典 您不能简单地通过输入 dict2 dict1 来复制一个字典 因为 dict2 只会成为 dict1 的引用 对 dict1 的更改也会自动应用于 dict2 有多种方法可以复制字典 一种方法是使用内置的 copy 方法 示例 使
  • AI新年头像模板在哪找?告别单调头像的工具分享

    农历新年到啦 今年的春节假期你有没有弄一些氛围装饰呀 除了每年都有的对联 福字等 经典皮肤 现在也流行起给自己的账号营造一些过年的感觉啦 说到这个 很多人第一反应就是给自己换个新年头像 限定皮肤 不过头像要怎么营造新年的感觉呢 其实用AI工

随机推荐