您现在所在的是:

单片机论坛

回帖:6个,阅读:2042 [上一页] [1] [下一页]
925
njcx
文章数:39
年度积分:50
历史总积分:925
注册时间:2008/11/19
发站内信
发表于:2009/2/25 15:06:51
#0楼
请问各位大侠,我的AT89S51的INT0、INT1均设置为下降沿触发,当INT0来了一个下降沿并且一直保持低电平,运行完INT0的中断服务程序后,系统进入掉电模式,然后INT1来一个下降沿将AT89S51唤醒,但是我发现唤醒后不仅INT1的中断服务程序被执行了,INT0的中断服务程序竟然也执行了,这是怎么回事?谢谢!
4670
大名小名
文章数:2553
年度积分:49
历史总积分:4670
注册时间:2008/10/26
发站内信
发表于:2009/2/25 20:25:55
#1楼
你检查一下程序,这样看来多半是程序的问题,重点是INT1的中断服务程序被执行完后那一段。
优秀是一种习惯!
1392
lgx1213
文章数:249
年度积分:50
历史总积分:1392
注册时间:2003/9/4
发站内信
发表于:2009/2/25 21:42:33
#2楼
看看检测后的电平是否保持为低,必须要避开!
全球第一本<单片机技术应用>电子杂志,欢迎免费下载!
WWW.MCU-SYS.COM
925
njcx
文章数:39
年度积分:50
历史总积分:925
注册时间:2008/11/19
发站内信
发表于:2009/2/25 23:50:17
#3楼
本来是这样的:AT89S51平时是掉电的,INT0或INT1的下降沿唤醒CPU。当INT0出现下降沿之后恢复为高电平时,CPU被唤醒,执行完INT0的中断服务程序后,CPU进入掉电状态,这时INT1的下降沿唤醒CPU时,只执行INT1的中断服务程序,这时很正常。
    而如果是INT0出现下降沿后保持为低电平时,CPU被唤醒,执行完INT0的中断服务程序后,CPU进入掉电状态,这时INT1的下降沿唤醒CPU时,先执行INT0的中断服务程序,然后才执行INT1的中断服务程序,这样就太奇怪了,请各位帮我分析一下,谢谢!
1196
hyfzyy198704
文章数:25
年度积分:50
历史总积分:1196
注册时间:2008/7/19
发站内信
发表于:2009/4/8 20:04:11
#4楼
dddddd
833
lw1796
文章数:12
年度积分:50
历史总积分:833
注册时间:2009/3/29
发站内信
发表于:2009/4/19 12:54:59
#5楼
当中断请求同时到达时,通常默认INT0优先于INT1。

        INT0低电平不解除,INT0的请求仍然保持,但并不连续激活,一旦INT1下降沿到来,激活中断请求,这时等同于2个中断同时有效,所以按默认优先次序,先执行INT0后执行INT1。

       解决办法:
       1)及时解除INT0的低电平。

       2) INT0执行中断服务程序之后关闭中断,在INT1中断服务程序结束再开启INT0(这个可以实验一下)。

       3) 建立标志,使INT0不重复执行。


804
lin0119
文章数:1
年度积分:50
历史总积分:804
注册时间:2009/4/19
发站内信
发表于:2009/4/19 20:43:22
#6楼
掉电模式下,只有低电平中断能唤醒CPU,下降沿不能唤醒吧

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004