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

📄 os_cpu_a.lst

📁 一个通过方向判别芯片进行角度计算的程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
                +1   233     
                +1   234     
                +1   235     
                +1   236     
                +1   237     
                +1   238     
                +1   239     
                +1   240     
                +1   241                                                 
                +1   242     
                +1   243     
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE     5

                +1   244     
                +1   245     
                +1   246     
                +1   247     
                +1   248     
                +1   249     
                +1   250     
                +1   251     
                +1   252     
                +1   253     
                +1           
                +1           
                +1   256     
                +1           
                +1           
                +1           
                +1           
                +1           
                +1   262     
                +1   263     
                +1   264     
                     265     
                     266     
                     267     
                             
                             
                     270     
                     271     
                     272     
                     273     
                     274         NAME    OS_CPU_A_ASM
                     275     
                     276     ?PR?OSCtxSw?OS_CPU_A                     SEGMENT CODE
                     277     ?PR?OSIntCtxSw?OS_CPU_A                  SEGMENT CODE
                     278     ?PR?LoadCtx?OS_CPU_A                     SEGMENT CODE
                     279     ?PR?C_OSCtxSw?OS_CPU_A                   SEGMENT CODE 
                     280     ?PR?_OSTaskStkInit?OS_CPU_A              SEGMENT CODE 
                     281     
                     282     
                     283         EXTRN   CODE (OSMapTbl)
                     284         EXTRN   DATA (OSFastSwap)
                     285         EXTRN   DATA (OSTaskID)
                     286         EXTRN   DATA (OSNextTaskID)
                     287         EXTRN   DATA (OSTsakStackBotton)
                     288         EXTRN   DATA (Os_Enter_Sum)
                     289     IF 0  <> 0
                                 EXTRN   IDATA (Sp2)
                             ENDIF
                     292     IF 0 > 0
                                 EXTRN   DATA (?C_XBP)
                             ENDIF
                     295     
                     296         PUBLIC  _OSTaskStkInit
                     297         PUBLIC  LoadCtx
                     298         PUBLIC  OSIntCtxSw
                     299         PUBLIC  OSCtxSw
                     300         PUBLIC  STACK
                     301         PUBLIC  C_OSCtxSw
                     302     
                     303     ;****************************************************************************************
                     304     ;?STACK SEGMENT IDATA
                     305     
                     306     ?STACK      SEGMENT   IDATA
                     307     
----                 308             RSEG    ?STACK
0000                 309     STACK:                                          ;堆栈
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE     6

0000                 310             DS  1
                     311     
                     312     ; /****************************************************************************************
                             *****************
                     313     ; ** 函数名称: OSTaskStkInit
                     314     ; ** 功能描述: 任务堆栈初始化
                     315     ; ** 输 入: 无
                     316     ; ** 输 出 : 无
                     317     ; ** 全局变量: OSTaskID,OSTsakStackBotton,SP
                     318     ; ** 调用模块: LoadCtx
                     319     ; ** 
                     320     ; ** 作 者: 陈明计
                     321     ; ** 日 期: 2002年2月22日
                     322     ; **---------------------------------------------------------------------------------------
                             ----------------
                     323     ; ** 修改人:
                     324     ; ** 日 期:
                     325     ; **---------------------------------------------------------------------------------------
                             ----------------
                     326     ; *****************************************************************************************
                             ***************/
                     327      
----                 328         RSEG  ?PR?_OSTaskStkInit?OS_CPU_A
0000                 329     _OSTaskStkInit:
                     330         USING   0
                     331     ;---- Variable 'cp?147' assigned to Register 'R0' ----
                     332     ;---- Variable 'cp?146' assigned to Register 'R1' ----
                     333     ;---- Variable 'i?145' assigned to Register 'R2' ----
                     334     ;---- Variable 'TaskID?144' assigned to Register 'R3' ----
                     335     ;---- Variable 'ptos?143' assigned to Register 'R4/R5' ----
                     336         
0000 C006            337         PUSH    AR6
0002 C007            338         PUSH    AR7
                     339     ; {
                     340     
                     341     ;         OSFastSwap[0] &= ~OSMapTbl[TaskID];
0004 EB              342         MOV     A,R3
0005 900000   F      343         MOV     DPTR,#OSMapTbl
0008 93              344         MOVC    A,@A+DPTR
0009 4200     F      345         ORL     OSFastSwap,A
                             
                             
                                 
                                 
                                 
                                 
                                 
                             
                             
                                 
                                 
                                 
                             
                                 
                             
                             
                             
                             
                                 
                                 
                                 
                                 
                             
                             
                             
                     371     
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE     7

                     372     ;     if (TaskID < OSRunningTaskID())
000B EB              373         MOV     A,R3
000C C3              374         CLR     C
000D 9500     F      375         SUBB    A,OSTaskID
000F 502E            376         JNC     StkInit5
                     377     ;     {
                     378     ;         i =  OSRunningTaskID() - TaskID;
0011 C3              379         CLR     C
0012 E500     F      380         MOV     A,OSTaskID
0014 9B              381         SUBB    A,R3
0015 FA              382         MOV     R2,A
                     383     ;         cp = (uint8 idata *)(&(OSTsakStackBotton[TaskID + 1]));
0016 7400     F      384         MOV     A,#LOW (OSTsakStackBotton+01H)
0018 2B              385         ADD     A,R3
0019 F9              386         MOV     R1,A
001A                 387     StkInit8:
                     388     ;         do
                     389     ;         {
                     390     ;             *cp += SP_ADD_BYTE;
001A 7403            391         MOV     A,#3
001C 27              392         ADD     A,@R1
001D F7              393         MOV     @R1,A
                     394     ;             cp++;
001E 09              395         INC     R1
                     396     ;         } while (--i != 0);
001F DAF9            397         DJNZ    R2,StkInit8
                     398     
                     399     ;         cp1 = (uint8 idata *)SP;
0021 A881            400         MOV     R0,SP
                     401     ;         SP = SP + SP_ADD_BYTE;
                     402                 ; SOURCE LINE # 172
0023 7403            403         MOV     A,#3
0025 2581            404         ADD     A,SP
0027 F581            405         MOV     SP,A
                     406     ;         i = SP - (uint8)(OSTsakStackBotton[TaskID + 1]) + 1;
0029 7400     F      407         MOV     A,#LOW (OSTsakStackBotton+01H)
002B 2B              408         ADD     A,R3
002C F9              409         MOV     R1,A
002D 8707            410         MOV     AR7,@R1
002F C3              411         CLR     C
0030 E581            412         MOV     A,SP
0032 9F              413         SUBB    A,R7
0033 FA              414         MOV     R2,A
0034 0A              415         INC     R2
                     416     ;         cp = (uint8 idata *)SP;
0035 A981            417         MOV     R1,SP
0037                 418     StkInit11:
                     419     ;         do
                     420     ;         {
                     421     ;             *cp-- = *cp1--;
0037 E6              422         MOV     A,@R0
0038 F7              423         MOV     @R1,A
0039 18              424         DEC     R0
003A 19              425         DEC     R1
                     426     ;         } while (--i != 0);
003B DAFA            427         DJNZ    R2,StkInit11
                     428     ;     }
003D 802C            429         SJMP    StkInit12
003F                 430     StkInit5:
                     431     ;     else
                     432     ;     {
                     433     ;         cp1 = (uint8 idata *)(&(OSTsakStackBotton[OSRunningTaskID() + 1]));
003F 7400     F      434         MOV     A,#LOW (OSTsakStackBotton+01H)
0041 2500     F      435         ADD     A,OSTaskID
0043 F8              436         MOV     R0,A
                     437     ;         i = TaskID - OSRunningTaskID();
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE     8

0044 C3              438         CLR     C
0045 EB              439         MOV     A,R3
0046 9500     F      440         SUBB    A,OSTaskID
0048 FA              441         MOV     R2,A
0049                 442     StkInit15:
                     443     ;         do
                     444     ;         {
                     445     ;             *cp1 -= SP_ADD_BYTE;
0049 74FD            446         MOV     A,#(-3)
004B 26              447         ADD     A,@R0
004C F6              448         MOV     @R0,A
                     449     ;             cp1++;
004D 08              450         INC     R0
                     451     ;         } while (--i != 0);
004E DAF9            452         DJNZ    R2,StkInit15
                     453     ;         
                     454     ;         cp = OSTsakStackBotton[OSRunningTaskID() + 1];
0050 7400     F      455         MOV     A,#LOW (OSTsakStackBotton+01H)
0052 2500     F      456         ADD     A,OSTaskID
0054 F8              457         MOV     R0,A
0055 E6              458         MOV     A,@R0
0056 F9              459         MOV     R1,A
                     460     ;         i = OSTsakStackBotton[TaskID] - cp - SP_ADD_BYTE;
0057 E9              461         MOV     A,R1
0058 24FD            462         ADD     A,#(-3)
005A FF              463         MOV     R7,A
                     464     
005B 7400     F      465         MOV     A,#LOW (OSTsakStackBotton)
005D 2B              466         ADD     A,R3
005E F8              467         MOV     R0,A
005F E6              468         MOV     A,@R0
0060 C3              469         CLR     C
0061 9F              470         SUBB    A,R7
0062 FA              471         MOV     R2,A
                     472     ;         cp1 = cp - SP_ADD_BYTE;
0063 A807            473         MOV     R0,AR7
0065                 474     StkInit18:
                     475     ;         do
                     476     ;         {
                     477     ;             *cp1++ = *cp++;
0065 E7              478         MOV     A,@R1
0066 F6              479         MOV     @R0,A
0067 08              480         INC     R0

⌨️ 快捷键说明

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