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

📄 os_cpu_a.ls1

📁 移植UCOS2.00版内核到8051
💻 LS1
📖 第 1 页 / 共 4 页
字号:
0044 A807            276             MOV     R0,AR7
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/23/2007 17:47:44 PAGE     5

0046 E6              277             MOV     A,@R0
0047 120000   F      278             LCALL   ?C?CSTPTR
                     279     ;       STKCount--;
                     280                             ; SOURCE LINE # 110
004A DEF0            281             DJNZ    R6,?C0003
                     282     ;   }while(STKCount!=0);
                     283                             ; SOURCE LINE # 111
                     284     ; 
                     285     ; #if CXBP_OK>0
                     286     ;   UserStkSP++;
                     287                             ; SOURCE LINE # 114
004C 7401            288             MOV     A,#01H
004E 29              289             ADD     A,R1
004F F9              290             MOV     R1,A
0050 E4              291             CLR     A
0051 3A              292             ADDC    A,R2
0052 FA              293             MOV     R2,A
                     294     ;   UserStkSP_tmp=UserStkSP;
                     295                             ; SOURCE LINE # 115
0053 900000   F      296             MOV     DPTR,#UserStkSP_tmp
0056 EB              297             MOV     A,R3
0057 F0              298             MOVX    @DPTR,A
0058 A3              299             INC     DPTR
0059 EA              300             MOV     A,R2
005A F0              301             MOVX    @DPTR,A
005B A3              302             INC     DPTR
005C E9              303             MOV     A,R1
005D F0              304             MOVX    @DPTR,A
                     305     ; #pragma asm
                     306     ;         MOV  R0,#LOW (UserStkSP_tmp)
005E 7800     F      307               MOV  R0,#LOW (UserStkSP_tmp)
                     308     ;         ;MOV  R0,#UserStkSP_tmp
                     309               ;MOV  R0,#UserStkSP_tmp
                     310     ;         ;INC  R0
                     311               ;INC  R0
                     312     ;         ;MOV  DPH,@R0    ;变量 UserStkSP_tmp 在IDATA中
                     313               ;MOV  DPH,@R0    ;变量 UserStkSP_tmp 在IDATA中
                     314     ;         ;INC  R0
                     315               ;INC  R0
                     316     ;         ;MOV  DPL,@R0  
                     317               ;MOV  DPL,@R0  
                     318     ;               
                     319               
                     320     ;         ;保存仿真堆栈指针?C_XBP
                     321               ;保存仿真堆栈指针?C_XBP
                     322     ;         MOV  A,?C_XBP    ;?C_XBP 仿真堆栈指针高8位
0060 E500     F      323               MOV  A,?C_XBP    ;?C_XBP 仿真堆栈指针高8位
                     324     ;         ;MOVX @DPTR,A
                     325               ;MOVX @DPTR,A
                     326     ;         MOVX @R0,A
0062 F2              327               MOVX @R0,A
                     328     ;         INC  R0
0063 08              329               INC  R0
                     330     ;         ;INC  DPTR
                     331               ;INC  DPTR
                     332     ;         MOV  A,?C_XBP+1  ;?C_XBP 仿真堆栈指针低8位
0064 E500     F      333               MOV  A,?C_XBP+1  ;?C_XBP 仿真堆栈指针低8位
                     334     ;         ;MOVX @DPTR,A 
                     335               ;MOVX @DPTR,A 
                     336     ;         MOVX @R0,A  
0066 F2              337               MOVX @R0,A  
                     338     ; #pragma endasm  
                     339     ; #endif                
                     340     ;       OSTaskSwHook();
                     341                             ; SOURCE LINE # 135
0067 120000   F      342             LCALL   _?OSTaskSwHook
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/23/2007 17:47:44 PAGE     6

                     343     ;       
                     344     ; 
                     345     ;       OSTCBCur=OSTCBHighRdy;
                     346                             ; SOURCE LINE # 138
006A 900000   F      347             MOV     DPTR,#OSTCBHighRdy
006D E0              348             MOVX    A,@DPTR
006E F9              349             MOV     R1,A
006F A3              350             INC     DPTR
0070 E0              351             MOVX    A,@DPTR
0071 FA              352             MOV     R2,A
0072 A3              353             INC     DPTR
0073 E0              354             MOVX    A,@DPTR
0074 900000   F      355             MOV     DPTR,#OSTCBCur
0077 C9              356             XCH     A,R1
0078 F0              357             MOVX    @DPTR,A
0079 A3              358             INC     DPTR
007A EA              359             MOV     A,R2
007B F0              360             MOVX    @DPTR,A
007C A3              361             INC     DPTR
007D E9              362             MOV     A,R1
007E F0              363             MOVX    @DPTR,A
                     364     ;       OSPrioCur=OSPrioHighRdy;
                     365                             ; SOURCE LINE # 139
007F 900000   F      366             MOV     DPTR,#OSPrioHighRdy
0082 E0              367             MOVX    A,@DPTR
0083 900000   F      368             MOV     DPTR,#OSPrioCur
0086 F0              369             MOVX    @DPTR,A
                     370     ; 
                     371     ;       UserStkSP=OSTCBCur->OSTCBStkPtr;
                     372                             ; SOURCE LINE # 141
0087 900000   F      373             MOV     DPTR,#OSTCBCur
008A E0              374             MOVX    A,@DPTR
008B FB              375             MOV     R3,A
008C A3              376             INC     DPTR
008D E0              377             MOVX    A,@DPTR
008E FA              378             MOV     R2,A
008F A3              379             INC     DPTR
0090 E0              380             MOVX    A,@DPTR
0091 F9              381             MOV     R1,A
0092 120000   F      382             LCALL   ?C?PLDPTR
                     383     ;       SysStkSP=UserSysSP_Start;               
                     384                             ; SOURCE LINE # 142
0095 AF00     F      385             MOV     R7,UserSysSP_Start
                     386     ;       STKCount=*UserStkSP;
                     387                             ; SOURCE LINE # 143
0097 120000   F      388             LCALL   ?C?CLDPTR
009A FE              389             MOV     R6,A
                     390     ;       
                     391     ;       SP=UserSysSP_Start+STKCount;
                     392                             ; SOURCE LINE # 145
009B 2500     F      393             ADD     A,UserSysSP_Start
009D F581            394             MOV     SP,A
009F                 395     ?C0006:
                     396     ;       
                     397     ;       do{
                     398                             ; SOURCE LINE # 147
                     399     ;               UserStkSP++;
                     400                             ; SOURCE LINE # 148
009F 7401            401             MOV     A,#01H
00A1 29              402             ADD     A,R1
00A2 F9              403             MOV     R1,A
00A3 E4              404             CLR     A
00A4 3A              405             ADDC    A,R2
00A5 FA              406             MOV     R2,A
                     407     ;               SysStkSP++;
                     408                             ; SOURCE LINE # 149
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/23/2007 17:47:44 PAGE     7

00A6 0F              409             INC     R7
                     410     ;               *SysStkSP=*UserStkSP;
                     411                             ; SOURCE LINE # 150
00A7 120000   F      412             LCALL   ?C?CLDPTR
00AA A807            413             MOV     R0,AR7
00AC F6              414             MOV     @R0,A
                     415     ;     STKCount--;
                     416                             ; SOURCE LINE # 151
00AD DEF0            417             DJNZ    R6,?C0006
                     418     ;   }while(STKCount!=0);
                     419                             ; SOURCE LINE # 152
                     420     ;   
                     421     ; #if CXBP_OK>0 
                     422     ;   UserStkSP++;
                     423                             ; SOURCE LINE # 155
00AF 7401            424             MOV     A,#01H
00B1 29              425             ADD     A,R1
00B2 F9              426             MOV     R1,A
00B3 E4              427             CLR     A
00B4 3A              428             ADDC    A,R2
00B5 FA              429             MOV     R2,A
                     430     ;   UserStkSP_tmp=UserStkSP;
                     431                             ; SOURCE LINE # 156
00B6 900000   F      432             MOV     DPTR,#UserStkSP_tmp
00B9 EB              433             MOV     A,R3
00BA F0              434             MOVX    @DPTR,A
00BB A3              435             INC     DPTR
00BC EA              436             MOV     A,R2
00BD F0              437             MOVX    @DPTR,A
00BE A3              438             INC     DPTR
00BF E9              439             MOV     A,R1
00C0 F0              440             MOVX    @DPTR,A
                     441     ; #pragma asm
                     442     ;         MOV  R0,#LOW (UserStkSP_tmp)
00C1 7800     F      443               MOV  R0,#LOW (UserStkSP_tmp)
                     444     ;         ;MOV  R0,#UserStkSP_tmp
                     445               ;MOV  R0,#UserStkSP_tmp
                     446     ;         ;INC  R0
                     447               ;INC  R0
                     448     ;         ;MOV  DPH,@R0    ;变量UserStkSP在IDATA中
                     449               ;MOV  DPH,@R0    ;变量UserStkSP在IDATA中
                     450     ;         ;INC  R0
                     451               ;INC  R0
                     452     ;         ;MOV  DPL,@R0  
                     453               ;MOV  DPL,@R0  
                     454     ;               
                     455               
                     456     ;         ;MOVX A,@DPTR
                     457               ;MOVX A,@DPTR
                     458     ;         MOVX A,@R0
00C3 E2              459               MOVX A,@R0
                     460     ;         MOV  ?C_XBP,A    ;?C_XBP 仿真堆栈指针高8位
00C4 F500     F      461               MOV  ?C_XBP,A    ;?C_XBP 仿真堆栈指针高8位
                     462     ;         ;INC  DPTR
                     463               ;INC  DPTR
                     464     ;         INC  R0
00C6 08              465               INC  R0
                     466     ;         ;MOVX A,@DPTR
                     467               ;MOVX A,@DPTR
                     468     ;         MOVX A,@R0
00C7 E2              469               MOVX A,@R0
                     470     ;         MOV  ?C_XBP+1,A  ;?C_XBP 仿真堆栈指针低8位
00C8 F500     F      471               MOV  ?C_XBP+1,A  ;?C_XBP 仿真堆栈指针低8位
                     472     ; #pragma endasm
                     473     ; #endif
                     474     ; 
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/23/2007 17:47:44 PAGE     8

                     475     ; #pragma asm
                     476     ;  POPALL
                     477               POPALL
                     501     ;  RETI
00EC 32              502               RETI
                     503     ; #pragma endasm                
                     504     ;   
                     505     ; }
                     506                             ; SOURCE LINE # 181
00ED 22              507             RET     
                     508     ; END OF OSCtxSw
                     509     
----                 510     CSEG    AT      0000BH
000B 020000   F      511             LJMP    OSTickISR
                     512     
                     513     ; 
                     514     ; void OSTickISR(void) interrupt 1
                     515     
----                 516             RSEG  ?PR?OSTickISR?OS_CPU_A
                     517             USING   0
0000                 518     OSTickISR:
0000 C0E0            519             PUSH    ACC
0002 C0F0            520             PUSH    B
0004 C083            521             PUSH    DPH
0006 C082            522             PUSH    DPL
0008 C0D0            523             PUSH    PSW
000A 75D000          524             MOV     PSW,#00H
000D C000            525             PUSH    AR0
000F C001            526             PUSH    AR1
0011 C002            527             PUSH    AR2
0013 C003            528             PUSH    AR3
0015 C004            529             PUSH    AR4
0017 C005            530             PUSH    AR5
0019 C006            531             PUSH    AR6
001B C007            532             PUSH    AR7
                     533             USING   0
                     534                             ; SOURCE LINE # 183
                     535     ; {
                     536     ; /*    OS_STK idata *SysStkSP;
                     537     ;       OS_STK *UserStkSP;
                     538     ;       INT8U  STKCount;*/
                     539     ; 
                     540     ;       TR0=0;
                     541                             ; SOURCE LINE # 189
001D C28C            542             CLR     TR0
                     543     ;       TH0=0x70;
                     544                             ; SOURCE LINE # 190
001F 758C70          545             MOV     TH0,#070H
                     546     ;       TL0=0x00;
                     547                             ; SOURCE LINE # 191
0022 758A00          548             MOV     TL0,#00H
                     549     ;       TR0 = 1;
                     550                             ; SOURCE LINE # 192
0025 D28C            551             SETB    TR0
                     552     ;       
                     553     ;       OSIntEnter();
                     554                             ; SOURCE LINE # 194
0027 120000   F      555             LCALL   _?OSIntEnter
                     556     ; /*    if (OSIntNesting == 1)
                     557     ;       {
                     558     ;   SysStkSP=UserSysSP_Start;
                     559     ;   STKCount=SP-UserSysSP_Start;
                     560     ;   UserStkSP=OSTCBCur->OSTCBStkPtr;

⌨️ 快捷键说明

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