为什么两次调用__asm__ __volatile__("POP R31 \n\t&qu
//从中断退出并进行调度void IntSwitch(void)
{
//当中断无嵌套,并且没有在切换任务的过程中,直接进行任务切换
if(OSCoreState == 0x02 && IntNum==0)
{
//进入中断时,已经保存了SREG和R0,R1,R18~R27,R30,R31
__asm__ __volatile__("POPR31 \n\t");//去除因调用子程序而入栈的PC
__asm__ __volatile__("POPR31 \n\t");
__asm__ __volatile__("LDIR16,0x01 \n\t");
//清除中断要求任务切换的标志位,设置正在任务切换标志位
__asm__ __volatile__("RJMP Int_OSSched \n\t");//重新调度
}
}
这程序中为什么会两次有POP R31?R31有什么作用?是保存子程序的返回地址吗?可以具体说一下AVR的R28、R29的作用吗,谢啦。 哈哈。。。自己看完small RTOS后终于知道啦。。。 LZ可以解释一下吗? 回复【楼主位】wudean 德仔
-----------------------------------------------------------------------
你看的是那一个small RTOS,是AVR的还是51的呢?谢谢
页:
[1]