完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
stc12c5a60s2的外部中断 为什么会执行两次外部中断函数???
void Int0_interrupt() interrupt 0 { LED = ~LED; while(Direction_Middle == 0); } 当外部中断触发,LED翻转。等待Direction_Middle == 1时,不是应该跳出中断函数吗? 而现实情况是等到Direction_Middle == 1后,LED再次翻转。这不就是外部中断一次,执行了两次外部中断函数?? 测试程序 #include "stc12c5a60s2.h" ***it LED = P2^3; ***it KEY2 = P2^0; void main() { IT0 = 1; EX0 = 1; EA = 1; LED = 1; while(1); } void INTO_interrupt(void) interrupt 0 { LED = ~LED; while(KEY2 == 1); } 现象:按下KEY1触发外部中断,灯翻转。按下KEY2,灯也跟着翻转,这是为什么?而且有时有翻转有时没有。 |
|
相关推荐
9个回答
|
|
你需要确定是你所说的情况进了两次中断,还是你的中断触发信号有两次,需要看你的电路还有中断的设置
|
|
|
|
只启用了外部中断0和1,可以确定只触发了其中一个,也可以确定只触发了一次。所以就是奇了怪。 |
|
|
|
|
|
你使用外部中断,中断函数里面都不需要while了
|
|
|
|
我做智能小车,外部中断函数中的while是为了使小车转到一定的位置。所以需要使用while |
|
|
|
|
|
|
|
|
|
|
|
按键需要消抖处理。不消抖容易误触
|
|
|
|
应该是按键的抖动问题,应该在软件上进行消抖。多次进入了中断,因为速度非常快所以你觉得错了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
ESP32驱动ST7789触摸屏开发指南:LVGL主题设置与示波器面板
356 浏览 0 评论
ULink2 和keil4 连接显示 SWD通讯失败,硬件在另一台电脑上是可以连接成功的,有没有大佬能帮忙解答一下的
1978 浏览 0 评论
2567 浏览 1 评论
1017 浏览 0 评论
1044 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
13010 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-4-30 06:14 , Processed in 0.614306 second(s), Total 55, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191