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

📄 os_cpu_a.lst

📁 成功的将UCOS操作系统
💻 LST
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             08/05/2007 21:31:20 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN .\Out File\OS_CPU_A.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE C51Port\OS_CPU_A.ASM SET(LARGE) DEBUG PRINT(.\Out File\OS_CPU_A.lst) OBJEC
                      T(.\Out File\OS_CPU_A.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     ;/*
                       2     ;******************************************************************************************
                             ***************
                       3     ;*                                               uC/OS-II
                       4     ;*                                               实时内核
                       5     ;*
                       6     ;*                        (c) Copyright 1992-1998, Jean J. Labrosse, Plantation, FL
                       7     ;*                                               版权所有
                       8     ;*
                       9     ;*                                            MCU-51 专用代码
                      10     ;*                                           KEIL C51小模式编译
                      11     ;*
                      12     ;* 文件名 : OS_CPU_A.ASM
                      13     ;* 作者   : Jean J. Labrosse
                      14     ;* 改编   : 杨屹 gdtyy@ri.gdt.com.cn 巨龙公司系统集成开发部 2002.09.27
                      15     ;******************************************************************************************
                             ***************
                      16     ;*/
                      17     $nomod51 
                      18     ;伪指令详细用法请查A51.PDF文件
                      19     ;程序结构详见《uC/OS-II》193-198页
                      20     
                      21     ;不用此语句!!! $CASE    ;标号和变量名区分大小写
                      22     
  00AF                23     EA      BIT     0A8H.7
  0081                24     SP      DATA    081H
  00F0                25     B       DATA    0F0H
  00E0                26     ACC     DATA    0E0H
  0083                27     DPH     DATA    083H
  0082                28     DPL     DATA    082H
  00D0                29     PSW     DATA    0D0H
  008C                30     TR0     BIT     088H.4
  008D                31     TF0     BIT     088H.5
  008C                32     TH0     DATA    08CH
  008A                33     TL0     DATA    08AH
                      34     
                      35             NAME OS_CPU_A    ;模块名
                      36             
                      37     ;定义重定位段
                      38     ?PR?OSStartHighRdy?OS_CPU_A    SEGMENT CODE
                      39     ?PR?OSCtxSw?OS_CPU_A           SEGMENT CODE
                      40     ?PR?OSIntCtxSw?OS_CPU_A        SEGMENT CODE
                      41     ?PR?OSTickISR?OS_CPU_A         SEGMENT CODE
                      42             
                      43     ;声明引用全局变量和外部子程序
                      44             EXTRN DATA  (?C_XBP)     ;仿真堆栈指针用于重入局部变量保存
                      45             EXTRN IDATA (STACK)
                      46     
                      47             EXTRN DATA (OSTCBCur)
                      48             EXTRN DATA (OSTCBHighRdy)
                      49             EXTRN DATA (OSRunning)
                      50             EXTRN DATA (OSPrioCur)
                      51             EXTRN DATA (OSPrioHighRdy)
                      52         
                      53             EXTRN CODE  (ReloadTimer0)
                      54             EXTRN CODE  (OSTaskSwHook)
                      55             EXTRN CODE  (_?OSIntEnter)
A51 MACRO ASSEMBLER  OS_CPU_A                                                             08/05/2007 21:31:20 PAGE     2

                      56             EXTRN CODE  (_?OSIntExit)
                      57             EXTRN CODE  (_?OSTimeTick)
                      58                 
                      59     ;对外声明4个不可重入函数
                      60             PUBLIC OSStartHighRdy
                      61             PUBLIC OSCtxSw
                      62             PUBLIC OSIntCtxSw
                      63             PUBLIC OSTickISR
                      64             
                      65             ;PUBLIC SerialISR        
                      66     
                      67     ;定义压栈出栈宏
                      68     ;-------------------------------------------------------------------------
                      69     PUSHALL MACRO
                      70                     IRP     REG,    <PSW, ACC, B, DPL, DPH, 0, 1, 2, 3, 4, 5, 6, 7>
                      71                     PUSH    REG
                      72                     ENDM
                      73             ENDM
                      74     
                      75     POPALL  MACRO
                      76                     IRP     REG,    <7, 6, 5, 4, 3, 2, 1, 0, DPH, DPL, B, ACC, PSW>
                      77                     POP     REG
                      78                     ENDM
                      79             ENDM  
                      80     
                      81     ;子程序
                      82     ;-------------------------------------------------------------------------
----                  83             RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000                  84     OSStartHighRdy:
                      85     ;上电后51自动关中断,此处不必用CLR EA指令,因为到此处还未开中断,本程序退出后,开中断。
0000 120000   F       86             LCALL OSTaskSwHook
0003                  87     OSCtxSw_in:
                      88             ;OSTCBCur ===> DPTR  获得当前TCB指针,详见C51.PDF第178页
0003 850083   F       89             MOV  DPH,(OSTCBCur+1)
0006 850082   F       90             MOV  DPL,(OSTCBCur+2)
                      91     
0009 E0               92             MOVX A,@DPTR     ;.OSTCBStkPtr是xadta指针
000A F5F0             93             MOV  B,A
000C A3               94             INC  DPTR
000D E0               95             MOVX A,@DPTR
000E F582             96             MOV  DPL,A
0010 85F083           97             MOV  DPH,B       ;此时PDTR指向用户堆栈
                      98     
                      99             ;*UserStkPtr ===> R5  用户堆栈起始地址内容(即用户堆栈长度放在此处)  详见文档说明  

⌨️ 快捷键说明

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