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

📄 os_cpu_a.lst

📁 将ucos-II 移植到 KeilC51 的小模式下。由于小模式运行速度比大模式运行速度快很多
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             11/20/2008 19:25:22 PAGE     1


MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN .\OS_CPU_A.obj
ASSEMBLER INVOKED BY: f:\Keil\C51\BIN\A51.EXE ..\uc_51\OS_CPU_A.ASM SET(SMALL) DEBUG PRINT(.\OS_CPU_A.lst) OBJECT(.\OS_C
                      PU_A.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     ;******************************************************************************************
                             ***************
                       2     ;*                                               uC/OS-II
                       3     ;*                                         The Real-Time Kernel
                       4     ;*
                       5     ;*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
                       6     ;*                                          All Rights Reserved
                       7     ;*
                       8     ;*
                       9     ;*                                          KeilC51 Specific code
                      10     ;*                                          SMALL MEMORY MODEL
                      11     ;*
                      12     ;* File : OS_CPU_C.C
                      13     ;* By   : Jean J. Labrosse
                      14     ;* Refer to Code Written By             : Yang Yi (http://www.zlgmcu.com/philips/philips-em
                             bedsys.asp)
                      15     ;* Port to KeilC51 Small Mode By        : Li Zhanglin (wzzlin@nankai.edu.cn)
                      16     ;******************************************************************************************
                             ***************
                      17     
                      18     ;               ==========================================
                      19     ;               ------------------ NOTE  -----------------
                      20     ;               ==========================================
                      21     
                      22     ;               ------------ abbreviation ----------------
                      23     
                      24     ;       Rst:    restore
                      25     ;       Stk:    stack
                      26     ;       Smlt:   simulated
                      27     
                      28     ;               ----- OSTCBStk stored as following format ---
                      29     
                      30     ;       CONTENT                                 START POSITION IN OSTCBStk      
                      31     ;       ----------                              ----------------------          
                      32     ;       AR7                                                                     
                      33     ;       AR6
                      34     ;       AR5
                      35     ;       AR4
                      36     ;       AR3
                      37     ;       AR2
                      38     ;       AR1
                      39     ;       AR0
                      40     ;       PSW
                      41     ;       DPL
                      42     ;       DPH
                      43     ;       B
                      44     ;       ACC                                                             
                      45     ;       HARDWARE STACK CONTENT                  2+SmltStkSize                              
                                          
                      46     ;       HARDWARE STACK SIZE(INCLUDE REGISTERS)  1+SmltStkSize           
                      47     ;       SIMULATED STACK CONTENT                 1                               
                      48     ;       ?C_IBP                                  0
                      49     
                      50     ;               ==========================================
                      51     ;               ------------------ MODULE ----------------
                      52     ;               ==========================================
                      53             NAME    OS_CPU_A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             11/20/2008 19:25:22 PAGE     2

                      54     
                      55     
                      56     
                      57     ;               ==========================================
                      58     ;               ------------------ SEGMENT  --------------
                      59     ;               ==========================================
                      60     
                      61             ?PR?OSStartHighRdy?OS_CPU_A     SEGMENT CODE
                      62             ?PR?OSCtxSw?OS_CPU_A            SEGMENT CODE
                      63             ?PR?OSIntCtxSw?OS_CPU_A         SEGMENT CODE
                      64     
                      65     ;               ===========================================
                      66     ;               ------------------ EXTRN ------------------
                      67     ;               ===========================================
                      68     
                      69             EXTRN XDATA     (OSTCBHighRdy)
                      70             EXTRN XDATA     (OSTCBCur)
                      71             EXTRN XDATA     (OSPrioCur)
                      72             EXTRN XDATA     (OSPrioHighRdy)
                      73             EXTRN XDATA     (OSRunning)
                      74     
                      75             EXTRN DATA      (?C_IBP)
                      76     
                      77             EXTRN CODE      (_?OSTaskSwHook)
                      78     
                      79     ;               ===========================================
                      80     ;               ------------------ PUBLIC -----------------
                      81     ;               ===========================================
                      82             PUBLIC  OSStartHighRdy
                      83             PUBLIC  OSCtxSw
                      84             PUBLIC  OSIntCtxSw
                      85     
                      86     ;               ===========================================
                      87     ;               ------------------ STACK ------------------
                      88     ;               ===========================================
                      89     ;The SEGMENT ?STACK will combined will stack defined in startup.asm
                      90             ?STACK SEGMENT IDATA
----                  91             RSEG ?STACK
0000                  92     StkBottom:
                      93             
                      94     ;               ===========================================
                      95     ;               ------------------ FUNCTIONS --------------
                      96     ;               ===========================================
                      97     
                      98     ;               -------------------------------------------
                      99     ;               -------------- OSStartHighRdy() -----------
                     100     ;               -------------------------------------------
                     101     
----                 102             RSEG ?PR?OSStartHighRdy?OS_CPU_A
                     103     
0000                 104     OSStartHighRdy:
                     105     
                     106     ;-----------------
                     107     ; OSRunning = TURE
                     108     ;-----------------
                     109     
                     110     ;because EA is not enabled. where in OSStartHighRdy set OSRunning to true is not important
0000 758300   F      111             MOV     DPH,#HIGH (OSRunning)
0003 758200   F      112             MOV     DPL,#LOW  (OSRunning)
0006 7401            113             MOV     A,#1
0008 F0              114             MOVX    @DPTR,A
                     115     
                     116     ;-----------------
                     117     ; TR0 = 1
                     118     ;-----------------
0009 D28C            119             SETB    TR0
A51 MACRO ASSEMBLER  OS_CPU_A                                                             11/20/2008 19:25:22 PAGE     3

                     120     
000B                 121     OSCPUARstStk:
                     122     ;-----------------
                     123     ;Get OSTCBHighRdy->OSTCBStkPtr to DPTR
                     124     ;-----------------
                     125     
                     126     ;high byte is at low address
                     127     
                     128     ;Move OSTCBHighRdy to dptr
000B 758300   F      129             MOV     DPH,#HIGH(OSTCBHighRdy)
000E 758200   F      130             MOV     DPL,#LOW (OSTCBHighRdy)
0011 E0              131             MOVX    A,@DPTR
0012 F8              132             MOV     R0,A
0013 A3              133             INC     DPTR
0014 E0              134             MOVX    A,@DPTR
0015 8883            135             MOV     DPH,R0
0017 F582            136             MOV     DPL,A
                     137     
                     138     ;Move OSTCBStkPtr to dptr
0019 E0              139             MOVX    A,@DPTR
001A F8              140             MOV     R0,A
001B A3              141             INC     DPTR
001C E0              142             MOVX    A,@DPTR
001D 8883            143             MOV     DPH,R0
001F F582            144             MOV     DPL,A
                     145     
                     146     ;-----------------
                     147     ;restore stack
                     148     ;-----------------
                     149     
                     150     ;restore ?C_IBP
0021 E0              151             MOVX    A,@DPTR
0022 F500     F      152             MOV     ?C_IBP,A
                     153     
                     154     ;restore simulated stack
0024 600A            155             JZ      OSCPUASmltRstOver       ;simulated stack size == 0, that is ?C_IBP == 0x100
0026 14              156             DEC     A                       ;Let R0 point to ?C_IBP - 1
0027 F8              157             MOV     R0,A
0028 F4              158             CPL     A                       ;caculate copy rotation times, store in R1
0029 F9              159             MOV     R1,A
002A                 160     OSCPUASmltRstStk:
002A 08              161             INC     R0
002B A3              162             INC     DPTR
002C E0              163             MOVX    A,@DPTR
002D F6              164             MOV     @R0,A
002E D9FA            165             DJNZ    R1,OSCPUASmltRstStk
0030                 166     OSCPUASmltRstOver:
                     167     
                     168     ;restore sp, sp = #stkBottom - 1 + "Hardware stack size".
0030 A3              169             INC     DPTR
0031 E0              170             MOVX    A,@DPTR                 ;now hardware stack size is stored in A
0032 7800     F      171             MOV     R0,#StkBottom - 1       ;start of hardware stack defined by keilc system
0034 F9              172             MOV     R1,A                    ;store rotation times in R1
0035 28              173             ADD     A,R0                    ;sp
0036 F581            174             MOV     SP,A
                     175     
                     176     ;restore hardware stack 
                     177     ;stack top is at high address 
                     178     ;HardStk will never be empty
0038                 179     OSCPUARstHardStk:
0038 08              180             INC     R0                      
0039 A3              181             INC     DPTR
003A E0              182             MOVX    A,@DPTR
003B F6              183             MOV     @R0,A
003C D9FA            184             DJNZ    R1,OSCPUARstHardStk
                     185     
A51 MACRO ASSEMBLER  OS_CPU_A                                                             11/20/2008 19:25:22 PAGE     4

                     186     ;restore registers
003E D007            187             POP     07
0040 D006            188             POP     06
0042 D005            189             POP     05
0044 D004            190             POP     04
0046 D003            191             POP     03
0048 D002            192             POP     02
004A D001            193             POP     01
004C D000            194             POP     00
004E D0D0            195             POP     PSW
0050 D082            196             POP     DPL
0052 D083            197             POP     DPH
0054 D0F0            198             POP     B

⌨️ 快捷键说明

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