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

📄 os_cpu_a.lst

📁 keil的开发环境,把uc/osii操作系统移植到51单片机上,0错误、0警告
💻 LST
📖 第 1 页 / 共 3 页
字号:
                     187             POP   DPL
                     188             POP   B
                     189             POP   ACC
                     190             POP   PSW
A51 MACRO ASSEMBLER  OS_CPU_A                                                             05/10/2005 00:01:35 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
0022                 232     COPY_STK:
0022 A3              233             INC   DPTR
0023 09              234             INC   R1
0024 E0              235             MOVX  A, @DPTR
0025 F7              236             MOV   @R1, A
0026 DCFA            237             DJNZ  R4, COPY_STK
                     238             
                     239             ;//------------------------------------------
                     240             ;// OSRunning = 1; multitask start
0028 7800     F      241             MOV  R0, #LOW(OSRunning)
002A 7601            242             MOV  @R0,#01
                     243             
                     244             ;//------------------------------------------
                     245             ;// Now R1 is the new task SP   
002C 8981            246             MOV  SP, R1
                     247             PopAll
0056 D2AF            272             SETB  EA
0058 32              273             RETI    
                     274     
                     275     
                     276     ;//----------------------------------------------------------------     
                     277     
                     278     ;//----------------------------------------------------------------
----                 279             RSEG  ?PR?OSCtxSw?OS_CPU_A
0000                 280     OSCtxSw:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             05/10/2005 00:01:35 PAGE     5

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

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

⌨️ 快捷键说明

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