原创 基于51单片机的实时操作系统的研究(十)

2010-6-15 11:14 2064 7 7 分类: MCU/ 嵌入式

基于51单片机的实时操作系统的研究(十)


51操作系统 2009-04-17 14:45:56 阅读138 评论1 字号:



CLR     C


    SUBB    A,OSNextTaskID


    JZ      ?C0011


 


    MOV     R6,A


    MOV     A,#LOW (OSTsakStackBotton)


    ADD     A,OSNextTaskID


    MOV     R1,A   


?C0010:


    INC     R1


    MOV     A,R7


    ADD     A,@R1   


    MOV     @R1,A


    DJNZ    R6,?C0010


 


?C0011:


    MOV         OSTaskID,OSNextTaskID


    DEC  SP


?C0007:


    LJMP   LoadCtx


?C000r:


IF EN_SP2  <> 0


    mov     SP,r2


ENDIF


LJMP    LoadCtx


*************end ********************


 


其中调用的LoadCtx()函数是任务环境的恢复即把调度后将要运行的任务寄存器的内容和堆栈顶的位置进行设置。


程序代码如下:


*********************************


** 函数名称: LoadCtx


**功能描述: 任务环境恢复函数


**输 入: OSTaskID,OSFastSwap


**输 出 :


**全局变量:


*********************************


 


      RSEG  ?PR?LoadCtx?OS_CPU_A


LoadCtx:


      USING  0


        


    POP     Os_Enter_Sum            ;恢复关中断计数器


                                    ;判断是否需要恢复所有寄存器


    MOV     A,OSTaskID


    CJNE    A,#OS_MAX_TASKS,LoadCtx_0


    SJMP    LoadCtx_2


LoadCtx_0:


    MOV     DPTR,#OSMapTbl


#if OS_MAX_TASKS < 9


    MOVC    A,@A+DPTR


    ANL     A,OSFastSwap


#else


    MOV     R6,OSFastSwap


    CLR     C


    SUBB    A,#8


    JNC     LoadCtx_1


    MOV     R6,OSFastSwap + 1


    MOV     A,OSTaskID


LoadCtx_1:


    MOVC    A,@A+DPTR


    ANL     A,R6


#endif


    JNZ     LoadCtx_2


                                    ;恢复寄存器


    POP     7


    POP     6


    POP     5


    POP     4


    POP     3


    POP     2


    POP     1


    POP     0


    POP     PSW


    POP     DPL


    POP     DPH


    POP     B


    POP     ACC


LoadCtx_2:


                                    ;判断是否需要开中断


    INC     Os_Enter_Sum


    djnz    Os_Enter_Sum,LoadCtx_3


    SET_EA                          ;开中断


LoadCtx_3:


    RET


***************end ******************


(未完,待续)


 


http://xky19870905.blog.163.com/blog/static/51855417200931724556782/

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条