一、关键字
1.1 interrupt&using
sdcc中,中断程序使用的关键字和keil一样:
void timer_isr (void) __interrupt (1) __using (1)
{
...
}
interrupt指定中断号,using指定register bank。
中断程序可以写在任意一个源文件里,但在包含main程序的源文件里,必须要有一份中断程序的声明。
如果使用register bank 0,那么系统会将当前程序用到的寄存器全都保存进堆栈。如果用到其他register bank,那么只会保存类似dptr这样的特殊寄存器。
1.2 critical
critical用于表示一个程序不能被中断打算,sdcc会在运行__critical修饰的程序前保存当前中断使能状态,并关闭所有中断,运行完了之后再打开。
int foo () __critical
{
...
...
}
同样对单独的语句也可以使用