初学PIC,遇到一个小问题。

2020-02-08 09:33发布

我用的PIC16F688 PICC编译器, 为什么我在中断服务程序中和主函数中调用同一个子程序就报错,单独调用都没问题,难到PIC不支持????

报错信息 (原文件名:QQ截图20111026180133.jpg)
主函数和中断函数中都调用了Delay()就出现这个情况。去掉其中一个就没问题,这咋会是呢?各位大虾指点一下。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
18条回答
eduhf_123
2020-02-08 20:31
因为结构以及RAM数量太少的原因,PIC低档8位单片在用C语言写程序时,函数的局部变量实际不是在数据栈上、而是直接放在全局RAM中的,这样当主程序跟中断服务程序调用同一个子程序的时候就会引起潜在的重入问题,所以编译器严格地检测这种问题,一旦检测出来就报错。

如果确实有需要,解决的方法就如2楼所说,重新定义一个副本,分别用于主程序和中断服务程序。


不过如3楼所言,中断中应该尽量避免延时以及需要花很多时间的代码。

一周热门 更多>