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

📄 os_send_signal.lst

📁 让Keil 的 RTX51 运行在 P89C669 让Keil 的 RTX51 运行在 P89C669
💻 LST
字号:
AX51 MACRO ASSEMBLER  OS_SEND_SIGNAL                                                        11/21/05 17:35:22 PAGE     1


MACRO ASSEMBLER AX51 V3.01
OBJECT MODULE PLACED IN .\Keil\os_send_signal.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\AX51.EXE OS\os_send_signal.a51 MOD_MX51 SET(SMALL) DEBUG PRINT(.\Keil\os_send_sign
                      al.lst) OBJECT(.\Keil\os_send_signal.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 and Keil Software, Inc.  1991 - 2002
                          4     ;------------------------------------------------------------------------------
                          5     ;
                          6     ;  OS_SEND_SIGNAL.A51:  This module contains the OS_SEND_SIGNAL function
                          7     ;
                          8     ;  RTX51 TINY VERSION 2
                          9     ;
                         10     ;------------------------------------------------------------------------------
                         11     
                         12     NAME    ?RTX51_TINY_OS_SEND_SIGNAL
                         13     
                         14     ;$include (os_defines.inc)
                    +1   15     ;------------------------------------------------------------------------------
                    +1   16     ;
                    +1   17     ;  OS_DEFINES.INC:  Defines  (a)  External References for OS routines
                    +1   18     ;                            (b)  Bits in TaskState
                    +1   19     ;
                    +1   20     ;  RTX51 TINY VERSION 2.0
                    +1   21     ;
                    +1   22     ;------------------------------------------------------------------------------
                    +1   23     EXTRN   NUMBER (?RTX_RAMTOP)            ; top of RAM for stack
                    +1   24     EXTRN   DATA   (?RTX_CURRENTTASK)       ; current running task
                    +1   25     EXTRN   ECODE   (os_switch_task)         ; perform a task switch
                    +1   26     
                    +1   27     EXTRN   HCONST (TASK_ENTRY)
                    +1   28     EXTRN   NUMBER (?RTX_MAXTASKN)            ; top of RAM for stack
                    +1   29     
------              +1   30     ?RTX?TASKSTATE?S  SEGMENT IDATA         ; table of task states
------              +1   31     ?RTX?TASKSP?S     SEGMENT IDATA         ; table of task stack pointers
                    +1   32     
                    +1   33     
                    +1   34     
                    +1   35     ; Internal Status Bits of Task State
                    +1   36     ; Bits in TaskState:
                    +1   37     ;  TaskState.0  = Wait for Signal
                    +1   38     ;  TaskState.1  = Wait for TimeOut
                    +1   39     ;  TaskState.2  = Signal Flag
                    +1   40     ;  TaskState.3  = TimeOut Flag
                    +1   41     ;  TaskState.4  = Task Ready (Wait for Running)
                    +1   42     ;  TaskState.5  = Task Active (enabled with os_create)
                    +1   43     ;  TaskState.6  = Round Robin Time Out
                    +1   44     ;  TaskState.7  = Run Flag
                    +1   45     
                    +1   46     ; byte mask definitions
 0001               +1   47     K_SIG           EQU     1
 0002               +1   48     K_TMO           EQU     2
 0004               +1   49     SIG_EVENT       EQU     4
 0008               +1   50     TMO_EVENT       EQU     8
 0010               +1   51     K_READY         EQU     16
 0020               +1   52     K_ACTIVE        EQU     32
 0040               +1   53     K_ROBIN         EQU     64
 0080               +1   54     K_IVL           EQU     128  ; not a task state bit; only used in os_wait
 0080               +1   55     RDY_EVENT       EQU     128  ; READY status flag
 0080               +1   56     K_RDY           EQU     128  ; READY status flag
                    +1   57     
AX51 MACRO ASSEMBLER  OS_SEND_SIGNAL                                                        11/21/05 17:35:22 PAGE     2

                    +1   58     ; bit position definitions
 0000               +1   59     B_WAITSIG       EQU     0
 0001               +1   60     B_WAITTIM       EQU     1
 0002               +1   61     B_SIGNAL        EQU     2
 0003               +1   62     B_TIMEOUT       EQU     3
 0004               +1   63     B_READY         EQU     4
 0005               +1   64     B_ACTIVE        EQU     5
 0006               +1   65     B_ROBIN         EQU     6
 0007               +1   66     B_IVL           EQU     7    ; not a task state bit; only used in os_wait
 0007               +1   67     B_RDY           EQU     7    ; READY status flag
                    +1   68     
                    +1   69     
 00A8.7             +1   70     EA      BIT     0AFH
 00A8.1             +1   71     ET0     BIT     0A9H
                         72     
                         73     
                         74     PUBLIC  _os_send_signal
                         75     PUBLIC  _isr_send_signal
                         76     EXTRN ECODE (?RTX?SET_ISR)
                         77     
------                   78     ?RTX?CODE       SEGMENT ECODE
------                   79                     RSEG    ?RTX?CODE
                         80                     USING   0               ; Registerbank 0 for following code
                         81     
                         82     
000000                   83     _os_send_signal:
000000                   84     _isr_send_signal:
                         85     ;  os_send_signal (uchar taskid)  {
                         86     ;    uchar data *p;
                         87     ;---- Variable 'taskid' assigned to Register 'R7' ----
                         88     ;---- Variable 'p' assigned to Register 'R0' ----
                         89     ;    if (no > MAXTASKN)  return (0xff);
000000 EF                90                     MOV     A,R7
000001 D3                91                     SETB    C
000002 9400       E      92                     SUBB    A,#?RTX_MAXTASKN
000004 4004              93                     JC      ??C0010
000006 7FFF              94                     MOV     R7,#0FFH
000008 A522              95                     ERET
00000A                   96     ??C0010:
                         97     
                         98     ;    p = &STATE[taskid].st;
00000A EF                99                     MOV     A,R7
00000B 23               100                     RL      A
00000C 2400       F     101                     ADD     A,#?RTX?TASKSTATE?S+1
00000E F8               102                     MOV     R0,A
00000F C2AF             103                     CLR     EA
000011 E6               104                     MOV     A,@R0
                        105     ;
                        106     ;    if (*p & K_ACTIVE)  {
000012 30E505           107                     JNB     ACC.B_ACTIVE,?C0026
                        108     ;      if (*p & K_SIG)  *p |= K_READY;
000015 30E002           109                     JNB     ACC.B_WAITSIG,?C0026
000018 D2E4             110                     SETB    ACC.B_READY
                        111     ;    }
00001A                  112     ?C0026:
                        113     ;    *p |= SIG_EVENT;
00001A D2E2             114                     SETB    ACC.B_SIGNAL
00001C C6               115                     XCH     A,@R0
00001D D2AF             116                     SETB    EA
00001F 7F00             117                     MOV     R7,#0
000021 30E201           118                     JNB     ACC.B_SIGNAL,NO_SIG_PENDING
000024 0F               119                     INC     R7
000025 A502000000 E     120     NO_SIG_PENDING: EJMP     ?RTX?SET_ISR
                        121     
                        122                     END
AX51 MACRO ASSEMBLER  OS_SEND_SIGNAL                                                        11/21/05 17:35:22 PAGE     3

SYMBOL TABLE LISTING
------ ----- -------


N A M E                     T Y P E  V A L U E     ATTRIBUTES

??C0010. . . . . . . . . .  EC ADDR  000AH     R   SEG=?RTX?CODE
?C0026 . . . . . . . . . .  EC ADDR  001AH     R   SEG=?RTX?CODE
?RTX51_TINY_OS_SEND_SIGNAL  -- ----  -------       
?RTX?CODE. . . . . . . . .  EC SEG   00002AH       REL=UNIT, ALN=BYTE
?RTX?SET_ISR . . . . . . .  EC ADDR  -------       EXT
?RTX?TASKSP?S. . . . . . .  I  SEG   000000H       REL=UNIT, ALN=BYTE
?RTX?TASKSTATE?S . . . . .  I  SEG   000000H       REL=UNIT, ALN=BYTE
?RTX_CURRENTTASK . . . . .  D  ADDR  -------       EXT
?RTX_MAXTASKN. . . . . . .  N  NUMB  -------       EXT
?RTX_RAMTOP. . . . . . . .  N  NUMB  -------       EXT
_ISR_SEND_SIGNAL . . . . .  EC ADDR  0000H     R   SEG=?RTX?CODE
_OS_SEND_SIGNAL. . . . . .  EC ADDR  0000H     R   SEG=?RTX?CODE
ACC. . . . . . . . . . . .  D  ADDR  00E0H     A   
B_ACTIVE . . . . . . . . .  N  NUMB  0005H     A   
B_IVL. . . . . . . . . . .  N  NUMB  0007H     A   
B_RDY. . . . . . . . . . .  N  NUMB  0007H     A   
B_READY. . . . . . . . . .  N  NUMB  0004H     A   
B_ROBIN. . . . . . . . . .  N  NUMB  0006H     A   
B_SIGNAL . . . . . . . . .  N  NUMB  0002H     A   
B_TIMEOUT. . . . . . . . .  N  NUMB  0003H     A   
B_WAITSIG. . . . . . . . .  N  NUMB  0000H     A   
B_WAITTIM. . . . . . . . .  N  NUMB  0001H     A   
EA . . . . . . . . . . . .  B  ADDR  00A8H.7   A   
ET0. . . . . . . . . . . .  B  ADDR  00A8H.1   A   
K_ACTIVE . . . . . . . . .  N  NUMB  0020H     A   
K_IVL. . . . . . . . . . .  N  NUMB  0080H     A   
K_RDY. . . . . . . . . . .  N  NUMB  0080H     A   
K_READY. . . . . . . . . .  N  NUMB  0010H     A   
K_ROBIN. . . . . . . . . .  N  NUMB  0040H     A   
K_SIG. . . . . . . . . . .  N  NUMB  0001H     A   
K_TMO. . . . . . . . . . .  N  NUMB  0002H     A   
NO_SIG_PENDING . . . . . .  EC ADDR  0025H     R   SEG=?RTX?CODE
OS_SWITCH_TASK . . . . . .  EC ADDR  -------       EXT
RDY_EVENT. . . . . . . . .  N  NUMB  0080H     A   
SIG_EVENT. . . . . . . . .  N  NUMB  0004H     A   
TASK_ENTRY . . . . . . . .  HC ADDR  -------       EXT
TMO_EVENT. . . . . . . . .  N  NUMB  0008H     A   


REGISTER BANK(S) USED: 0 

ASSEMBLY COMPLETE.  0 WARNING(S), 0 ERROR(S).

⌨️ 快捷键说明

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