(八)外部中断的设计与应用 02 中断优先级嵌套设计

仿真电路图:

参考代码:

 1 #include<reg52.h>
 2 #define uchar8 unsigned char
 3 #define uint16 unsigned int
 4
 5 /*****************************/
 6 // 函数名称: DelayMS( )
 7 // 函数功能: 延时
 8 // 入口函数: 延时毫秒
 9 // 出口函数: 无
10 /*************************                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              *******************/
11 void delay(uint16 val)
12 {
13        uint16  i,j;
14        for( i=0;i<val;i++)
15            for(j=0;j<113;j++);
16
17 }
18
19
20 void tx_init()    // 中断系统初始化函数
21 {
22     EA=1;
23     PX0=1;         // 外中断0 为 高优先级
24     PX1=0;         // 外中断1 为 低优先级
25
26
27     EX0=1;         // 允许外部中断
28     IT0=1;         // 外中断0跳沿触发
29     EX1=1;         // 同上
30     IT1=1;
31
32 }
33
34 void main()
35 {
36     tx_init();
37     P1=0x00;
38     while(1)
39     {
40       delay(1000);
41       P1=~P1;
42     }
43 }
44
45 void tx0_func() interrupt 0     // 外中断0 中断处理函数
46 {
47     uchar8 i;
48     uchar8 code table0[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; // 流水灯 ,一个灯灭,从右往左
49
50     for(i=0;i<7;i++)
51     {
52        P0=table0[i]    ;
53        delay(1000);
54
55     }
56
57     P0=0xff;    // 处理完毕灯全部熄灭
58
59 }
60
61 void tx1_func() interrupt 2     // 外中断1 中断处理函数
62 {
63     uchar8 i;
64     uchar8 code table2[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; // 流水灯一个灯亮,从右往左
65
66     for(i=0;i<7;i++)
67     {
68        P0=table2[i]    ;
69        delay(1000);
70
71     }
72
73     P0=0x00;    // 处理完毕灯全部亮
74
75 }

程序说明, S0 按键 代表 外部中断0,是高优先级

S1 按键 代表 外部中断1, 是低优先级

只能高优先级打断低优先级,所以外中断1 的处理程序可以被 外中断0的处理函数打断,形成中断嵌套。执行完 中断0,还是会返回执行中断1 的。

时间: 2024-07-30 10:10:04

(八)外部中断的设计与应用 02 中断优先级嵌套设计的相关文章

【CC2530入门教程-03】CC2530的中断系统及外部中断应用

第3课  CC2530的中断系统及外部中断应用 广东职业技术学院  欧浩源 一.中断相关的基础概念  内核与外设之间的主要交互方式有两种:轮询和中断. 轮询的方式貌似公平,但实际工作效率很低,且不能及时响应紧急事件:中断系统使得内核具备了应对突发事件的能力. 在执行CPU当前程序时,由于系统中出现了某种急需处理的情况,CPU暂停正在执行的程序,转而去执行另外一段特殊程序来处理出现的紧急事务,处理结束后,CPU自动返回到原来暂停的程序中去继续执行. 这种程序在执行过程中由于外界的原因而被中间打断的

(八)中断、定时器的设计与应用 01 单一外部中断

1. 一 .单一外部中断应用案例 参考代码外部中断0 代码: 1 #include<reg52.h> 2 #define uchar8 unsigned char 3 #define uint16 unsigned int 4 5 /*****************************/ 6 // 函数名称: DelayMS( ) 7 // 函数功能: 延时 8 // 入口函数: 延时毫秒 9 // 出口函数: 无 10 /************************* ******

嵌入式02 STM32 外部中断实验

一.中断 由于某个事件的发生,CPU暂停当前正在执行的程序,转而执行处理事件的一个程序.该程序执行完成后,CPU接着执行被暂停的程序.这个过程称为中断.(我正在捉泥鳅,但是我妈喊我回家吃饭,我必须回家吃饭,回家途中,发现泥鳅没带,回去把泥鳅带回家,然后吃完饭继续捉泥鳅!!!) 中断是CPU处理外部突发事件的一个重要技术.引起中断的原因或者说发出中断请求的来源叫做中断源.根据中断源的不同,可以分为硬件中断和软件中断两大类,有了中断,系统可以更好更快的利用有限的系统资源解决系统响应速度和运行效率的一

jz2440裸板开发之:外部中断

实验目的:   利用外部中断的方式,来实现点亮对应的LED 实验原理:中断的最大好处就是让CPU避免了采用查询的方式来处理中断处理程序要干的事,中断的三个必要元素:中断源.中断控制器.中断处理函数.在arm9上有七种异常, (这里把重启也包括在内,另外还有一个reversed,加起来应该有八个,只是这个中断向量地址没有用而已).当中断发生时,CPU会自动跳到中断向量地址处执行程序,由于每个中断向量都只有4字节的地址空间,所以我们经常在此处放一个跳转语句.上面CPU的自动跳转是硬件自动完成的,我们

STM32F4——NVIC中断优先级及外部中断

NVIC中断优先级 一.简介: CM4内核可以支持256个中断,包括16个内核中断和240个外部中断,256级的可编程中断设置.对于STM32F4没有用到CM4内核的所有东西,只是用到了一部分,对于STM32F40和41系列共有92个中断,其中有10个内核中断和82个可屏蔽中断,常用的为82个可屏蔽中断. 二.相关寄存器: ISER[8]-中断使能寄存器组,用来使能中断,每一位控制一个中断,由于上面已经说明了控制82个可屏蔽的中断,因此利用ISER[0~2]这三个32位寄存器就够了.一下的几个寄

STM32学习笔记(九) 外部中断,待机模式和事件唤醒

学会知识只需要不段的积累和提高,但是如何将知识系统的讲解出来就需要深入的认知和系统的了解.外部中断和事件学习难度并不高,不过涉及到STM32的电源控制部分,还是值得认真了解的,在本文中我将以实际代码为例详细讲解这些内容,希望对每一个阅读者有帮助. 1.外部中断 如果已经学习了SysTick系统时钟滴答实验,掌握了Cortex-M3中断的相关知识,那么外部中断也是比较好理解的,和SysTick中断一样,外部中断也是当有信号触发时,如果中断屏蔽寄存器允许触发,就会产生中断,这时CPU查找中断向量表,

STM32F104VG (一)中断与外部中断

一.基础知识 1.ARM的中断优先级分硬件优先级和软件优先级两种 其中软件优先级又由抢占优先级和响应优先级组成 2.中断的优先级采用编号小优先的原则. 3.一般情况: 1).如果设定了软件优先级,先看软件优先级: 具有高抢占式优先级的中断可以在具有低抢占式优先级的中断处理过程中被响应,即中断嵌套,或者说高抢占式优先级的中断可以嵌套低抢占式优先级的中断. 当两个中断源的抢占式优先级相同时,这两个中断将没有嵌套关系,当一个中断到来后,如果正在处理另一个中断,这个后到来的中断就要等到前一个中断处理完之

LPC1788的外部中断和GPIO中断

首先是gpio中断,这一点和1768不同,1768使用的中断时和eint3共用中断通道,到了1788,专门为gpio开辟了中断 #ifndef __JOYPAD_H_ #define __JOYPAD_H_ #include "sys.h" #include "delay.h" #define JOYPAD_A        0X01 #define JOYPAD_B        0X02 #define JOYPAD_C        0X03 #define

ARM中外部中断

在整个ARM体系结构中,为了处理外部中断,依次学习了MMU,模式跳转,异常,GIC,看门狗程序,这些都是为了处理外部中断 具体如下: 处理外部中断有五个步骤: 30      //step 1: cpu cpsr 31       __asm__ __volatile__( 32           "mrs r0, cpsr\n" 33           "bic r0, r0, #0x80\n"//设置CPSR的I位,将IRQ位打开 34