求教:在UCOS的OSStartHighRdy函数如下:
void OSStartHighRdy(void)
{
asm
{
CALL OSTaskSwHook
ldx OSTCBCur
lds 0,x
INC OSRunning
pula
staa $30
nop
nop
nop
rti
}
}
设想的程序执行时应该先更改PPAGE到任务所放的页面,然后通过RTI弹出寄存器及PC的值。然而实际上刚更改完PPAGE的值,PC就已经指向任务页面了,根本没有执行RTI指令,因而PC值并没有得到改变,系统得到了一个根本没有程序语句的PC值,(LDS 0XFF),结果程序跑飞了,请问各位有什么好的办法。我在相关的UCOS书里看见这个函数都是这么写的,而我用起来就出现这样的问题,真是郁闷…… |