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 FilesHI-TECH SoftwarePICCstd9.60include
PIC汇编文件路径: C:Program FilesMicrochipMPASM Suite