📄 os_cpu_a.lst
字号:
187 POP DPH
188 POP B
189 POP ACC
190 POP PSW
A51 MACRO ASSEMBLER OS_CPU_A 02/21/2006 13:52:53 PAGE 4
191 ENDM
192 ;//----------------------------------------------------------------
---- 193 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 194 OSStartHighRdy:
195 USING 0
0000 C2AF 196 CLR EA
0002 120000 F 197 LCALL OSTaskSwHook
0005 858100 F 198 MOV STKStart,SP
0008 199 _OSStartHighRdyGet:
200 ;//------------------------------------------
201 ;// load the low byte of address of (name)
202 ;// and load the TCB of OSTCBHighRdy to DPTR
0008 7800 F 203 MOV R0,#LOW (OSTCBCur)
000A 08 204 INC R0
000B 8683 205 MOV DPH,@R0
000D 08 206 INC R0
000E 8682 207 MOV DPL,@R0
208
209 ;//------------------------------------------
210 ;// get the STK of OSTCBCur task TCB
0010 A3 211 INC DPTR
0011 E0 212 MOVX A, @DPTR
0012 F9 213 MOV R1,A
0013 A3 214 INC DPTR
0014 E0 215 MOVX A, @DPTR
0015 F8 216 MOV R0,A
0016 8983 217 MOV DPH, R1
0018 8882 218 MOV DPL, R0
219
220 ;//------------------------------------------
221 ;// DPTR --> STK of task
001A A3 222 INC DPTR
001B E0 223 MOVX A, @DPTR
001C FD 224 MOV R5,A
225
226 ;//------------------------------------------
227 ;// copy user to system
001D A900 F 228 MOV R1, STKStart
001F 19 229 DEC R1
0020 ED 230 MOV A, R5
0021 FC 231 MOV R4, A
232 ;MOV R4,#2 ;调试加的
0022 233 COPY_STK:
0022 A3 234 INC DPTR
0023 09 235 INC R1
0024 E0 236 MOVX A, @DPTR
0025 F7 237 MOV @R1, A
0026 DCFA 238 DJNZ R4, COPY_STK
239
240 ;//------------------------------------------
241 ;// OSRunning = 1; multitask start
0028 7800 F 242 MOV R0, #LOW(OSRunning)
002A 7601 243 MOV @R0,#01
244
245 ;//------------------------------------------
246 ;// Now R1 is the new task SP
002C 8981 247 MOV SP, R1
248 PopAll
0056 D2AF 273 SETB EA
0058 32 274 RETI
275
276
277 ;//----------------------------------------------------------------
278
279 ;//----------------------------------------------------------------
---- 280 RSEG ?PR?OSCtxSw?OS_CPU_A
A51 MACRO ASSEMBLER OS_CPU_A 02/21/2006 13:52:53 PAGE 5
0000 281 OSCtxSw:
0000 C2AF 282 CLR EA
283 PushAll
002A 309 OSCtxSw2:
310 ;//------------------------------------------
311 ;// SP - STKStart ===> R5
002A E581 312 MOV A, SP
002C C3 313 CLR C
002D 9500 F 314 SUBB A, STKStart
002F FD 315 MOV R5,A
0030 A900 F 316 MOV R1,STKStart
0032 ED 317 MOV A, R5
0033 2401 318 ADD A, #01
0035 FD 319 MOV R5,A
320
321 ;//------------------------------------------
0036 850083 F 322 MOV DPH, User_SP
0039 850082 F 323 MOV DPL, User_SP+1
324
325 ;//------------------------------------------
326 ;// DPTR - R5
003C E582 327 MOV A, DPL ; Adjust the xstack pointer
003E C3 328 CLR C
003F 9D 329 SUBB A, R5
0040 F582 330 MOV DPL,A
0042 E583 331 MOV A, DPH
0044 9400 332 SUBB A, #00H
0046 F583 333 MOV DPH,A
334
335 ;//------------------------------------------
336 ;// User_SP ===> DPTR
0048 858300 F 337 MOV User_SP, DPH
004B 858200 F 338 MOV User_SP+1, DPL
339
004E A3 340 INC DPTR
341
342 ;//------------------------------------------
343 ;// Save the number of bytes saved
004F ED 344 MOV A, R5
0050 F0 345 MOVX @DPTR,A
346
347 ;//------------------------------------------
348 ;// Save to user stk
0051 ED 349 MOV A, R5
0052 FC 350 MOV R4,A
0053 19 351 DEC R1
0054 352 SAVE_STK:
0054 A3 353 INC DPTR
0055 09 354 INC R1
0056 E7 355 MOV A, @R1
0057 F0 356 MOVX @DPTR, A
0058 DCFA 357 DJNZ R4, SAVE_STK
358
359 ;//------------------------------------------
005A 7800 F 360 MOV R0,#LOW(OSTCBCur)
005C 08 361 INC R0
005D 8683 362 MOV DPH,@R0
005F 08 363 INC R0
0060 8682 364 MOV DPL,@R0
365
0062 A3 366 INC DPTR
0063 E500 F 367 MOV A,User_SP
0065 F0 368 MOVX @DPTR,A
0066 A3 369 INC DPTR
0067 E500 F 370 MOV A,User_SP+1
0069 F0 371 MOVX @DPTR,A
A51 MACRO ASSEMBLER OS_CPU_A 02/21/2006 13:52:53 PAGE 6
372
373 ;//------------------------------------------
006A 120000 F 374 LCALL OSTaskSwHook
006D 120000 F 375 LCALL OSTCBSWHook
0070 020000 F 376 LJMP _OSStartHighRdyGet
377 ;//------------------------------------------
378
379 ;//----------------------------------------------------------------
380
381 ;//----------------------------------------------------------------
---- 382 RSEG ?PR?OSIntCtxSw?OS_CPU_A
0000 383 OSIntCtxSw:
384 ;//------------------------------------------
385 ;// Adjust the stack pointer to remove call to:
386 ;// - call to OSIntExit (2 bytes)
387 ;// - call to OSIntCtxSw (2 bytes)
388 ;// - locals (0 bytes)
0000 C2AF 389 CLR EA
0002 E581 390 MOV A, SP
0004 C3 391 CLR C
0005 9404 392 SUBB A, #4
0007 F581 393 MOV SP,A
0009 020000 F 394 LJMP OSCtxSw2
395 ;//----------------------------------------------------------------
396
397 ;//----------------------------------------------------------------
---- 398 CSEG AT 0000BH
000B 020000 F 399 LJMP OSTickISR
400
---- 401 RSEG ?PR?OSTickISR?OS_CPU_A
0000 402 OSTickISR:
403 USING 0
404 PushAll
0028 C2AF 430 CLR EA
002A C28C 431 CLR TR0
002C 758C3C 432 MOV TH0,#3CH
002F 758AB0 433 MOV TL0,#0B0H
0032 D28C 434 SETB TR0
435
0034 D5000F F 436 DJNZ TickTimeInit,OSTI_1
0037 120000 F 437 LCALL TickTime
003A 120000 F 438 LCALL OSTickISRHook
003D 120000 F 439 LCALL OSIntEnter
0040 120000 F 440 LCALL OSTimeTick
0043 120000 F 441 LCALL OSIntExit
442
0046 443 OSTI_1:
444 PopAll
006E D2AF 469 SETB EA
0070 32 470 RETI
471 ;//----------------------------------------------------------------
472 ;//----------------------------------------------------------------
---- 473 CSEG AT 00003H
0003 020000 F 474 LJMP Extern_0_ISR
---- 475 RSEG ?PR?_EXTERN_0_ISR_?OS_CPU_A
0000 476 Extern_0_ISR:
477 USING 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -