|
编译器总是警告在时间中断函数 timer1_compa_isr 的嵌入汇编 无法认出 OSIntExitTo
extern void OSIntExitTo(void);
#pragma vector=TIMER1_COMPA_vect //2.5ms自动reload
__interrupt void timer1_compa_isr(void)
{
if(LED0) LED0=0;
else LED0=1;
++OSIntNesting;
//通过一下的这句嵌入汇编实现中断的跳转到一个汇编程序中 OSIntExitTo
asm(
"ST -Y,R16 \n"
"LDI R16, LOW(OSIntExitTo/2) \n"
"PUSH R16 \n"
"LDI R16, (OSIntExitTo/2) >> 8 \n"
"PUSH R16 \n"
"LD R16,Y+ \n"
);
}
OSIntExitTo: ;中断返回跳转到这里
PUSHRS ;保存寄存器
PUSHSREG ;保存SREG寄存器
PUSHSP
RCALL OSIntExit ; Notify uC/OS-II about end of ISR
POPSP ; Restore stack pointer
POPSREG ; Restore status register
POPRS ; Restore all registers
RET ; Start task |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|