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

📄 os_cpu_a.lst

📁 在SoC单片机上实现对内部Flash的操作,基于uc/os-II.
💻 LST
字号:
A51 MACRO ASSEMBLER  OS_CPU_A                                                             12/12/2005 16:42:18 PAGE     1


MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN Os_cpu_a.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE Os_cpu_a.asm SET(LARGE) XREF 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     
                      18     ;伪指令详细用法请查A51.PDF文件
                      19     ;程序结构详见《uC/OS-II》193-198页
                      20     
                      21     ;不用此语句!!! $CASE    ;标号和变量名区分大小写
                      22     
                      23     
                      24     $nomod51 
  00AF                25     EA      BIT     0A8H.7
  0081                26     SP      DATA    081H
  00F0                27     B       DATA    0F0H
  00E0                28     ACC     DATA    0E0H
  0083                29     DPH     DATA    083H
  0082                30     DPL     DATA    082H
  00D0                31     PSW     DATA    0D0H
  008C                32     TR0     BIT     088H.4
  008C                33     TH0     DATA    08CH
  008A                34     TL0     DATA    08AH
                      35     
                      36             NAME OS_CPU_A    ;模块名
                      37             
                      38     ;定义重定位段
                      39     ?PR?OSStartHighRdy?OS_CPU_A    SEGMENT CODE
                      40     ?PR?OSCtxSw?OS_CPU_A           SEGMENT CODE
                      41     ?PR?OSIntCtxSw?OS_CPU_A        SEGMENT CODE
                      42     ?PR?OSTickISR?OS_CPU_A         SEGMENT CODE
                      43     
                      44     ?PR?_?serial?OS_CPU_A          SEGMENT CODE
                      45     
                      46     ?PR?_?serial2?OS_CPU_A          SEGMENT CODE        
                      47     
                      48     ;声明引用全局变量和外部子程序
                      49             EXTRN DATA  (?C_XBP)     ;仿真堆栈指针用于重入局部变量保存
                      50     
                      51             EXTRN IDATA (OSTCBCur)
                      52             EXTRN IDATA (OSTCBHighRdy)
                      53             EXTRN IDATA (OSRunning)
                      54             EXTRN IDATA (OSPrioCur)
                      55             EXTRN IDATA (OSPrioHighRdy)
                      56         
A51 MACRO ASSEMBLER  OS_CPU_A                                                             12/12/2005 16:42:18 PAGE     2

                      57             EXTRN CODE  (_?OSTaskSwHook)
                      58             EXTRN CODE  (_?serial)
                      59     
                      60             EXTRN CODE  (_?serial2)
                      61     
                      62             EXTRN CODE  (_?OSIntEnter)
                      63             EXTRN CODE  (_?OSIntExit)
                      64             EXTRN CODE  (_?OSTimeTick)        
                      65                 
                      66     ;对外声明4个不可重入函数
                      67             PUBLIC OSStartHighRdy
                      68             PUBLIC OSCtxSw
                      69             PUBLIC OSIntCtxSw
                      70             PUBLIC OSTickISR
                      71             
                      72             ;PUBLIC SerialISR        
                      73         
                      74     ;分配堆栈空间。只关心大小,堆栈起点由keil决定,通过标号可以获得keil分配的SP起点。
                      75     ?STACK SEGMENT IDATA
----                  76             RSEG ?STACK
0000                  77     OSStack:
0000                  78             DS 40H
  FFFF                79     OSStkStart IDATA OSStack-1
                      80     
                      81     ;定义压栈出栈宏
                      82     PUSHALL    MACRO
                      83             PUSH PSW
                      84             PUSH ACC
                      85             PUSH B
                      86             PUSH DPL
                      87             PUSH DPH
                      88             MOV  A,R0   ;R0-R7入栈
                      89             PUSH ACC
                      90             MOV  A,R1
                      91             PUSH ACC
                      92             MOV  A,R2
                      93             PUSH ACC
                      94             MOV  A,R3
                      95             PUSH ACC
                      96             MOV  A,R4
                      97             PUSH ACC
                      98             MOV  A,R5
                      99             PUSH ACC
                     100             MOV  A,R6
                     101             PUSH ACC
                     102             MOV  A,R7
                     103             PUSH ACC
                     104             ;PUSH SP    ;不必保存SP,任务切换时由相应程序调整
                     105             ENDM
                     106         
                     107     POPALL    MACRO
                     108             ;POP  ACC   ;不必保存SP,任务切换时由相应程序调整
                     109             POP  ACC    ;R0-R7出栈
                     110             MOV  R7,A
                     111             POP  ACC
                     112             MOV  R6,A
                     113             POP  ACC
                     114             MOV  R5,A
                     115             POP  ACC
                     116             MOV  R4,A
                     117             POP  ACC
                     118             MOV  R3,A
                     119             POP  ACC
                     120             MOV  R2,A
                     121             POP  ACC
                     122             MOV  R1,A
A51 MACRO ASSEMBLER  OS_CPU_A                                                             12/12/2005 16:42:18 PAGE     3

                     123             POP  ACC
                     124             MOV  R0,A
                     125             POP  DPH
                     126             POP  DPL
                     127             POP  B
                     128             POP  ACC
                     129             POP  PSW
                     130             ENDM
                     131         
                     132     ;子程序
                     133     ;-------------------------------------------------------------------------
----                 134             RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000                 135     OSStartHighRdy:
                     136             USING 0    ;上电后51自动关中断,此处不必用CLR EA指令,因为到此处还未开中断,本程序

⌨️ 快捷键说明

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