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

📄 rtx51tny.lst

📁 单片机测量相位和频率的程序,使用了RTX51 TINY操作系统
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     1


MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN .\RTX51TNY.obj
ASSEMBLER INVOKED BY: D:\万解程序\keilc\C51\BIN\A51.EXE D:\万解程序\keilc\C51\RTX_TINY\RTX51TNY.A51 SET(SMALL) DEBUG PRI
                      NT(.\RTX51TNY.lst) OBJECT(.\RTX51TNY.obj) EP

LOC  OBJ            LINE     SOURCE

                       1     ;------------------------------------------------------------------------------
                       2     ;  This file is part of the 'RTX-51 tiny' Real-Time Operating System Package
                       3     ;  Copyright KEIL ELEKTRONIK GmbH 1991 - 1994
                       4     ;------------------------------------------------------------------------------
                       5     ;
                       6     ;  RTX51TNY.A51:  This module contains all RTX-51 TINY function calls.
                       7     ;
                       8     ;  RTX51 TINY VERSION 1.06
                       9     ;
                      10     ;------------------------------------------------------------------------------
                      11     
                      12     NAME    ?RTX51_TINY
                      13     
                      14     PUBLIC  ?RTX_TASKSP
                      15     PUBLIC  ?RTX_TASKSTATUS
                      16     PUBLIC  ?RTX_TASKENTRY
                      17     
                      18     PUBLIC  ?RTX_NEXTTASK
                      19     PUBLIC  ?RTX_NEXTID
                      20     PUBLIC  ?RTX_TASKIDX
                      21     PUBLIC  ?RTX_TS_REQ
                      22     PUBLIC  ?RTX_TS_DELAY
                      23     PUBLIC  ?RTX_TASKSWITCHING
                      24     
                      25     PUBLIC  _OS_CREATE_TASK
                      26     PUBLIC  _OS_WAIT
                      27     PUBLIC  _OS_WAIT1
                      28     PUBLIC  _OS_WAIT2
                      29     PUBLIC  _OS_SEND_SIGNAL
                      30     PUBLIC  _ISR_SEND_SIGNAL
                      31     PUBLIC  _OS_CLEAR_SIGNAL
                      32     PUBLIC  _OS_DELETE_TASK
                      33     PUBLIC  OS_RUNNING_TASK_ID
                      34     
                      35     EXTRN   NUMBER (?RTX_MAXTASKN)          ; max Task Number
                      36     EXTRN   NUMBER (?RTX_TIMESHARING)       ; Round Robin Enable & Time Out
                      37     EXTRN   NUMBER (?RTX_REGISTERBANK)
                      38     EXTRN   NUMBER (?RTX_RAMTOP)
                      39     EXTRN   NUMBER (?RTX_CLOCK)
                      40     EXTRN   NUMBER (?RTX_FREESTACK)
                      41     
                      42     EXTRN   CODE   (?RTX_STACKERROR)
                      43     
                      44     EXTRN   DATA   (?RTX_CURRENTTASK)
                      45     EXTRN   DATA   (?RTX_ROBINTIME)
                      46     EXTRN   DATA   (?RTX_SAVEACC)
                      47     EXTRN   DATA   (?RTX_SAVEPSW)
                      48     
  REG                 49     saveacc         EQU     R2
  REG                 50     savepsw         EQU     R3
  REG                 51     robintime       EQU     R4
  REG                 52     currenttask     EQU     R5
                      53     
                      54     
                      55     ?RTX?TASKENT?S    SEGMENT  CODE         ; Segment with Task Entries
----                  56     RSEG    ?RTX?TASKENT?S
0000                  57     ?RTX_TASKENTRY: DS      2
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     2

                      58     
                      59     ?RTX?TASKSP?S     SEGMENT  IDATA
----                  60                     RSEG    ?RTX?TASKSP?S
0000                  61     ?RTX_TASKSP:    DS      1               ; Reserve Space for Stack Pointer
                      62     
                      63     ?RTX?TASKSTATE?S  SEGMENT  IDATA
----                  64                     RSEG    ?RTX?TASKSTATE?S
0000                  65     ?RTX_TASKSTATUS:
0000                  66     TimerVal:       DS      1               ; Reserve Space for Timer
0001                  67     TaskState:      DS      1
                      68     ; Bits in TaskState:
                      69     ;  TaskState.0  = Wait for Signal
                      70     ;  TaskState.1  = Wait for TimeOut
                      71     ;  TaskState.2  = Signal Flag
                      72     ;  TaskState.3  = TimeOut Flag
                      73     ;  TaskState.4  = Task Ready (Wait for Running)
                      74     ;  TaskState.5  = Task Active (enabled with os_create)
                      75     ;  TaskState.6  = Round Robin Time Out
                      76     
  0001                77     K_SIG           EQU     1
  0002                78     K_TMO           EQU     2
  0004                79     SIG_EVENT       EQU     4
  0008                80     TMO_EVENT       EQU     8
  0010                81     K_READY         EQU     16
  0020                82     K_ACTIVE        EQU     32
  0040                83     K_ROBIN         EQU     64
  0080                84     K_IVL           EQU     128
                      85     
  0000                86     B_WAITSIG       EQU     0
  0001                87     B_WAITTIM       EQU     1
  0002                88     B_SIGNAL        EQU     2
  0003                89     B_TIMEOUT       EQU     3
  0004                90     B_READY         EQU     4
  0005                91     B_ACTIVE        EQU     5
  0006                92     B_ROBIN         EQU     6
  0007                93     B_INTERVAL      EQU     7
                      94     
                      95     ?RTX?BITS       SEGMENT BIT
                      96     
----                  97                     RSEG    ?RTX?BITS
0000                  98     ?RTX_TS_DELAY:  DBIT    1
0001                  99     ?RTX_TS_REQ:    DBIT    1
                     100     
----                 101                     CSEG    AT      0BH
000B 020000   F      102                     JMP     TIMERINT
                     103     
                     104     ?RTX?CODE       SEGMENT CODE
                     105     
----                 106                     RSEG    ?RTX?CODE
                     107     
0000 32              108     RETINT:         RETI
                     109     
0001 EA              110     NoTimeSharing:  MOV     A,saveacc
0002 8BD0            111                     MOV     PSW,savepsw
0004 22              112                     RET     
                     113     
0005 120000   F      114     TIMERINT:       CALL    RETINT          ; Enable Interrupts again.
0008 85D000   F      115                     MOV     ?RTX_SAVEPSW,PSW
000B 75D000   F      116                     MOV     PSW,#?RTX_REGISTERBANK
000E FA              117                     MOV     saveacc,A
                     118     ; Update Timer
000F C28C            119                     CLR     TR0
0011 E58A            120                     MOV     A,TL0
0013 2400     F      121                     ADD     A,#LOW (?RTX_CLOCK + 7)
0015 F58A            122                     MOV     TL0,A
0017 E58C            123                     MOV     A,TH0
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     3

0019 3400     F      124                     ADDC    A,#HIGH (?RTX_CLOCK + 7)
001B F58C            125                     MOV     TH0,A
001D D28C            126                     SETB    TR0
                     127     ; Check Stack
001F ED              128                     MOV     A,currenttask
0020 2400     F      129                     ADD     A,#?RTX?TASKSP?S+1
0022 F8              130                     MOV     R0,A
0023 E6              131                     MOV     A,@R0
0024 BD0002   F      132                     CJNE    currenttask,#?RTX_MAXTASKN,checkstack
0027 7400     F      133                     MOV     A,#?RTX_RAMTOP
0029 C3              134     checkstack:     CLR     C
002A 9581            135                     SUBB    A,SP
002C B40000   F      136                     CJNE    A,#?RTX_FREESTACK,$+3
002F 5003            137                     JNC     checkstack2
0031 020000   F      138                     LJMP    ?RTX_STACKERROR
0034                 139     checkstack2:
                     140     
                     141     ; Update & Check Task Timers
0034 7900     F      142                     MOV     R1,#?RTX_MAXTASKN+1
0036 7800     F      143                     MOV     R0,#?RTX?TASKSTATE?S
0038 16              144     TIMERLOOP:      DEC     @R0
0039 E6              145                     MOV     A,@R0
003A C2D5            146                     CLR     F0
003C 7002            147                     JNZ     NoTimeOut
003E D2D5            148                     SETB    F0
0040 08              149     NoTimeOut:      INC     R0              ; advance to TaskState
0041 C2AF            150                     CLR     EA
0043 E6              151                     MOV     A,@R0
0044 30E106          152                     JNB     ACC.B_WAITTIM,NoWaitTimeout
0047 30D503          153                     JNB     F0,NoWaitTimeOut
004A 4418            154                     ORL     A,#(K_READY+TMO_EVENT)
004C F6              155                     MOV     @R0,A
004D D2AF            156     NoWaitTimeout:  SETB    EA
004F 08              157                     INC     R0
0050 D9E6            158                     DJNZ    R1,TIMERLOOP
                     159     
                     160     ; Check Round Robin Timeout
                     161     
0052 7400     F      162                     MOV     A,#LOW ?RTX_TIMESHARING
0054 60AB            163                     JZ      NoTimeSharing
0056 ED              164                     MOV     A,currenttask
0057 23              165                     RL      A
0058 2400     F      166                     ADD     A,#?RTX?TASKSTATE?S
005A F8              167                     MOV     R0,A
005B E6              168                     MOV     A,@R0
005C B500A2   F      169                     CJNE    A,?RTX_ROBINTIME,NoTimeSharing
005F EA              170                     MOV     A,saveacc
0060 8BD0            171                     MOV     PSW,savepsw
0062 300003   F      172                     JNB     ?RTX_TS_DELAY,?RTX_TASKSWITCHING
0065 D200     F      173     ts_request:     SETB    ?RTX_TS_REQ
0067 22              174                     RET
                     175     
                     176                     USING   0               ; Registerbank 0 for following code
0068                 177     ?RTX_TASKSWITCHING:
0068 C0E0            178                     PUSH    ACC
006A C0D0            179                     PUSH    PSW
006C C0F0            180                     PUSH    B
006E C083            181                     PUSH    DPH
0070 C082            182                     PUSH    DPL
0072 C000            183                     PUSH    AR0
0074 C001            184                     PUSH    AR1
0076 C002            185                     PUSH    AR2
0078 C003            186                     PUSH    AR3
007A C004            187                     PUSH    AR4
007C C005            188                     PUSH    AR5
007E C006            189                     PUSH    AR6
A51 MACRO ASSEMBLER  RTX51TNY                                                             05/20/2007 16:49:11 PAGE     4

0080 C007            190                     PUSH    AR7
0082 E500     F      191                     MOV     A,?RTX_CURRENTTASK
0084 23              192                     RL      A
0085 2400     F      193                     ADD     A,#?RTX?TASKSTATE?S+1
0087 F8              194                     MOV     R0,A
0088 C2AF            195                     CLR     EA
008A E6              196                     MOV     A,@R0
008B 4440            197                     ORL     A,#K_ROBIN
008D F6              198                     MOV     @R0,A
008E D2AF            199                     SETB    EA
                     200     
                     201     ; Perform a Task-Switch
0090                 202     SwitchNow:      
                     203     ;  switchnow ()  {
                     204     ;      uchar i;
                     205     ;      uchar limit;
                     206     
                     207     ;---- Variable 'current' assigned to Register 'R6' ----
                     208     ;---- Variable 'next' assigned to Register 'R7' ----
                     209     ;---- Variable 'i' assigned to Register 'R0' ----
                     210     ;---- Variable 'limit' assigned to Register 'R5' ----
                     211     ;
                     212     ;      next = current;
0090 D200     F      213                     SETB    ?RTX_TS_DELAY           ; Delay Task Switching
0092 E500     F      214                     MOV     A,?RTX_CURRENTTASK

⌨️ 快捷键说明

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