51单片机写个程序,好像在中断里面出不来了,主程序只运行了一部分,之后一直在中断里面运行

2024年11月27日 14:41
有5个网友回答
网友(1):

跟我之前一样,对中断,定时器了解的不够透彻,被老师训了之后查资料搞实验后终于搞清楚了,下面说说我的看法:千万不要在中断函数中做多余的事!!!只能做最基本的操作,比如置标志位,让一个数加一等,与延时有关的操作千万不要做!你10ms进一次中断,在里面又扫描按键,又显示液晶,这里面花的时间远远地超过10ms,它肯定死在中断里出不来啊,因为你不关闭中断的话它一直10ms进去,最好在中断里设置几个标志位,进中断就让标志位置1,然后出中断,在主循环里判断标志位,如果标志位置1了,就清零标志位,然后做其他的动作。好好想一想,思路一定要清晰!

网友(2):

您这???把中断当成主程序了呢???中断的时间不宜太长,栈会溢出的,中断好比程序给你一个碗用来盛多余的水,结果你把整个水库的水都倒碗里,那岂不是就完蛋了吗?
其次,检查一下自己清标志位是不是写成了:XX==0;(哈哈哈cao我刚刚就这么写的,程序还没报错。)

网友(3):

如果真如你所说,那么问题出在keyscan()函数。

网友(4):

开中断以后,在中断服务子程序中设置一个中断次数计数器,统计达到2次后
中断次数计数器清0,然后再把莫寄存器加一。

网友(5):

原创,有的。