XC8编译器不同版本编译结果不同

1 中断函数的描述

1.1 XC8 v1.34版本

中断函数的描述:void interrupt ISR(void)。

1.2 XC8 v2.00以上版本

中断函数的描述:void __interrupt() ISR(void),注:interrupt前是2个下划线。

1.3 总结

在v1.34版本中使用void __interrupt() ISR(void)描述,编译时会出现以下警告信息:
warning: (1429) attribute “interrupt” is not understood by the compiler; this attribute will be ignored。
在v2.00以上版本中使用void interrupt ISR(void)描述,编译时会出现以下错误信息:
error: variable has incomplete type ‘void’ void interrupt ISR(void)
error: expected ‘;’ after top level declarator void interrupt ISR(void)

2 生成不同的Hex文件

相同的源程序,在不同版本的XC8编译器下生成的Hex文件不同。
如下图所示,左边是v1.34编译结果,右边是v2.10编译结果。
XC8编译器不同版本编译结果不同_第1张图片

3 解决不同版本编译问题

在MPLAB工程文件夹nbproject下的configurations.xml文件可以查看编译器的版本信息,languageToolchain是编译器名称,languageToolchainVersion是编译器版本,在重新编译前通过查看工程属性选择正确的编译器及版本。
可以在Microchip官网下载对应版本https://www.microchip.com/development-tools/pic-and-dspic-downloads-archive。

你可能感兴趣的:(PIC单片机,嵌入式)