现在的位置: 首页 > 综合 > 正文

PIC程序应注意的地方

2019年03月26日 ⁄ 综合 ⁄ 共 863字 ⁄ 字号 评论关闭

http://zhidao.baidu.com/link?url=fyAH_esvCoN7Hs7wcsSQ4Te3wOlj6XjAH8VfBSmz8aj1t5mpRTrMqqAzBGYW_crm61G5U5iZzdhac8cHRW3b6_

出现的错误如下:
Error[000]   : function _write_com appears in multiple call graphs: rooted at _UART_IRQ and _main
Error[000]   : function _delay_ms appears in multiple call graphs: rooted at _UART_IRQ and _main
Error[000]   : function _delay_ms appears in multiple call graphs: rooted at _UART_IRQ and _main
BUILD FAILED: Thu Jan 13 13:51:54 2011
这是什么意思,可能是什么原因导致出现这样的错误呢?

答案:

函数_write_com和_delay_ms在中断和主程序中都有调用,会导致混合调用。
英文写的很明白了,会上网就不会查英文单词吗?还是不知道什么是混合调用。
比如你主程序调用_delay_ms做100ms延时,正在做循环延时,结果一个中断进来,中断处理程序也调用了_delay_ms,结果就是_delay_ms原有的数据冲掉,从头再来,这次执行是对的。等中断处理完,再执行走到一半的_delay_ms程序,因为数据被冲掉了,天知道是什么结果。
用的是PIC的C语言吧?不好好看书,PIC的C语言最不灵光的(之一)就是程序的混合调用。资源不够啊!
其它单片机看编译器,有的也会报错,有的会很聪明(比如KEIL)的知道要保护原始数据,在中断里帮你保护了。

PIC头文件路径:   C:\Program Files\HI-TECH Software\PICC\std\9.60\include

PIC汇编文件路径:  C:\Program Files\Microchip\MPASM Suite

抱歉!评论已关闭.