-
2018-11-12 23:13:23
外部中断事件
众所周知,CPU在计算机系统中,除了能够执行指令,进行运算外,还应该有输入输出功能。比如说,我现在在打字输入‘a’,CPU他会处理这个按键,并在你的屏幕上显示‘a’。我们想想,它能显示,是不是打印机工作了,打印机工作。是不是CPU给它指令了,那是不是我们按键,然后CPU处理并执行。
那么,CPU现在要处理键盘(也就是外设的输入),很明显要解决两个问题。
- 我们是不是随时按按键他都能执行,那么CPU如何得知。
- CPU如何得到外设的输入,以及他如何区别键盘输入的内容。
接口和端口
CPU和外设的联系是通过端口实现并控制外设的输入和输出。外设的输入不直接送入内存和CPU,而是先送到相应接口芯片的端口中:输出也是如此。CPU向外设输出控制指令也是如此。
中断信息
我们现在知道了,外设的输入是存放在端口中,但是它随时都有可能发生,那么CPU如何及时的知道。也就是我们提出的第一个问题。这时,CPU提供中断机制来满足这种需求。 当CPU内部需要有处理的事情发生的时候,将产生终端信息,引发中断过程,中断过程此处不多讲。这种中断信息被称为内部中断。
还有一种中断信息,来自于CPU外部,比如说外设的输入到达。CPU在执行完当前指令的时候,会读取中断控制器信息,引发中断过程,处理外设输入
PC系统中外中断过程(可屏蔽):
- 取中断类型码;
- 标志寄存器入栈,IF = 0,TF = 0;
- CS,IP入栈;
- 得到中断服务程序的入口地址(IP) = (n*4),(cs) = (n*4+2)
- 处理中断服务程序
PC系统中外中断过程(不可屏蔽):中断类型码固定为2,所以在中断过程中不需要取中断类型码
- 标志寄存器入栈,IF = 0,TF = 0;
- CS,IP入栈
- (IP) = (8),(CS) = (0AH)。
这里主要举个键盘的外部中断例子
键盘事件:int 09h中断
当键盘输入到端口地址60h,相关控制芯片会向CPU发出中断类型号为9的可屏蔽外部中断信息,如果此时IF(中断屏蔽标志位)为1则执行相应的中断处理。处理如下
- 读出60h端口中的扫描码
- 将扫描码和字符码送入BIOS键盘缓冲区;如果是控制键他会将其转换成状态字节(二进制)送入存储键盘状态的单元(0040:17);
- 对键盘系统发出相关的控制。
编写int 9 中断例程 :
更多相关内容 -
51单片机外部中断触发方式
2021-01-19 18:16:5351单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器... -
实验5 外部中断实验_STM32外部中断_外部中断_
2021-09-29 03:51:49基于STM32的外部中断程序范例DSP外部中断程序 -
外部中断_C51_外部中断_
2021-10-04 03:00:02使用C51进行外部中断仿真,实现按键让数码管示数自增 -
实验4 外部中断实验,外部中断实验遇到的问题,C,C++
2021-09-11 01:34:29STM32 外部中断实验.rar 工程中接入外部信号时候常用,特别和MCP2515等芯片联调时。 -
外部中断_单片机外部中断_STC15外部中断_
2021-09-30 09:52:49STC单片机实现外部中断 型号“IAP15W4K58S4” -
51单片机外部中断编程实例
2020-07-18 15:41:4751单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0;下面一起来学习一下 -
STM32开发项目:如何配置GPIO的外部中断
2021-01-06 03:34:03目录如何配置GPIO的外部中断配置RCC时钟GPIO配置EXTI配置NVIC配置中断服务函数 IRQ_Handler 如何配置GPIO的外部中断 以STM32F103为例,记录配置GPIO外部中断的一般方法与流程。 配置RCC时钟 RCC时钟配置是STM32MCU... -
西门子S7-1200 PLC外部中断(硬件中断)的使用方法介绍.docx
2021-08-17 11:55:28西门子S7-1200 PLC外部中断(硬件中断)的使用方法介绍 -
基于Proteus的MCS-51单片机外部中断控制仿真
2020-08-05 13:36:11本文首先介绍了中断技术的概念,接着论述了MCS-51的中断系统结构、相关寄存器及中断处理过程,依据MCS-51中断功能要求编制了Proteus仿真电路并设计了驱动程序,最后对本文的实验仿真效果进行了总结。 -
STM32f10x 外部中断及中断分组
2021-01-20 11:04:39利用外部中断来实现按键控制LED灯的亮灭。 实验工具:MDK5,STM32F103ZET6开发板 使用固件库编程 LED灯引脚PD13,按键PE0 首先了解一下32的外部中断 STM32 的每个 IO 都可以作为外部中断的中断输入口,STM32F103 的... -
基于Proteus仿真51单片机外部中断实验
2020-06-23 20:13:05当有外部中断(按钮被按下,P3.2 有下降沿电 压)时,数码管显示状态改为“8”亮灭闪烁显示,亮灭闪烁显示 8 次后,返回主程序 继续按段顺序点亮。请在 Proteus 中画出电路原理图,并编写程序仿真实现上述功能。 2... -
3.外部中断
2019-06-27 21:34:06其中内部中断是通过数时钟脉冲,外部中断是通过判断引脚电平边沿变化。上面对中断的认识是在51单片机上学习到的,因为51单片机中的中断只有相对重要且基础的几个,比如,定时器中断,计数器中断,还有串口中断(当...1、中断的认识
什么是中断?
当计算机在执行main函数中的代码时,如果中断条件满足,则保存当前的代码运行地址,跳转到另一个中断服务地址中,去执行相应的程序。
中断包括:内部中断和外部中断。其中内部中断是通过数时钟脉冲,外部中断是通过判断引脚电平边沿变化。上面对中断的认识是在51单片机上学习到的,因为51单片机中的中断只有相对重要且基础的几个,比如,定时器中断,计数器中断,还有串口中断(当发送寄存器中的数据被全部发送出去后,产生一个中断。当接受寄存器中的收满数据时,产生一个中断。在这里中断的意义可以类比两个人搬运货物,当一个人把货物送给另一个人后,才能进行接下来的搬运。那如何判断货物是否被送出去了,就需要中断是否被执行来判断)。后来学习dsp28335,发现基本上每个外设都有中断服务函数。2、中断的配置
3.在main中添加中断服务对象/** * @brief EXTI line detection callbacks * @param GPIO_Pin: Specifies the pins connected EXTI line * @retval None */ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if(GPIO_Pin == GPIO_PIN_13) { /* Toggle LED0 */ HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_8); } }
-
STM32F030 IO口外部中断应用
2020-07-26 00:42:12下面是一个STM32F030 IO口外部中断应用程序,感兴趣的朋友可以看看。 -
51单片机的外部中断触发方式简介
2020-07-19 17:22:16文章51单片机的外部中断触发方式进行了介绍。 -
实验2 外部中断_CC2530外部中断_anyone6hy_
2021-10-04 09:59:49cc2530的外部中断的使用,主要是使用按键中断的方式来控制单片机,还有中断处理函数 -
带你了解什么是中断以及外部中断案例分析
2021-06-09 23:37:27每按一下按键(外部 0 中断 P3.2),8 个 LED 从下向上流水 1 次。 电路图: 代码: #include<reg51.h> #include<intrins.h> void delay(unsigned int m) { unsigned int i; for(;m>0;m--) { ...了解什么是中断
好,今天我来给大家讲一下我们什么是中断以及如何去运用外部中断源。
首先,我们学习单片机的时候,一定听说过学会中断才是单片机的入门。因为中断系统大大提高了单片机对随机事件的实时处理能力,并且提高了单片机的工作效率。当然,中断这个概念对初学者会有点难以理解,这里我们举一个例子,比如我在家里看书,这时候有快递员送货上门我听到敲门声,那我肯定是先暂停看书先去开了门,然后取完快递后,再继续回去开始看书。
这里过程我们可以分析为:
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); } }
好了,今天我们介绍了中断以及讲解了一个外部中断的例子,下次我来分享一个定时中断的例子,给大家讲解一下什么是定时中断以及其使用。
本人水平有限,上述信息仅供参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~ -
CC2530 外部中断控制LED开关-综合文档
2021-05-25 09:01:45CC2530 外部中断控制LED开关 -
STM32学习:外部中断
2022-02-24 20:47:33文章目录一、STM32外部中断1、基本知识2、中断设计流程二、硬件配置1、proteus仿真电路...2、STM32芯片有16个外部中断源EXTI0–EXTI15,分别对应7个中断服务函数,其中EXTI0–EXTI4是专用, 其他为共用。 3、EXTI0的.文章目录
一、STM32外部中断
1、基本知识
1、外部中断(EXTI)是STM32芯片实时处理外部事件的一种机制,由于中断请求来自于GPIO端口的引脚, 所以称之为外部中断。
2、STM32芯片有16个外部中断源EXTI0–EXTI15,分别对应7个中断服务函数,其中EXTI0–EXTI4是专用, 其他为共用。
3、EXTI0的连接引脚是:PA0–PG0,即每个端口的0号引脚。
4、EXTI1的连接引脚是:PA1–PG1,即每个端口的1号引脚,其他以此类推。
外部中断的触发条件包括上升沿触发和下降沿触发2、中断设计流程
1.在STM32CubeMX中指定引脚
2.设置GPIO_EXTI
3.设置中断触发条件
4.使能NVIC通道
5.重写该I/O引脚对应的中断回调函数二、硬件配置
1、proteus仿真电路搭建
2、CubeMX硬件配置
3、配置中断
1、寻找中断虚函数
打开stm32f1xx_it.c
找到外部中断服务函数HAL_GPIO_EXTI_IRQHandler()右键选择“Go To Definition Of…"跳转
HAL_GPIO_EXTI_CLEAR_IT()的作用就是清除中断标志
而我们需要关注的则是回调函数HAL_GPIO_EXTI_Callback()
它被定义为一个虚函数 __weak void HAL_GPIO_EXTI_Callback(… ),虚函数的意义在于用户可以重新编写一个同名函数,在编译时机器只编译用户重新编写的同名函数。我们作为用户只需要调用重写这个虚函数即可
2、中断回调函数编写
找到main.c文件,粘贴我们的外部中断处理函数
注意要在主函数体外的"Private user code"下的
/* USER CODE BEGIN 0 /
/ USER CODE END 0 */
3、proteus仿真测试
1、主频配置
主频配置需要与前面Cubemx中配置的时钟频率一致
2、仿真运行
按下按键后电平翻转led状态改变
-
关于51单片机“外部中断触发方式”的经验总结
2020-08-04 10:16:35关于51单片机“外部中断触发方式”的经验总结。 -
STM8-利用外部中断编写一个按键控制灯的亮灭
2020-07-25 15:26:38本文给大家分享了STM8-利用外部中断编写一个按键控制灯的亮灭的源代码。 -
AT89S51多外部中断源系统设计
2021-01-19 18:26:47如下图所示,若系统中有5个外部中断请求源IR0~IR4,它们均为高电平请求有效,这时可按中断请求的轻重缓急进行排队,把其中别的中断请求源IR0直接接到AT89S51的一个外部中断请求源IR0输入端INT0,其余的4个中断... -
外部中断应用.ppt
2020-04-28 12:55:54使能端口组的中断功能 CC2530中的每个中断源都有一个中断功能开关,要使用某个中断源的中断功能,必须使能其中断功能。要使能P0、P1和P2端口的外部中断功能,需要通过IEN1和IEN2特殊功能寄存器。 -
stm32f1实验5 外部中断实验
2022-06-26 13:37:14stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验stm32f1实验5 外部中断实验... -
外部中断的使用方法介绍
2020-08-09 10:15:47主要介绍了外部中断的使用方法,包括: 1 基本概念 2 GPIO外部中断 3 程序开发 -
外部中断实验报告
2017-02-22 14:27:55外部中断实验报告 -
51单片机外部中断的两种触发方式资料下载
2021-07-07 11:23:5551单片机的外部中断有两种触发方式可选:电平触发和边沿触发。选择电平触发时,单片机在每个机器周期检查中断源口线,检测到低电平,即置位中断请求标志,向CPU请求中断。选择边沿触发方式时,单片机在上一个机器... -
30_外部中断_单片机外部中断系统_
2021-09-29 16:51:47单片机外部中断程序系统,关于51单片机外部中断的程序 -
实验4-单片机外部中断实验.zip
2021-02-03 13:07:5651单片机Proteus仿真+Keil工程-实验4-外部中断-步进电机ULN2003A驱动 详细见:https://blog.csdn.net/qq_43353985/article/details/107945178 -
外部中断实验程序
2015-02-09 08:28:34外部中断实验程序