在 mplab xc8 IDE 中使用 ei() 与 AVR 汇编器 sei() 一样安全吗?

In mplab xc8 IDE Is it safe use ei() the same way as the AVR Assembler sei()?

鉴于: http://ww1.microchip.com/downloads/en/DeviceDoc/MPLAB_XC8_C_Compiler_User_Guide.pdf XC8的ei(); // 启用全局中断

XC8的di(); // 禁用全局中断

AVR 的 sei() http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_SEI.html

AVR 的 cli() http://www.atmel.com/webdoc/avrassembler/avrassembler.wb_CLI.html

那么可以说 ei() == sei() && di() == cli() 并且在切换平台时可以互换使用吗?

这是关于两个芯片上的中断系统的非常笼统的陈述。他们在很多方面都非常不同。

也就是说,是的,宏设置和清除状态寄存器中的单个位,因此宏的操作方式相同。

A​​tmega如何通过XC8设置中断?我读 MPLAB_XC8_C_Compiler_User_Guide_for_AVR.

中断函数的示例如下所示。

void __interrupt(SPI_STC_vect_num) spi_Isr(void) {    
//I coment this: process(SPI_SlaveReceive());  
return;
}

错误

../main.c:10:18: error: expected declaration specifiers or '...' before numeric constant
                 from ../main.h:3,
 void __interrupt(SPI_STC_vect_num) spi_Isr(void) {