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

📄 os_cpu_a.lst

📁 ucos移植学习
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/16/2006 15:27:52 PAGE     1


MACRO ASSEMBLER A51 V7.02
OBJECT MODULE PLACED IN .\OS_CPU_A.obj
ASSEMBLER INVOKED BY: d:\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                                                             10/16/2006 15:27:52 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
0000                 103     OSStartHighRdy:
                     104     
                     105     ;-----------------
                     106     ; OSRunning = TURE
                     107     ;-----------------
                     108     
                     109     ;because EA is not enabled. where in OSStartHighRdy set OSRunning to true is not important
0000 758300   F      110             MOV     DPH,#HIGH (OSRunning)
0003 758200   F      111             MOV     DPL,#LOW  (OSRunning)
0006 7401            112             MOV     A,#1
0008 F0              113             MOVX    @DPTR,A
                     114     
                     115     ;-----------------
                     116     ; TR0 = 1
                     117     ;-----------------
0009 D28C            118             SETB    TR0
000B D28E            119             SETB    TR1
A51 MACRO ASSEMBLER  OS_CPU_A                                                             10/16/2006 15:27:52 PAGE     3

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

                     186     
                     187     ;restore registers
0042 D007            188             POP     07
0044 D006            189             POP     06
0046 D005            190             POP     05
0048 D004            191             POP     04
004A D003            192             POP     03
004C D002            193             POP     02
004E D001            194             POP     01
0050 D000            195             POP     00

⌨️ 快捷键说明

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