1
完善资料让更多小伙伴认识你,还能领取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 |
|
|
|
|
|
|
|
|
|
|
|
按键需要消抖处理。不消抖容易误触
|
|
|
|
应该是按键的抖动问题,应该在软件上进行消抖。多次进入了中断,因为速度非常快所以你觉得错了。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
852 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
592 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
705 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
926 浏览 2 评论
657 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12005 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 23:53 , Processed in 0.872599 second(s), Total 85, Slave 69 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号