⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 os_cpu_a.lst

📁 ucos在51单片机上的小内存模式的初始化过程
💻 LST
📖 第 1 页 / 共 2 页
字号:
004E D0D0            194             POP     PSW
0050 D082            195             POP     DPL
0052 D083            196             POP     DPH
0054 D0F0            197             POP     B
0056 D0E0            198             POP     ACC     ;A is register but ACC is direct ram
                     199     
0058 D2AF            200             SETB    EA      ;after start, enable EA
005A 32              201             RETI
                     202     
                     203     
                     204     
                     205     ;                       --------------------------------------------------
                     206     ;                       --------------------- OSCtxSw() ------------------
                     207     ;                       --------------------------------------------------
                     208     
----                 209             RSEG ?PR?OSCtxSw?OS_CPU_A
0000                 210     OSCtxSw:
                     211     
                     212     ;-----------------
                     213     ; push registers
                     214     ;-----------------
0000 C0E0            215             PUSH    ACC
0002 C0F0            216             PUSH    B
0004 C083            217             PUSH    DPH
0006 C082            218             PUSH    DPL
0008 C0D0            219             PUSH    PSW
000A C000            220             PUSH    00
000C C001            221             PUSH    01
000E C002            222             PUSH    02
0010 C003            223             PUSH    03
0012 C004            224             PUSH    04
0014 C005            225             PUSH    05
0016 C006            226             PUSH    06
0018 C007            227             PUSH    07
                     228     
001A                 229     OSCPUAUniformCtxSw:
                     230     ;assume register is pushed to hardware stack, in the format as discripted at the beginning 
                             of this file
                     231     ;Before jump OSCPUAUniformCtxSw, OSCtxSw or OSIntCtxSw must first push registers to hardwar
                             e stack as this format.
                     232     
                     233     ;----------------------
                     234     ;Get OSTCBCurRdy->OSTCBStkPtr to DPTR
                     235     ;-----------------------
                     236     ;high byte is at low address
                     237     
                     238     ;OSTCBCurRdy to dptr
001A 758300   F      239             MOV     DPH,#HIGH(OSTCBCur)
001D 758200   F      240             MOV     DPL,#LOW (OSTCBCur)
0020 E0              241             MOVX    A,@DPTR
0021 F8              242             MOV     R0,A
0022 A3              243             INC     DPTR
0023 E0              244             MOVX    A,@DPTR
0024 8883            245             MOV     DPH,R0
0026 F582            246             MOV     DPL,A
                     247     
                     248     ;OSTCBStkPtr to dptr
0028 E0              249             MOVX    A,@DPTR
A51 MACRO ASSEMBLER  OS_CPU_A                                                             01/10/2007 09:13:35 PAGE     5

0029 F8              250             MOV     R0,A
002A A3              251             INC     DPTR
002B E0              252             MOVX    A,@DPTR
002C 8883            253             MOV     DPH,R0
002E F582            254             MOV     DPL,A
                     255     
                     256     
                     257     ;--------------------
                     258     ;save stack
                     259     ;--------------------
                     260     
                     261     ;store ?C_IBP
0030 E500     F      262             MOV     A,?C_IBP
0032 F0              263             MOVX    @DPTR,A
                     264     
                     265     ;store simulated stack
0033 6008            266             JZ      OSCPUASmltSaveOver      ;simulated stack size == 0, that is A == 0x100
0035 F8              267             MOV     R0,A
0036                 268     OSCPUASmltSave:
0036 A3              269             INC     DPTR
0037 E6              270             MOV     A,@R0
0038 F0              271             MOVX    @DPTR,A
0039 08              272             INC     R0
003A B800F9          273             CJNE    R0,#0,OSCPUASmltSave
003D                 274     OSCPUASmltSaveOver:
                     275     
                     276     ;store sp size
003D A3              277             INC     DPTR
003E E581            278             MOV     A,SP
0040 C3              279             CLR     C
0041 9400     F      280             SUBB    A,#StkBottom - 1        
0043 F0              281             MOVX    @DPTR,A
                     282     
                     283     ;store hardware stack and registers
                     284     ;stack top is at high address 
0044 F9              285             MOV     R1,A            ;caluate copy rotation times
0045 7800     F      286             MOV     R0,#StkBottom - 1       ;start of stack defined by keilc system
0047                 287     OSCPUASaveStk:
0047 08              288             INC     R0
0048 A3              289             INC     DPTR
0049 E6              290             MOV     A,@R0
004A F0              291             MOVX    @DPTR,A
004B D9FA            292             DJNZ    R1,OSCPUASaveStk
                     293     
                     294     ;-------------------
                     295     ;call OSTaskSwHook
                     296     ;-------------------
                     297     
004D 120000   F      298             LCALL _?OSTaskSwHook
                     299     
                     300     ;-------------------
                     301     ; OSTCBCur = OSTCBHighRdy
                     302     ;-------------------
                     303             
0050 758300   F      304             MOV     DPH,#HIGH (OSTCBHighRdy)
0053 758200   F      305             MOV     DPL,#LOW  (OSTCBHighRdy)
0056 E0              306             MOVX    A,@DPTR
0057 FF              307             MOV     R7,A            ;store to R7/R6
0058 A3              308             INC     DPTR
0059 E0              309             MOVX    A,@DPTR
005A FE              310             MOV     R6,A
                     311     
005B 758300   F      312             MOV     DPH,#HIGH (OSTCBCur)
005E 758200   F      313             MOV     DPL,#LOW  (OSTCBCur)
0061 EF              314             MOV     A,R7
0062 F0              315             MOVX    @DPTR,A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             01/10/2007 09:13:35 PAGE     6

0063 EE              316             MOV     A,R6
0064 A3              317             INC     DPTR
0065 F0              318             MOVX    @DPTR,A
                     319     
                     320     ;-----------------
                     321     ; OSPrioCur = OSPrioHighRdy
                     322     ;-----------------
                     323             
0066 758300   F      324             MOV     DPH,#HIGH (OSPrioHighRdy)
0069 758200   F      325             MOV     DPL,#LOW  (OSPrioHighRdy)
006C E0              326             MOVX    A,@DPTR
                     327     
006D 758300   F      328             MOV     DPH,#HIGH (OSPrioCur)
0070 758200   F      329             MOV     DPL,#LOW  (OSPrioCur)
0073 F0              330             MOVX    @DPTR,A
                     331     
                     332     ;-----------------
                     333     ; Restore Ctx
                     334     ;-----------------
0074 020000   F      335             LJMP    OSCPUARstStk
                     336     
                     337     ;                       -------------------------------------------
                     338     ;                       ---------------- OSIntCtxSw ---------------
                     339     ;                       -------------------------------------------
----                 340             RSEG ?PR?OSIntCtxSw?OS_CPU_A
0000                 341     OSIntCtxSw:
                     342     ;------------------
                     343     ; adjust sp: delete stack content of OSIntExit(),OSIntCtxSw(). SP -= 4
                     344     ;------------------
                     345     
0000 E581            346             MOV     A,SP
0002 C3              347             CLR     C
0003 9404            348             SUBB    A,#4
0005 F581            349             MOV     SP,A
                     350     
0007 020000   F      351             LJMP    OSCPUAUniformCtxSw
                     352     
                     353     END
A51 MACRO ASSEMBLER  OS_CPU_A                                                             01/10/2007 09:13:35 PAGE     7

SYMBOL TABLE LISTING
------ ----- -------


N A M E                      T Y P E  V A L U E   ATTRIBUTES

?C_IBP. . . . . . . . . . .  D ADDR   -----       EXT
?PR?OSCTXSW?OS_CPU_A. . . .  C SEG    0077H       REL=UNIT
?PR?OSINTCTXSW?OS_CPU_A . .  C SEG    000AH       REL=UNIT
?PR?OSSTARTHIGHRDY?OS_CPU_A  C SEG    005BH       REL=UNIT
?STACK. . . . . . . . . . .  I SEG    0000H       REL=UNIT
ACC . . . . . . . . . . . .  D ADDR   00E0H   A   
B . . . . . . . . . . . . .  D ADDR   00F0H   A   
DPH . . . . . . . . . . . .  D ADDR   0083H   A   
DPL . . . . . . . . . . . .  D ADDR   0082H   A   
EA. . . . . . . . . . . . .  B ADDR   00A8H.7 A   
OSCPUARSTHARDSTK. . . . . .  C ADDR   0038H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUARSTSTK. . . . . . . .  C ADDR   000BH   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASAVESTK . . . . . . .  C ADDR   0047H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUASMLTRSTOVER . . . . .  C ADDR   0030H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASMLTRSTSTK. . . . . .  C ADDR   002AH   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSCPUASMLTSAVE. . . . . . .  C ADDR   0036H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUASMLTSAVEOVER. . . . .  C ADDR   003DH   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCPUAUNIFORMCTXSW. . . . .  C ADDR   001AH   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSCTXSW . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSINTCTXSW. . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSINTCTXSW?OS_CPU_A
OSPRIOCUR . . . . . . . . .  X ADDR   -----       EXT
OSPRIOHIGHRDY . . . . . . .  X ADDR   -----       EXT
OSRUNNING . . . . . . . . .  X ADDR   -----       EXT
OSSTARTHIGHRDY. . . . . . .  C ADDR   0000H   R   SEG=?PR?OSSTARTHIGHRDY?OS_CPU_A
OSTCBCUR. . . . . . . . . .  X ADDR   -----       EXT
OSTCBHIGHRDY. . . . . . . .  X ADDR   -----       EXT
OS_CPU_A. . . . . . . . . .  N NUMB   -----       
PSW . . . . . . . . . . . .  D ADDR   00D0H   A   
SP. . . . . . . . . . . . .  D ADDR   0081H   A   
STKBOTTOM . . . . . . . . .  I ADDR   0000H   R   SEG=?STACK
TR0 . . . . . . . . . . . .  B ADDR   0088H.4 A   
_?OSTASKSWHOOK. . . . . . .  C ADDR   -----       EXT


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -