📄 os_reset_interval.lst
字号:
AX51 MACRO ASSEMBLER OS_RESET_INTERVAL 11/21/05 17:35:22 PAGE 1
MACRO ASSEMBLER AX51 V3.01
OBJECT MODULE PLACED IN .\Keil\os_reset_interval.obj
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\AX51.EXE OS\os_reset_interval.a51 MOD_MX51 SET(SMALL) DEBUG PRINT(.\Keil\os_reset_
interval.lst) OBJECT(.\Keil\os_reset_interval.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_RESET_INTERVAL.A51: This module contains the OS_RESET_INTERVAL function
7 ;
8 ; RTX51 TINY VERSION 2
9 ;
10 ;------------------------------------------------------------------------------
11
12 NAME ?RTX51_TINY_OS_RESET_INTERVAL
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_RESET_INTERVAL 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_reset_interval
75
76
------ 77 ?RTX?CODE SEGMENT ECODE
------ 78 RSEG ?RTX?CODE
79 USING 0 ; Registerbank 0 for following code
80
000000 81 _os_reset_interval:
82 ; p = &STATE[taskid].timer;
000000 E500 E 83 MOV A,?RTX_CURRENTTASK
000002 23 84 RL A
000003 2400 F 85 ADD A,#?RTX?TASKSTATE?S
000005 F8 86 MOV R0,A
000006 C3 87 CLR C
000007 C2AF 88 CLR EA ; 关中断
000009 E6 89 MOV A,@R0
90 ; *p -= ticks ; interval value
00000A 9F 91 SUBB A,R7 ; timer -= ticks
00000B F6 92 MOV @R0,A
00000C D2AF 93 SETB EA ; 开中断
00000E A522 94 ERET
95 ; }
96
97 END
AX51 MACRO ASSEMBLER OS_RESET_INTERVAL 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
?RTX51_TINY_OS_RESET_INTERVAL -- ---- -------
?RTX?CODE . . . . . . . . . . EC SEG 000010H REL=UNIT, ALN=BYTE
?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
_OS_RESET_INTERVAL. . . . . . EC ADDR 0000H R SEG=?RTX?CODE
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
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 + -