PIC程序应注意的地方

2019-04-15 12:56发布

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