设计与开发

单片机外部中断触发方式 4个中断应用实例讲解

小编 2024-11-23 设计与开发 23 0

4个中断应用实例讲解

【例1】 利用单片机的外部中断0响应按键开关的按键信号,当有按键按下时,单片机响应中断,并使内部某变量加1,硬件电路如图4-4所示。

图4-4 单片机外部中断检测按键电路图

C51源程序如下:

提示

将按键电路改为其他传感器电路,如光电传感器检测电路,霍尔传感器检测电路,热释电传感器检测电路等即可实现不同的检测控制功能。

【例2】 2个按健中断控制流水等灯的速度,按健K0用以减慢速度控制,按健K1用以加快速度控制,硬件电路如图4-5所示。

图4-5 流水灯控制电路图

C51源程序如下:

【例3】 利用单片机外部中断即时实现不同方式的流水灯控制,L2开关实现2只灯循环亮,L1开关实现1只灯循环亮,两个控制开关具有不同的优先级别,L2比L1具有更高的优先级。硬件电路如图4-6所示。

C51源程序如下:

图4-6 不同优先级别控制流水灯电路图

【例4】 利用单片机外部中断实现遥控解码。具体功能:通过电视机遥控器向单片机系统板上的一体化红外线接收头发射红外遥控编码信号,由于一体化红外线接收头的输出端与单片机的外部中断0相连,从而触发单片机产生中断,单片机根据红外遥控信号的组成对功能码进行识别,并通过P1口的发光二极管显示该功能码。

单片机与一体化红外接收头HS0038的引脚连接如图4-7所示,单片机与发光二极管的连接可以参照本章之前案例中的硬件电路图,这里省略未画出。

图4-7 HS0038引脚连接图

系统分析如下:

遥控编码脉冲信号通常由引导码、系统码、系统反码、功能码和功能反码组成。引导码由宽度为9ms的高电平和宽度为4.5ms的低电平组成。8位的系统码又称为识别码,主要是为了区分不同的控制系统,防止误动作。8位功能码也称为数据码,其代表相应的控制功能。8位的系统反码和功能反码的加入是为了校对传输过程中产生的差错提高抗干扰性能,遥控编码脉冲信号组成如图4-8所示。

图4-8 遥控编码脉冲信号的组成图

当遥控器上任意一个按键按下超过36ms时,LC7461芯片的振荡器使芯片激活,将发射一个特定的同步码头,对于接收端而言就是一个9ms的低电平,和一个4.5ms的高电平,这个同步码头可以使程序知道从这个同步码头以后可以开始接收数据。

解码的关键是如何识别“0”和“1”,采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”。其串行码波形如图4-9所示。

图4-9 0和1的构成串行码波形图

从上图中可以发现,位“0”、“1”均以0.565ms的高电平开始,不同的是低电平的宽度不同,“0”为0.56ms,“1”为1.685ms,所以可以根据低电平的宽度区别“0”和“1”。如果从0.565ms高电平过后,开始延时,0.56ms以后,若读到的电平为高,说明该位为“0”,反之则为“1”,为了可靠起见,延时必须比0.56ms长些,但又不能超过1.125ms,否则如果该位为“0”,读到的已是下一位的低电平,因此一般取(1.125ms+0.56ms)/2≈0.84ms。

C51源程序如下:

STM32单片机外部中断使用方法,单片机如何快速响应外都信号?

单片机的程序执行正常来说是一条指令接着一条指令的,程序属于顺序执行。这样就会有一个弊端,如果整个循环的程序很长,需要执行的时间比较久时,这里举个例子,执行完成一次循环的程序需要2秒,如果外部来了一个信号,这个信号的持续时间只有20毫秒,如果这个时候仍然使用查询的方式来检查是否有外部信号就会可能遗漏。

所以说,单片机检测外部信号一般需要使用中断,使用中断的好处:

1、实时性强,有外部信号立马能响应;

2、不会出现遗漏信号导致没有检测到的情况。

有人说,要想单片机玩得好,中断必须用得好。不错,也确实如此,中断是单片机的精髓。

那么,STM32的外部中断该怎样使用呢?

首先,STM32的每一个引脚都是可以配置成为中断输入引脚的,STM32F1系列支持16个外部中断,每个中断设有独立的状态位、触发和屏蔽设置。也许你会奇怪,STM32引脚最少的单片机也不止16个引脚啊,为什么只有16个外部中断呢?

可以看到,每个中断线管着7个引脚,就拿中断线 0 来说:它对应了 GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、 GPIOE.0、GPIOF.0、GPIOG.0。中断线每次只能连接到 1 个 IO 口上,所以需要通过配置来决定对应的中断线配置到哪个 GPIO 。

单片机引脚的触发方式分为三种:上升沿触发,下降沿触发,上升下降沿触发。

程序的实现步骤:

1、配置GPIO,需要设置成中断的引脚设为输入;

2、开启AFIO时钟;

3、设置IO口的中断映射关系;

4、初始化中断,配置中断是上升沿还是下降沿及其他设置;

5、配置中断分组;

6、使能中断;

7、中断服务函数编写。

其他事项:

需要注意的是,中断线5到9是共用同一个中断服务函数EXTI9_5_IRQHandler

中断线10到15是共用同一个中断服务函数EXTI15_10_IRQHandler

在Keil中,如果你的中断服务函数写错了编译器并不会报错,但是中断是无论如何进不去了。

中断优先级共有16级,这些等级是由抢占优先级和子优先级组成;抢占式优先级和子优先级的数量由中断优先级分组决定,比如设置优先级分组为3,那么抢占优先级就有3个bit,子优先级有1个bit,3个bit可以设置抢占优先级为0~7,1bit可以设置子优先级为0~1;数字越小,优先级越高,抢占优先级和子优先级数量相乘为16级分组。具体的分组设置看图。

STM32单片机外部中断使用方法,单片机如何快速响应外都信号?

中断分组设置表

如果两个中断抢占优先级一样,哪个中断先发生就先执行哪个;抢占式优先级高的可以打断抢占式优先级低的,同级的抢占式优先级不能互相打断。

致芯科技拥有一批专业的科研人才,大量资金被运用到芯片解密、PCB抄板、高速PCB设计物料代采购、SMT/OEM/ODM代工代料、软硬件二次开发、样机制作等一条龙服务。因此有需要芯片解密的业务都可以找致芯科技前来合作。

相关问答

51 单片机外部中断触发方式 区别?

51单片机外部中断触发方式方式不同区别为1、电平触发方式:外部中断申请触发器的状态随着CPU在每个机器周期采样到的外部中断输入线的电平变化而变化。2、跳...

MCS-51 单片机外部中断 触发方式 如何设定和选择?

1、打开KeilμVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并添加STARTUP.A51文件,然后在当前目录下新建一个C...

单片机外部中断 怎么使用?

1、单片机有两个外部中断,两个定时器/计数器,两个外部中断分别是int0,int1。2、定时器/计数器分别是t0,t1,还有一个串口中断TI/RI,加起来有五个中断。3、...

" 单片机外部中断 0由数据信号线的下降沿 触发 "是什么意思?

以单片机引脚输入中断为例:边沿触发,只会在电平变化时出现一次中断。电平触发,只要电平为触发电平,会一直触发中断,即使清零了,还会再次进入。以单片机引脚输...

x05B、 外部中断 C、串口 中断 \x05\x05D、都需要2、 单片机 程...

[最佳回答]1、在MCS-51单片机中,需要软件实现中断撤销的是(A).A、定时器T中断\x09\x09B、外部中断C、串口中断\x09\x09D、都需要2、单片机程序存储器的寻址...

单片机外部中断 0和外部中断1?

呵呵,前面几位网友,回答都是错的。网友说:外部中断0优先级高于外部中断1同优先级情况下,外部中断0还是会比的外部中断1更优先;都是不对的。。...呵呵,前...

单片机 怎么检测 外部 信号?

方法一:可以先把信号通过比较器,把信号变成方波信号。然后利用单片机的外部中断。比如说把单片机设为上升沿触发,没触发一次记录下定时器数值。二次记录间的时...

INT1采用边沿 触发方式 ,且INT0为 中断 优先级为高级_作业帮

[最佳回答]voidINT_init()//初始化{\x05IT0=0;//外部中断0低电平触发\x05IT1=1;//外部中断1低电平触发\x05PX0=1;//外部中断0分配高优先级\x05PX...

PIC 单片机 外部中断 什么意思?

在PIC16系列单片机中,除TMR0,INT和RB电平变化中断外的其他中断,均称为外设中断,如AD转换结束中断,TMR1中断等,都属于外设中断。外部中断,只有指定的某几...

51 单片机 有几个 外部中断 ?

51单片机有两个外部中断。它们分别是0、外部中断1。分别由单片机的12号引脚(INT0/P3.2)、13号(INT1/P3.3)引脚的低电平/负跳变触发。中断是指计算机运行过程...

猜你喜欢