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

📄 os_cpu_a.lst

📁 ucos在51单片机上的小内存模式的初始化过程
💻 LST
📖 第 1 页 / 共 2 页
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             01/10/2007 09:13:35 PAGE     1


MACRO ASSEMBLER A51 V7.10
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                                                             01/10/2007 09:13:35 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
                     119     
A51 MACRO ASSEMBLER  OS_CPU_A                                                             01/10/2007 09:13:35 PAGE     3

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

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

⌨️ 快捷键说明

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