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

📄 os_cpu_a.lst

📁 Ucos2在80c51f上的移植
💻 LST
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             06/12/2002 20:49:07 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN OS_CPU_A.OBJ
ASSEMBLER INVOKED BY: e:\keil\C51\BIN\A51.EXE OS_CPU_A.ASM SET(LARGE) DEBUG 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     ;*                                            8051处理器代码
                      10     ;*                                           KEIL C51大模式编译
                      11     ;*
                      12     ;* 文件名 : OS_CPU_A.ASM
                      13     ;* 作者   : Jean J. Labrosse
                      14     ;******************************************************************************************
                             ***************
                      15     ;*/
                      16     
                      17     $nomod51 
  00AF                18     EA      BIT     0A8H.7
  0081                19     SP      DATA    081H
  00F0                20     B       DATA    0F0H
  00E0                21     ACC     DATA    0E0H
  0083                22     DPH     DATA    083H
  0082                23     DPL     DATA    082H
  00D0                24     PSW     DATA    0D0H
  008C                25     TR0     BIT     088H.4
  008C                26     TH0     DATA    08CH
  008A                27     TL0     DATA    08AH
                      28     
                      29             NAME OS_CPU_A    ;模块名
                      30             
                      31     ;定义重定位段
                      32     ?PR?OSStartHighRdy?OS_CPU_A    SEGMENT CODE
                      33     ?PR?OSCtxSw?OS_CPU_A           SEGMENT CODE
                      34     ?PR?OSIntCtxSw?OS_CPU_A        SEGMENT CODE
                      35     ?PR?OSTickISR?OS_CPU_A         SEGMENT CODE
                      36     
                      37     ?PR?_?serial?OS_CPU_A          SEGMENT CODE
                      38             
                      39     ;声明引用全局变量和外部子程序
                      40             EXTRN DATA  (?C_XBP)     ;仿真堆栈指针用于重入局部变量保存
                      41     
                      42             EXTRN IDATA (OSTCBCur)
                      43             EXTRN IDATA (OSTCBHighRdy)
                      44             EXTRN IDATA (OSRunning)
                      45             EXTRN IDATA (OSPrioCur)
                      46             EXTRN IDATA (OSPrioHighRdy)
                      47         
                      48             EXTRN CODE  (_?OSTaskSwHook)
                      49             EXTRN CODE  (_?serial)
                      50             EXTRN CODE  (_?OSIntEnter)
                      51             EXTRN CODE  (_?OSIntExit)
                      52             EXTRN CODE  (_?OSTimeTick)        
                      53                 
                      54     ;对外声明4个不可重入函数
                      55             PUBLIC OSStartHighRdy
                      56             PUBLIC OSCtxSw
A51 MACRO ASSEMBLER  OS_CPU_A                                                             06/12/2002 20:49:07 PAGE     2

                      57             PUBLIC OSIntCtxSw
                      58             PUBLIC OSTickISR
                      59             
                      60     ;分配堆栈空间。只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。
                      61     ;由于C8051F的堆棧指針只有8位,只能指向內部數据區的256個字節,
                      62     ;因此,當前運行的任務的堆棧在IDATA區,堆棧大小為40H(64字節),堆棧起點由KEIL決定
                      63     ?STACK SEGMENT IDATA
----                  64             RSEG ?STACK
0000                  65     OSStack:
0000                  66             DS 40H
  FFFF                67     OSStkStart IDATA OSStack-1
                      68     
                      69     ;定义压栈出栈宏
                      70     PUSHALL    MACRO
                      71             PUSH PSW
                      72             PUSH ACC
                      73             PUSH B
                      74             PUSH DPL
                      75             PUSH DPH
                      76             MOV  A,R0   ;R0-R7入栈
                      77             PUSH ACC
                      78             MOV  A,R1
                      79             PUSH ACC
                      80             MOV  A,R2
                      81             PUSH ACC
                      82             MOV  A,R3
                      83             PUSH ACC
                      84             MOV  A,R4
                      85             PUSH ACC
                      86             MOV  A,R5
                      87             PUSH ACC
                      88             MOV  A,R6
                      89             PUSH ACC
                      90             MOV  A,R7
                      91             PUSH ACC
                      92             ;PUSH SP    ;不必保存SP,任务切换时由相应程序调整
                      93             ENDM
                      94         
                      95     POPALL    MACRO
                      96             ;POP  ACC   ;不必保存SP,任务切换时由相应程序调整
                      97             POP  ACC    ;R0-R7出栈
                      98             MOV  R7,A
                      99             POP  ACC
                     100             MOV  R6,A
                     101             POP  ACC
                     102             MOV  R5,A
                     103             POP  ACC
                     104             MOV  R4,A
                     105             POP  ACC
                     106             MOV  R3,A
                     107             POP  ACC
                     108             MOV  R2,A
                     109             POP  ACC
                     110             MOV  R1,A
                     111             POP  ACC
                     112             MOV  R0,A
                     113             POP  DPH
                     114             POP  DPL
                     115             POP  B
                     116             POP  ACC
                     117             POP  PSW
                     118             ENDM
                     119         
                     120     ;子程序
                     121     ;-------------------------------------------------------------------------
----                 122             RSEG ?PR?OSStartHighRdy?OS_CPU_A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             06/12/2002 20:49:07 PAGE     3

0000                 123     OSStartHighRdy:
                     124             USING 0    ;上电后51自动关中断,此处不必用CLR EA指令,因为到此处还未开中断,本程序

⌨️ 快捷键说明

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