📄 os_cpu_a.lst
字号:
175.1 00000018 0991 LD R16,Y+
175.2 0000001A 0DBF OUT SPL,R16
175.3 0000001C 0991 LD R16,Y+
175.4 0000001E 0EBF OUT SPH,R16
175.5 00000020 ENDM
176 00000020 POPRS
; Pop all registers and status
register
176.1 00000020 0991 LD R16,Y+
176.2 00000022 0FBF OUT SREG,R16
176.3 00000024 F991 LD R31,Y+
176.4 00000026 E991 LD R30,Y+
176.5 00000028 B991 LD R27,Y+
176.6 0000002A A991 LD R26,Y+
176.7 0000002C 9991 LD R25,Y+
176.8 0000002E 8991 LD R24,Y+
176.9 00000030 7991 LD R23,Y+
176.10 00000032 6991 LD R22,Y+
176.11 00000034 5991 LD R21,Y+
176.12 00000036 4991 LD R20,Y+
176.13 00000038 3991 LD R19,Y+
176.14 0000003A 2991 LD R18,Y+
176.15 0000003C 1991 LD R17,Y+
176.16 0000003E 0991 LD R16,Y+
176.17 00000040 F990 LD R15,Y+
176.18 00000042 E990 LD R14,Y+
176.19 00000044 D990 LD R13,Y+
176.20 00000046 C990 LD R12,Y+
176.21 00000048 B990 LD R11,Y+
176.22 0000004A A990 LD R10,Y+
176.23 0000004C 9990 LD R9,Y+
176.24 0000004E 8990 LD R8,Y+
176.25 00000050 7990 LD R7,Y+
176.26 00000052 6990 LD R6,Y+
176.27 00000054 5990 LD R5,Y+
176.28 00000056 4990 LD R4,Y+
176.29 00000058 3990 LD R3,Y+
176.30 0000005A 2990 LD R2,Y+
176.31 0000005C 1990 LD R1,Y+
176.32 0000005E 0990 LD R0,Y+
176.33 00000060 ENDM
177 00000060 0895 RET
; Start task
178 00000062
179 00000062 ;*********************************************
**********************************************
*************
180 00000062 ; TASK
LEVEL CONTEXT SWITCH
181 00000062 ;
182 00000062 ; Description : This function is called when a
task makes a higher priority task ready-to-ru
n.
183 00000062 ;
184 00000062 ; Note(s) : 1) Upon entry,
185 00000062 ; OSTCBCur points to the
OS_TCB of the task to suspend
186 00000062 ; OSTCBHighRdy points to the
OS_TCB of the task to resume
187 00000062 ;
188 00000062 ; 2) The stack frame of the task
to suspend looks as follows:
189 00000062 ;
190 00000062 ; SP+0
--> LSB of task code address
191 00000062 ; +1
MSB of task code address
(High memory)
192 00000062 ;
193 00000062 ; 3) The saved context of the
task to resume looks as follows:
194 00000062 ;
195 00000062 ; OSTCBHighRdy->OSTCBStkPtr
--> LSB of (return) stack pointer
(Low memory)
196 00000062 ;
SPH of (return) stack pointer
197 00000062 ;
Flags to load in status register
198 00000062 ;
R31
199 00000062 ;
R30
200 00000062 ;
R7
201 00000062 ;
.
202 00000062 ;
.
203 00000062 ;
.
204 00000062 ;
R0
(High memory)
205 00000062 ;*********************************************
**********************************************
*************
206 00000062
207 00000062 OSCtxSw: PUSHRS
; Save current task's context
207.1 00000062 0A92 ST -Y,R0
207.2 00000064 1A92 ST -Y,R1
207.3 00000066 2A92 ST -Y,R2
207.4 00000068 3A92 ST -Y,R3
207.5 0000006A 4A92 ST -Y,R4
207.6 0000006C 5A92 ST -Y,R5
207.7 0000006E 6A92 ST -Y,R6
207.8 00000070 7A92 ST -Y,R7
207.9 00000072 8A92 ST -Y,R8
207.10 00000074 9A92 ST -Y,R9
207.11 00000076 AA92 ST -Y,R10
207.12 00000078 BA92 ST -Y,R11
207.13 0000007A CA92 ST -Y,R12
207.14 0000007C DA92 ST -Y,R13
207.15 0000007E EA92 ST -Y,R14
207.16 00000080 FA92 ST -Y,R15
207.17 00000082 0A93 ST -Y,R16
207.18 00000084 1A93 ST -Y,R17
207.19 00000086 2A93 ST -Y,R18
207.20 00000088 3A93 ST -Y,R19
207.21 0000008A 4A93 ST -Y,R20
207.22 0000008C 5A93 ST -Y,R21
207.23 0000008E 6A93 ST -Y,R22
207.24 00000090 7A93 ST -Y,R23
207.25 00000092 8A93 ST -Y,R24
207.26 00000094 9A93 ST -Y,R25
207.27 00000096 AA93 ST -Y,R26
207.28 00000098 BA93 ST -Y,R27
207.29 0000009A EA93 ST -Y,R30
207.30 0000009C FA93 ST -Y,R31
207.31 0000009E 0FB7 IN R16,SREG
207.32 000000A0 0A93 ST -Y,R16
207.33 000000A2 ENDM
208 000000A2 PUSHSP
208.1 000000A2 0EB7 IN R16,SPH
208.2 000000A4 0A93 ST -Y,R16
208.3 000000A6 0DB7 IN R16,SPL
208.4 000000A8 0A93 ST -Y,R16
208.5 000000AA ENDM
209 000000AA
210 000000AA E091.... LDS R30,OSTCBCur
; Z =
OSTCBCur->OSTCBSt
kPtr
211 000000AE F091.... LDS R31,OSTCBCur+1
;
212 000000B2 C193 ST Z+,R28
; Save Y
(R29:R28)
pointer
213 000000B4 D193 ST Z+,R29
;
214 000000B6
215 000000B6 .... RCALL OSTaskSwHook
; Call user defined task switch hook
216 000000B8
217 000000B8 0091.... LDS R16,OSPrioHighRdy
; OSPrioCur
= OSPrioHighRdy
218 000000BC 0093.... STS OSPrioCur,R16
219 000000C0
220 000000C0 E091.... LDS R30,OSTCBHighRdy
; Let Z
point to TCB of
highest priority
task
221 000000C4 F091.... LDS R31,OSTCBHighRdy+1
; ready to
run
222 000000C8 E093.... STS OSTCBCur,R30
;
OSTCBCur =
OSTCBHighRdy
223 000000CC F093.... STS OSTCBCur+1,R31
;
224 000000D0
225 000000D0 C191 LD R28,Z+
; Restore Y
pointer
226 000000D2 D191 LD R29,Z+
;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -