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

📄 os_cpu_a.lst

📁 一个通过方向判别芯片进行角度计算的程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
0033 9500     F      719         SUBB    A,OSTaskID
0035 FE              720         MOV     R6,A
0036 600F            721         JZ      ?C0005
                     722     
0038 7400     F      723         MOV     A,#LOW (OSTsakStackBotton)
003A 2500     F      724         ADD     A,OSTaskID
003C F9              725         MOV     R1,A    
003D EF              726         MOV     A,R7
003E F4              727         CPL     A
003F 04              728         INC     A
0040 FF              729         MOV     R7,A
0041                 730     ?C0004:
0041 09              731         INC     R1
0042 EF              732         MOV     A,R7
0043 27              733         ADD     A,@R1    
0044 F7              734         MOV     @R1,A
0045 DEFA            735         DJNZ    R6,?C0004
0047                 736     ?C0005:
                     737     ;         OSTaskID = OSNextTaskID;
0047 850000   F      738         MOV     OSTaskID,OSNextTaskID
                     739     ;         LoadCtx();    
004A 020000   F      740         LJMP    LoadCtx
                     741     ;     }
004D                 742     ?C0001:
                     743     ; 
                     744     ;     if( OSNextTaskID != OSTaskID)
004D E500     F      745         MOV     A,OSNextTaskID
004F 6500     F      746         XRL     A,OSTaskID
0051 6036            747         JZ      ?C000r
                     748     ;     {
                     749     ;          cp2--;
                     750     ;          cp1--;
                     751     ;         while(cp2 != (unsigned char idata *)temp)
                     752     ;         {
                     753     ;             *cp2-- = *cp1--;
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE    13

                     754     ;         }
                     755         ;MOV     A,R7
                     756         ;CLR     C
                     757         ;SUBB    A,R1
                     758         ;MOV     R6,A
0053 E8              759         mov     a,r0
0054 C3              760         clr     c
0055 9F              761         subb    a,r7
0056 FE              762         mov     r6,a
0057                 763     ?C0008:
0057 18              764         DEC     R0
0058 19              765         DEC     R1
0059 E6              766         MOV     A,@R0
005A F7              767         MOV     @R1,A
005B DEFA            768         DJNZ    R6,?C0008
005D                 769     ?C0009:
                     770     ;         temp = OSTsakStackBotton[OSTaskID+1] - (unsigned char idata *)SP-1;
005D 7400     F      771         MOV     A,#LOW (OSTsakStackBotton+01H)
005F 2500     F      772         ADD     A,OSTaskID
0061 F9              773         MOV     R1,A
0062 E7              774         MOV     A,@R1
0063 D3              775         SETB    C
                     776         ;SUBB    A,SP
0064 9A              777         SUBB    A,r2
0065 FF              778         MOV     R7,A
                     779     ;         SP = (unsigned char )OSTsakStackBotton[OSNextTaskID+1];
0066 7400     F      780         MOV     A,#LOW (OSTsakStackBotton+01H)
0068 2500     F      781         ADD     A,OSNextTaskID
006A F9              782         MOV     R1,A
006B E7              783         MOV     A,@R1
006C F581            784         MOV     SP,A
                     785     ;         for(i = OSNextTaskID+1;i < OSTaskID+1; i++)
                     786     ;         {
                     787     ;             OSTsakStackBotton[i] += temp;
                     788     ;         }
                     789     
006E E500     F      790         MOV     A,OSTaskID
0070 C3              791         CLR     C
0071 9500     F      792         SUBB    A,OSNextTaskID
0073 600C            793         JZ      ?C0011
                     794     
0075 FE              795         MOV     R6,A
0076 7400     F      796         MOV     A,#LOW (OSTsakStackBotton)
0078 2500     F      797         ADD     A,OSNextTaskID
007A F9              798         MOV     R1,A    
007B                 799     ?C0010:
007B 09              800         INC     R1
007C EF              801         MOV     A,R7
007D 27              802         ADD     A,@R1    
007E F7              803         MOV     @R1,A
007F DEFA            804         DJNZ    R6,?C0010
                     805     
0081                 806     ?C0011:
                     807     ;         OSTaskID = OSNextTaskID;        
0081 850000   F      808         MOV     OSTaskID,OSNextTaskID
                     809     ;         SP--;
0084 1581            810         DEC     SP
                     811     ;     }
0086                 812     ?C0007:
                     813     ;     LoadCtx();
0086 020000   F      814         LJMP    LoadCtx
0089                 815     ?C000r:
                     816     IF 0  <> 0
                                 mov     SP,r2
                             ENDIF
0089 020000   F      819         LJMP    LoadCtx
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE    14

                     820     ;****************************************************************************************
                     821     ;/*****************************************************************************************
                             ****************
                     822     ;** 函数名称: OSIntCtxSw
                     823     ;** 功能描述: 中断使任务放弃CPU环境保存函数
                     824     ;** 输 入: OSTaskID
                     825     ;** 输 出 : 无
                     826     ;** 全局变量: OSFastSwap
                     827     ;** 调用模块: 无
                     828     ;** 
                     829     ;** 作 者: 陈明计
                     830     ;** 日 期: 2002年2月22日
                     831     ;**----------------------------------------------------------------------------------------
                             ---------------
                     832     ;** 修 改: 陈明计
                     833     ;** 日 期: 2002年12月2日
                     834     ;**----------------------------------------------------------------------------------------
                             ---------------
                     835     ;** 修 改:
                     836     ;** 日 期:
                     837     ;**----------------------------------------------------------------------------------------
                             ---------------
                     838     ;******************************************************************************************
                             **************/
----                 839         RSEG  ?PR?OSIntCtxSw?OS_CPU_A
0000                 840     OSIntCtxSw:
                     841         USING   0
                     842                                             ;是否是优先级最低任务
0000 7403            843         MOV     A,#3
0002 6500     F      844         XRL     A,OSTaskID
0004 700F            845         JNZ     OSIntCtxSw_0
                     846                                             ;是则不需要保存所有寄存器
                     847     ;SP=SP-13-4                             ;4:两层函数调用堆栈,13:寄存器数目
0006 74EF            848         MOV     A,#(-17)
0008 2581            849         ADD     A,SP
000A F581            850         MOV     SP,A
                     851                                             ;跳转到OSCtxSw,同时通知CPU中断处理完成
000C 7400     F      852         MOV     A, #LOW  OSCtxSw
000E C0E0            853         PUSH    ACC
0010 7400     F      854         MOV     A, #HIGH OSCtxSw
0012 C0E0            855         PUSH    ACC
0014 32              856         RETI
                     857                                             ;需要保存所有寄存器
0015                 858     OSIntCtxSw_0:
                     859     ;SP=SP-4                                ;4:两层函数调用堆栈
0015 74FC            860         MOV     A,#0FCH
0017 2581            861         ADD     A,SP
0019 F581            862         MOV     SP,A
                     863                                             ;设置标志:任务再次恢复运行时需要恢复所有寄存器
001B 900000   F      864         MOV     DPTR,#OSMapTbl
001E E500     F      865         MOV     A,OSTaskID
                     866     
0020 93              867         MOVC    A,@A+DPTR
0021 F4              868         CPL     A
0022 5200     F      869         ANL     OSFastSwap,A
                             
                                 
                                 
                                 
                                 
                                 
                                 
                                 
                             
                                 
                                 
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE    15

                                 
                                 
                             
                             
                     885     
                     886     
                                 
                                 
                             
0024 C000     F      890         PUSH    Os_Enter_Sum            ;保存关中断计数器
                     891                                             ;跳转到堆栈处理,同时通知CPU中断处理完成
0026 7400     F      892         MOV     A, #LOW  C_OSCtxSw
0028 C0E0            893         PUSH    ACC
002A 7400     F      894         MOV     A, #HIGH C_OSCtxSw
002C C0E0            895         PUSH    ACC
002E 32              896         RETI
                     897     
                     898     ;/*****************************************************************************************
                             ****************
                     899     ;**                            End Of File
                     900     ;******************************************************************************************
                             **************/
                     901         END
A51 MACRO ASSEMBLER  OS_CPU_A                                                             03/10/2007 13:05:45 PAGE    16

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


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

?C0001. . . . . . . . . . .  C ADDR   004DH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0002. . . . . . . . . . .  C ADDR   001EH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0003. . . . . . . . . . .  C ADDR   0024H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0004. . . . . . . . . . .  C ADDR   0041H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0005. . . . . . . . . . .  C ADDR   0047H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0007. . . . . . . . . . .  C ADDR   0086H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0008. . . . . . . . . . .  C ADDR   0057H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0009. . . . . . . . . . .  C ADDR   005DH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C000R. . . . . . . . . . .  C ADDR   0089H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0010. . . . . . . . . . .  C ADDR   007BH   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?C0011. . . . . . . . . . .  C ADDR   0081H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
?PR?C_OSCTXSW?OS_CPU_A. . .  C SEG    008CH       REL=UNIT
?PR?LOADCTX?OS_CPU_A. . . .  C SEG    0033H       REL=UNIT
?PR?OSCTXSW?OS_CPU_A. . . .  C SEG    000DH       REL=UNIT
?PR?OSINTCTXSW?OS_CPU_A . .  C SEG    002FH       REL=UNIT
?PR?_OSTASKSTKINIT?OS_CPU_A  C SEG    007CH       REL=UNIT
?STACK. . . . . . . . . . .  I SEG    0001H       REL=UNIT
ACC . . . . . . . . . . . .  D ADDR   00E0H   A   
AR6 . . . . . . . . . . . .  D ADDR   0006H   A   
AR7 . . . . . . . . . . . .  D ADDR   0007H   A   
B . . . . . . . . . . . . .  D ADDR   00F0H   A   
C_OSCTXSW . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?C_OSCTXSW?OS_CPU_A
DPH . . . . . . . . . . . .  D ADDR   0083H   A   
DPL . . . . . . . . . . . .  D ADDR   0082H   A   
EA. . . . . . . . . . . . .  B ADDR   00A8H.7 A   
LOADCTX . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?LOADCTX?OS_CPU_A
LOADCTX_0 . . . . . . . . .  C ADDR   0009H   R   SEG=?PR?LOADCTX?OS_CPU_A
LOADCTX_2 . . . . . . . . .  C ADDR   002BH   R   SEG=?PR?LOADCTX?OS_CPU_A
LOADCTX_3 . . . . . . . . .  C ADDR   0032H   R   SEG=?PR?LOADCTX?OS_CPU_A
OSCTXSW . . . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSCTXSW?OS_CPU_A
OSFASTSWAP. . . . . . . . .  D ADDR   -----       EXT
OSINTCTXSW. . . . . . . . .  C ADDR   0000H   R   SEG=?PR?OSINTCTXSW?OS_CPU_A
OSINTCTXSW_0. . . . . . . .  C ADDR   0015H   R   SEG=?PR?OSINTCTXSW?OS_CPU_A
OSMAPTBL. . . . . . . . . .  C ADDR   -----       EXT
OSNEXTTASKID. . . . . . . .  D ADDR   -----       EXT
OSTASKID. . . . . . . . . .  D ADDR   -----       EXT
OSTSAKSTACKBOTTON . . . . .  D ADDR   -----       EXT
OS_CPU_A_ASM. . . . . . . .  N NUMB   -----       
OS_ENTER_SUM. . . . . . . .  D ADDR   -----       EXT
PSW . . . . . . . . . . . .  D ADDR   00D0H   A   
SP. . . . . . . . . . . . .  D ADDR   0081H   A   
STACK . . . . . . . . . . .  I ADDR   0000H   R   SEG=?STACK
STKINIT11 . . . . . . . . .  C ADDR   0037H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT12 . . . . . . . . .  C ADDR   006BH   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT15 . . . . . . . . .  C ADDR   0049H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT18 . . . . . . . . .  C ADDR   0065H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT5. . . . . . . . . .  C ADDR   003FH   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
STKINIT8. . . . . . . . . .  C ADDR   001AH   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A
_OSTASKSTKINIT. . . . . . .  C ADDR   0000H   R   SEG=?PR?_OSTASKSTKINIT?OS_CPU_A


REGISTER BANK(S) USED: 0 

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

⌨️ 快捷键说明

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