[51单片机] 关于在定时器中断里面调用函数的问题

[复制链接]
9190|33
xlsbz 发表于 2014-3-13 21:21 | 显示全部楼层
你把key_deal放到while里面就好了。不要调用。
 楼主| daocaorenchao 发表于 2014-3-14 10:23 | 显示全部楼层
ayb_ice 发表于 2014-3-13 10:52
中断里有时调用函数
pulse_BZ1(3000);
这个函数开销太大,可能会超50MS,会导致中断一退出又进入中断

首先说,代码是在别人能够正常使用的情况下弄过来的,所以代码是能正常使用的,别人也是用中断来访问,正常;其次,说的那个延时,我全部删掉了还是不能正常运行,即使我把中断间隔时间加长,说明这不是关于在处理函数的时候又来中断了这个问题;最后,还是谢谢..
 楼主| daocaorenchao 发表于 2014-3-14 10:23 | 显示全部楼层
xlsbz 发表于 2014-3-13 21:04
我以前理解的关于using的。有空你可以瞅瞅

至于你的其他问题。你自己帮自己吧

谢谢...
 楼主| daocaorenchao 发表于 2014-3-14 10:24 | 显示全部楼层
xlsbz 发表于 2014-3-13 21:21
你把key_deal放到while里面就好了。不要调用。

放到大循环一直没有问题...
ayb_ice 发表于 2014-3-14 11:23 | 显示全部楼层
daocaorenchao 发表于 2014-3-14 10:23
首先说,代码是在别人能够正常使用的情况下弄过来的,所以代码是能正常使用的,别人也是用中断来访问,正 ...

别人能用,你为什么不行呢
xlsbz 发表于 2014-3-15 08:12 来自手机 | 显示全部楼层
重写一个
很忙 发表于 2014-3-15 11:25 | 显示全部楼层
中断里面最好不要用循环。如果中断没有处理完又来中断了那就问题大了。
杰杰21c 发表于 2014-3-15 12:46 | 显示全部楼层
dwh000 发表于 2014-3-12 10:29
以前遇到过这个情况.把自己的经验和理解说说.
c语言中断最好不要切换寄存器工作组,因为中断中很多时候会用 ...

嗯嗯,学习了
杰杰21c 发表于 2014-3-15 12:46 | 显示全部楼层
很忙 发表于 2014-3-15 11:25
中断里面最好不要用循环。如果中断没有处理完又来中断了那就问题大了。

要是死循环就没救了,哈哈
xyz549040622 发表于 2014-3-15 15:33 | 显示全部楼层
一直加一说明你按键判断那里出错了,按一下下方向键后,一直认为是按下的
                         //{
                         return(Key_Down);
                         //pulse_BZ(200,3,5);               
                         numcheck=KEY1;
                         ///while(KEY1=1){;}
不清楚你的逻辑关系,但是第一次见return后面还有语句的。。。这里的Bug吧
xyz549040622 发表于 2014-3-15 15:34 | 显示全部楼层
建议你一直判断下方向按下的函数里放个LED看看,是否是长亮的,估计你那里的问题
oyangsaio 发表于 2014-3-17 12:22 | 显示全部楼层
你中断里面用延时?
有问题呀
 楼主| daocaorenchao 发表于 2014-3-18 13:52 | 显示全部楼层
oyangsaio 发表于 2014-3-17 12:22
你中断里面用延时?
有问题呀

没有问题的,只要把握好,是可以用的,我把函数整合在一起就好了,现在问题应经解决了...谢谢...
123456make 发表于 2016-7-16 09:28 | 显示全部楼层
我也遇到了这样的毛病,不过看了这些回帖学习了,哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部