出现的错误如下: 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