📄 os_cpu_a.lst
字号:
233 SUBB A,R0
234 MOV R5,A
235
236 MOV R1,#LOW(OSSimSTKBP)
237 INC R1
238 MOV DPH,@R1
239 INC R1
240 MOV DPL,@R1
241
242 MOV A,R5
243 MOVX @DPTR,A
244
245 INC DPTR
246
247 MOV A,DPL
248 CLR C
249 SUBB A,R5
250 MOV DPL,A
251 MOV A,DPH
252 SUBB A,#00H
253 MOV DPH,A
254
255 SIMIN:
256 MOVX A,@R0
A51 MACRO ASSEMBLER OS_CPU_A 04/13/2009 13:31:23 PAGE 5
257 MOVX @DPTR,A
258 INC DPTR
259 INC R0
260 DJNZ R5,SIMIN
261
262 ENDM
263
264
265 SimPOP MACRO
266 MOV R0,#LOW(OSSimSTKBP)
267 INC R0
268 MOV DPH,@R0
269 INC R0
270 MOV DPL,@R0
271
272 MOVX A,@DPTR
273 MOV R5,A
274
275 INC DPTR
276
277 MOV A,DPL
278 CLR C
279 SUBB A,R5
280 MOV DPL,A
281 MOV A,DPH
282 SUBB A,#00H
283 MOV DPH,A
284
285 MOV R0,?C_IBP
286
287 SIMOUT:
288 MOVX A,@DPTR
289 MOVX @R0,A
290 INC DPTR
291 INC R0
292 DJNZ R5,SIMOUT
293
294 ENDM
295
296
297
298
299
300
301
302 ;//----------------------------------------------------------------
---- 303 RSEG ?PR?OSStartHighRdy?OS_CPU_A
0000 304 OSStartHighRdy:
305 USING 1
0000 C2AF 306 CLR EA
0002 120000 F 307 LCALL OSTaskSwHook
0005 750060 F 308 MOV STKStart,#0x60
0008 309 _OSStartHighRdyGet:
310 ;//------------------------------------------
311 ;// load the low byte of address of (name)
312 ;// and load the TCB of OSTCBHighRdy to DPTR
0008 7800 F 313 MOV R0,#LOW (OSTCBCur)
000A 08 314 INC R0
000B 8683 315 MOV DPH,@R0
000D 08 316 INC R0
000E 8682 317 MOV DPL,@R0
318
319 ;//------------------------------------------
320 ;// get the STK of OSTCBCur task TCB
0010 A3 321 INC DPTR
0011 E0 322 MOVX A, @DPTR
A51 MACRO ASSEMBLER OS_CPU_A 04/13/2009 13:31:23 PAGE 6
0012 F9 323 MOV R1,A
0013 A3 324 INC DPTR
0014 E0 325 MOVX A, @DPTR
0015 F8 326 MOV R0,A
0016 8983 327 MOV DPH, R1
0018 8882 328 MOV DPL, R0
329
330 ;//------------------------------------------
331 ;// DPTR --> STK of task
332
001A E0 333 MOVX A, @DPTR
001B FD 334 MOV R5,A
335 ;//------------------------------------------
336 ;// copy user to system
001C A900 F 337 MOV R1, STKStart
001E 19 338 DEC R1
339
001F 340 COPY_STK:
001F A3 341 INC DPTR
0020 09 342 INC R1
0021 E0 343 MOVX A, @DPTR
0022 F7 344 MOV @R1, A
0023 DDFA 345 DJNZ R5, COPY_STK
346
347 ;//------------------------------------------
348 ;// OSRunning = 1; multitask start
0025 7800 F 349 MOV R0, #LOW(OSRunning)
0027 7601 350 MOV @R0,#01
351
352 ;//------------------------------------------
353 ;// Now R1 is the new task SP
0029 8981 354 MOV SP, R1
355 PopAll
393 SimPOP
007B D2AF 422 SETB EA
007D 32 423 RETI
424
425
426 ;//----------------------------------------------------------------
427
428 ;//----------------------------------------------------------------
---- 429 RSEG ?PR?OSCtxSw?OS_CPU_A
0000 430 OSCtxSw:
0000 C2AF 431 CLR EA
0002 7800 F 432 MOV R0,#?C_IBP
433 PushAll
471 SimPUSH
005E 507 OSCtxSw2:
508 ;//------------------------------------------
509 ;// SP - STKStart ===> R5
005E E581 510 MOV A, SP
0060 C3 511 CLR C
0061 9500 F 512 SUBB A, STKStart
0063 FD 513 MOV R5,A
0064 A900 F 514 MOV R1,STKStart
0066 ED 515 MOV A, R5
0067 2401 516 ADD A, #01
0069 FD 517 MOV R5,A
518
519 ;//------------------------------------------
006A 850083 F 520 MOV DPH, User_SP
006D 850082 F 521 MOV DPL, User_SP+1
522
523 ;//------------------------------------------
524 ;// DPTR - R5
0070 E582 525 MOV A, DPL ; Adjust the xstack pointer
A51 MACRO ASSEMBLER OS_CPU_A 04/13/2009 13:31:23 PAGE 7
0072 C3 526 CLR C
0073 9D 527 SUBB A, R5
0074 F582 528 MOV DPL,A
0076 E583 529 MOV A, DPH
0078 9400 530 SUBB A, #00H
007A F583 531 MOV DPH,A
532
533 ;//------------------------------------------
534 ;// User_SP ===> DPTR
007C 858300 F 535 MOV User_SP, DPH
007F 858200 F 536 MOV User_SP+1, DPL
537
0082 A3 538 INC DPTR
539
540 ;//------------------------------------------
541 ;// Save the number of bytes saved
0083 ED 542 MOV A, R5
0084 F0 543 MOVX @DPTR,A
544
545 ;//------------------------------------------
546 ;// Save to user stk
0085 ED 547 MOV A, R5
0086 FC 548 MOV R4,A
0087 19 549 DEC R1
0088 550 SAVE_STK:
0088 A3 551 INC DPTR
0089 09 552 INC R1
008A E7 553 MOV A, @R1
008B F0 554 MOVX @DPTR, A
008C DCFA 555 DJNZ R4, SAVE_STK
556
557 ;//------------------------------------------
008E 7800 F 558 MOV R0,#LOW(OSTCBCur)
0090 08 559 INC R0
0091 8683 560 MOV DPH,@R0
0093 08 561 INC R0
0094 8682 562 MOV DPL,@R0
563
0096 A3 564 INC DPTR
0097 E500 F 565 MOV A,User_SP
0099 F0 566 MOVX @DPTR,A
009A A3 567 INC DPTR
009B E500 F 568 MOV A,User_SP+1
009D F0 569 MOVX @DPTR,A
570
009E 7800 F 571 MOV R0,#LOW(OSTCBCur)
00A0 08 572 INC R0
00A1 7900 F 573 MOV R1,#LOW(OSTCBHighRdy)
00A3 09 574 INC R1
00A4 E7 575 MOV A,@R1
00A5 F6 576 MOV @R0,A
577
00A6 08 578 INC R0
00A7 09 579 INC R1
00A8 E7 580 MOV A,@R1
00A9 F6 581 MOV @R0,A
582
00AA 7800 F 583 MOV R0,#OSPrioCur
00AC 7900 F 584 MOV R1,#OSPrioHighRdy
585
00AE E7 586 MOV A,@R1
00AF F6 587 MOV @R0,A
588
589 ;//------------------------------------------
00B0 120000 F 590 LCALL OSTaskSwHook
591
A51 MACRO ASSEMBLER OS_CPU_A 04/13/2009 13:31:23 PAGE 8
00B3 020000 F 592 LJMP _OSStartHighRdyGet
593 ;//------------------------------------------
594
595 ;//----------------------------------------------------------------
596
597 ;//----------------------------------------------------------------
---- 598 RSEG ?PR?OSIntCtxSw?OS_CPU_A
0000 599 OSIntCtxSw:
600 ;//------------------------------------------
601 ;// Adjust the stack pointer to remove call to:
602 ;// - call to OSIntExit (2 bytes)
603 ;// - call to OSIntCtxSw (2 bytes)
604 ;// - locals (0 bytes)
0000 C2AF 605 CLR EA
0002 E581 606 MOV A, SP
0004 C3 607 CLR C
0005 9404 608 SUBB A, #4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -