中断函数的描述:void interrupt ISR(void)。
中断函数的描述:void __interrupt() ISR(void),注:interrupt前是2个下划线。
在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)
相同的源程序,在不同版本的XC8编译器下生成的Hex文件不同。
如下图所示,左边是v1.34编译结果,右边是v2.10编译结果。
在MPLAB工程文件夹nbproject下的configurations.xml文件可以查看编译器的版本信息,languageToolchain是编译器名称,languageToolchainVersion是编译器版本,在重新编译前通过查看工程属性选择正确的编译器及版本。
可以在Microchip官网下载对应版本https://www.microchip.com/development-tools/pic-and-dspic-downloads-archive。