历史上的今天
今天是:2024年08月23日(星期五)
2021年08月23日 | 51单片机-进一步理解中断函数
2021-08-23 来源:eefocus
1.另一个外部中断
前面两讲都是围绕外部中断0(P3.2的功能)来讲解,这里我们也还有一个外部中断1(P3.3的功能)。P3.3要想实现上一讲的功能只需杜邦线接下面的IO端口即可

代码就是把“EX0”改为“EX1”,“IT0”改为“IT1”。
interrupt后面的0要改为2,函数名我们改为“EXTI1_IRQHandler()”
#include #include void main() { IT1 = 1; //下降沿触发模式 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 while(1); } void EXTI1_IRQHandler() interrupt 2 { LED2=!LED2; } 再次提醒,杜邦线的一头接的是P3.3。 至于interrupt后面的数字为什么要为2,大家先熟悉这张图了解一下先 更多中断知识的概念参考《手把手教你学51单片机》文档6.5节。 2.按键触发中断 我们每次要把P3.2和P3.3外部拉低或释放,都需要拔插杜邦线,这样太麻烦,我们可以用按键来取代这些拔插动作,按键按下不放就相当于一直拉低,跟杜邦线一直插着GND一个效果,松开按键就跟杜邦线没插GND一样。 可是P3.2和P3.3没有直接相连的按键,不过没关系,我们把杜邦线这样接,让P3.3和P2.3一起相连,K4的按键动作可以使P2.3和P3.3同步电平 我们要用到按键,所以别忘了初始化按键模块。 #include #include void main() { IT1 = 1; //下降沿触发模式 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 KEY_Init();//初始化按键功能模块 while(1); } void EXTI1_IRQHandler() interrupt 2 { LED2=!LED2; } 3.去抖动 按键似乎没能很灵敏的按一下松手LED2就跳变一次亮或灭的效果,那是因为我们没有延时消抖,一个按键动作就存在好几个下降沿了,导致中断函数被执行了几遍。 在中断函数中加延时就可以消除这种失灵现象了,不过在以后编程里不能在中断函数里使用延时,这样会使程序的执行效率大打折扣,我们本次只是作为测试代码才在中断函数里用延时。 #include #include void main() { IT1 = 1; //下降沿触发模式 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 KEY_Init();//初始化按键功能模块 while(1); } //请把P3.3和P2.3用杜邦线连接起来 void EXTI1_IRQHandler() interrupt 2 { delay_ms(50);//去抖动 if(INT1==0) //P3.3是否还处于低电平的稳定接触状态,INT1已在“#include { LED2=!LED2; } } 这样就可以达到按下松手一次,LED2的状态只能取反一次的灵敏效果。如果我们一直按着不放,LED2也只是跳变一次而已,有点像不支持连按功能,这是因为“IT1=1;”的原因。 要是改为“IT1=0;”,这样K4按键就有种支持连按的感觉从而LED2就会不停闪烁了。按键按下一直不放就会不停地进入中断函数。 #include #include void main() { IT1 = 0; //低电平状态下触发 EX1 = 1; EA = 1; LED_Init();//初始化LED硬件模块 KEY_Init();//初始化按键功能模块 while(1); } //请把P3.3和P2.3用杜邦线连接起来 void EXTI1_IRQHandler() interrupt 2 { delay_ms(50);//去抖动 if(INT1==0) //P3.3是否还处于低电平的稳定接触状态 { LED2=!LED2; } } 

上一篇:51单片机-中断函数
下一篇:51单片机-中断的实验现象
史海拾趣
|
有谁做过Wince平台上使用的Camera应用程序吗? 功能不需要很强,只要拍个图片,录一段DV就可以了. 我们的驱动已经调试通了,用Wince6.0默认的Windows目录下的CameraDshowApp.exe测试也可以看到一个小图框显示Camera捕获到的动态影像. 现在摄像头(ov7 ...… 查看全部问答> |
|
我现在用的是MPLAB IDE C18编译器,芯片采用的是PIC18F4620,请问: 1、我要在程序中判断RB0引脚是高电平还是低电平,应该怎么引用? 2、如果要给RC0-RC7赋值,一次性赋值,又该怎么引用? … 查看全部问答> |
|
高分求教:vs2003与wince4.2的连接问题,郁闷的不行了 PDA:处理器:Intel XSCALE-Intel(R) PXA255(据说是ARM720,ARMV4I),系统:CE.NET 4.2 通过ActiveSync,EVC可以正常连接和传输,VS2003一直联不上,提示说没有物理连接。 compactFramework1传 ...… 查看全部问答> |
|
我的VS2005是TEAM EDITION,我用PLATFORM生成了一个SDK(***.MSI),无论是默认安装还是安装到VS2005的SMARTDEVICE/SDK目录下面,我都无法在VC++的智能应用程序设备里面看到WINCE5.0 请教这个应该如何解决?… 查看全部问答> |
|
各位前辈 我用的是NIOS II11.0 现在有点问题想麻烦大家看看 我很是纠结啊 我用的是nios ii11.0版本,现在需要自己创建目标板FLASH编程设计,但是我找不到 nios ii sdk shell这项啊 又没法进行啦 求各位的指导了。… 查看全部问答> |
|
恩智浦GreenChip电源IC系列确立低负载下效率和空载待机功耗的新标准 本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 GreenChip SPR TEA1716是业内首款达到EuP Lot 6要求的组合PFC和LLC的转换器 … 查看全部问答> |




