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

📄 os_cpu_a.lst

📁 该程序是ucosii在51单片机上的移置
💻 LST
📖 第 1 页 / 共 3 页
字号:
                     187             POP   DPH
                     188             POP   B
                     189             POP   ACC
                     190             POP   PSW
A51 MACRO ASSEMBLER  OS_CPU_A                                                             02/21/2006 13:52:53 PAGE     4

                     191             ENDM 
                     192     ;//----------------------------------------------------------------
----                 193             RSEG  ?PR?OSStartHighRdy?OS_CPU_A
0000                 194     OSStartHighRdy:
                     195             USING   0
0000 C2AF            196             CLR   EA
0002 120000   F      197             LCALL   OSTaskSwHook
0005 858100   F      198             MOV   STKStart,SP
0008                 199     _OSStartHighRdyGet:     
                     200             ;//------------------------------------------
                     201             ;// load the low byte of address of (name)
                     202             ;// and load the TCB of OSTCBHighRdy to DPTR
0008 7800     F      203             MOV   R0,#LOW  (OSTCBCur)
000A 08              204             INC   R0
000B 8683            205             MOV   DPH,@R0
000D 08              206             INC   R0
000E 8682            207             MOV   DPL,@R0
                     208             
                     209             ;//------------------------------------------
                     210             ;// get the STK of OSTCBCur task TCB
0010 A3              211             INC   DPTR
0011 E0              212             MOVX  A, @DPTR
0012 F9              213             MOV   R1,A
0013 A3              214             INC   DPTR
0014 E0              215             MOVX  A, @DPTR
0015 F8              216             MOV   R0,A
0016 8983            217             MOV   DPH, R1
0018 8882            218             MOV   DPL, R0
                     219             
                     220             ;//------------------------------------------
                     221             ;// DPTR --> STK of task
001A A3              222             INC   DPTR
001B E0              223             MOVX  A, @DPTR
001C FD              224             MOV   R5,A
                     225     
                     226             ;//------------------------------------------
                     227             ;// copy user to system
001D A900     F      228             MOV   R1, STKStart
001F 19              229             DEC   R1
0020 ED              230             MOV   A, R5
0021 FC              231             MOV   R4, A
                     232             ;MOV   R4,#2   ;调试加的
0022                 233     COPY_STK:
0022 A3              234             INC   DPTR
0023 09              235             INC   R1
0024 E0              236             MOVX  A, @DPTR
0025 F7              237             MOV   @R1, A
0026 DCFA            238             DJNZ  R4, COPY_STK
                     239             
                     240             ;//------------------------------------------
                     241             ;// OSRunning = 1; multitask start
0028 7800     F      242             MOV  R0, #LOW(OSRunning)
002A 7601            243             MOV  @R0,#01
                     244             
                     245             ;//------------------------------------------
                     246             ;// Now R1 is the new task SP   
002C 8981            247             MOV  SP, R1
                     248             PopAll
0056 D2AF            273             SETB  EA
0058 32              274             RETI    
                     275     
                     276     
                     277     ;//----------------------------------------------------------------     
                     278     
                     279     ;//----------------------------------------------------------------
----                 280             RSEG  ?PR?OSCtxSw?OS_CPU_A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             02/21/2006 13:52:53 PAGE     5

0000                 281     OSCtxSw:
0000 C2AF            282             CLR  EA
                     283             PushAll 
002A                 309     OSCtxSw2:       
                     310             ;//------------------------------------------
                     311             ;// SP - STKStart ===> R5
002A E581            312             MOV   A, SP
002C C3              313             CLR   C
002D 9500     F      314             SUBB  A, STKStart
002F FD              315             MOV   R5,A
0030 A900     F      316             MOV   R1,STKStart 
0032 ED              317             MOV   A, R5
0033 2401            318             ADD   A, #01
0035 FD              319             MOV   R5,A
                     320             
                     321             ;//------------------------------------------
0036 850083   F      322             MOV   DPH, User_SP
0039 850082   F      323             MOV   DPL, User_SP+1
                     324             
                     325             ;//------------------------------------------
                     326             ;// DPTR - R5
003C E582            327             MOV   A, DPL    ; Adjust the xstack pointer
003E C3              328             CLR   C
003F 9D              329             SUBB  A, R5
0040 F582            330             MOV   DPL,A
0042 E583            331             MOV   A,  DPH
0044 9400            332             SUBB  A,  #00H
0046 F583            333             MOV   DPH,A
                     334             
                     335             ;//------------------------------------------
                     336             ;// User_SP ===> DPTR
0048 858300   F      337             MOV User_SP,   DPH
004B 858200   F      338             MOV User_SP+1, DPL
                     339     
004E A3              340             INC   DPTR
                     341             
                     342             ;//------------------------------------------
                     343             ;// Save the number of bytes saved
004F ED              344             MOV  A, R5      
0050 F0              345             MOVX @DPTR,A
                     346             
                     347             ;//------------------------------------------
                     348             ;// Save to user stk
0051 ED              349             MOV A, R5
0052 FC              350             MOV R4,A
0053 19              351             DEC R1
0054                 352     SAVE_STK:
0054 A3              353             INC   DPTR
0055 09              354             INC   R1
0056 E7              355             MOV   A, @R1
0057 F0              356             MOVX  @DPTR, A
0058 DCFA            357             DJNZ  R4, SAVE_STK
                     358             
                     359             ;//------------------------------------------
005A 7800     F      360             MOV   R0,#LOW(OSTCBCur)
005C 08              361             INC   R0
005D 8683            362             MOV   DPH,@R0
005F 08              363             INC   R0
0060 8682            364             MOV   DPL,@R0
                     365             
0062 A3              366             INC   DPTR
0063 E500     F      367             MOV   A,User_SP
0065 F0              368             MOVX  @DPTR,A
0066 A3              369             INC   DPTR
0067 E500     F      370             MOV   A,User_SP+1
0069 F0              371             MOVX  @DPTR,A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             02/21/2006 13:52:53 PAGE     6

                     372             
                     373             ;//------------------------------------------   
006A 120000   F      374             LCALL OSTaskSwHook
006D 120000   F      375             LCALL OSTCBSWHook
0070 020000   F      376             LJMP _OSStartHighRdyGet
                     377             ;//------------------------------------------
                     378             
                     379     ;//----------------------------------------------------------------
                     380     
                     381     ;//----------------------------------------------------------------
----                 382             RSEG  ?PR?OSIntCtxSw?OS_CPU_A
0000                 383     OSIntCtxSw:
                     384             ;//------------------------------------------
                     385             ;// Adjust the stack pointer to remove call to:
                     386             ;//   - call to OSIntExit  (2 bytes)
                     387             ;//   - call to OSIntCtxSw (2 bytes)
                     388             ;//   - locals             (0 bytes)
0000 C2AF            389             CLR     EA
0002 E581            390             MOV     A, SP
0004 C3              391             CLR     C
0005 9404            392             SUBB    A, #4
0007 F581            393             MOV     SP,A
0009 020000   F      394             LJMP    OSCtxSw2
                     395     ;//----------------------------------------------------------------
                     396     
                     397     ;//----------------------------------------------------------------
----                 398     CSEG    AT      0000BH
000B 020000   F      399             LJMP    OSTickISR
                     400     
----                 401             RSEG  ?PR?OSTickISR?OS_CPU_A
0000                 402     OSTickISR:
                     403             USING 0
                     404             PushAll
0028 C2AF            430             CLR    EA       
002A C28C            431             CLR    TR0
002C 758C3C          432             MOV    TH0,#3CH
002F 758AB0          433             MOV    TL0,#0B0H
0032 D28C            434             SETB   TR0
                     435             
0034 D5000F   F      436             DJNZ   TickTimeInit,OSTI_1
0037 120000   F      437             LCALL  TickTime
003A 120000   F      438             LCALL  OSTickISRHook
003D 120000   F      439             LCALL  OSIntEnter
0040 120000   F      440             LCALL  OSTimeTick
0043 120000   F      441             LCALL  OSIntExit
                     442         
0046                 443     OSTI_1: 
                     444             PopAll
006E D2AF            469             SETB  EA
0070 32              470             RETI 
                     471     ;//----------------------------------------------------------------
                     472     ;//---------------------------------------------------------------- 
----                 473     CSEG    AT      00003H
0003 020000   F      474             LJMP    Extern_0_ISR
----                 475             RSEG    ?PR?_EXTERN_0_ISR_?OS_CPU_A 
0000                 476     Extern_0_ISR:
                     477             USING   0

⌨️ 快捷键说明

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