📄 rtx51tny.lst
字号:
439 ; p1 = STKP[i];
017E 7400 F 440 MOV A,#?RTX?TASKSP?S
0180 2E 441 ADD A,R6
0181 F8 442 MOV R0,A
0182 E6 443 MOV A,@R0
0183 F9 444 MOV R1,A
445 ; p2 = i == MAXTASKN ? RAMTOP : STKP[i+1];
0184 08 446 INC R0
0185 E6 447 MOV A,@R0
0186 18 448 DEC R0
0187 BE0002 F 449 CJNE R6,#?RTX_MAXTASKN,?C0015_
018A 7400 F 450 MOV A,#?RTX_RAMTOP
018C 451 ?C0015_:
018C FD 452 MOV R5,A
453
A51 MACRO ASSEMBLER RTX51TNY 05/20/2007 16:49:11 PAGE 8
018D 454 ?C0017:
018D ED 455 MOV A,R5
018E 69 456 XRL A,R1
018F 6009 457 JZ ?C0018
458 ; while (p1 != p2) {
459 ; p1++;
460 ; DBYTE[p1-2] = DBYTE[p1];
461 ; }
0191 09 462 INC R1
0192 E7 463 MOV A,@R1
0193 19 464 DEC R1
0194 19 465 DEC R1
0195 F7 466 MOV @R1,A
0196 09 467 INC R1
0197 09 468 INC R1
0198 80F3 469 SJMP ?C0017
019A 470 ?C0018:
471 ; STKP[i] -= 2;
019A 16 472 DEC @R0
019B 16 473 DEC @R0
474 ; }
019C 80DA 475 SJMP ?C0013_
019E 476 ?C0014:
477 ; if (i > no) SP += 2;
019E EE 478 MOV A,R6
019F D3 479 SETB C
01A0 9F 480 SUBB A,R7
01A1 4004 481 JC ?C0020
01A3 0581 482 INC SP
01A5 0581 483 INC SP
01A7 484 ?C0020:
485 ; while (i > no) {
01A7 EE 486 MOV A,R6
01A8 D3 487 SETB C
01A9 9F 488 SUBB A,R7
01AA 4022 489 JC ?C0021
490 ; p1 = i == current ? SP : STKP[i+1];
01AC 7400 F 491 MOV A,#?RTX?TASKSP?S
01AE 2E 492 ADD A,R6
01AF F8 493 MOV R0,A
01B0 08 494 INC R0
01B1 E6 495 MOV A,@R0
01B2 F9 496 MOV R1,A
01B3 EE 497 MOV A,R6
01B4 B50002 F 498 CJNE A,?RTX_CURRENTTASK,?C0022
01B7 A981 499 MOV R1,SP
01B9 500 ?C0022:
501 ; STKP[i] += 2;
01B9 18 502 DEC R0
01BA 06 503 INC @R0
01BB 06 504 INC @R0
505 ; p2 = STKP[i];
01BC E6 506 MOV A,@R0
01BD FD 507 MOV R5,A
01BE 508 ?C0024:
509 ; while (p1 != p2) {
01BE ED 510 MOV A,R5
01BF 69 511 XRL A,R1
01C0 6009 512 JZ ?C0025
513 ; DBYTE[p1] = DBYTE[p1-2];
01C2 19 514 DEC R1
01C3 19 515 DEC R1
01C4 E7 516 MOV A,@R1
01C5 09 517 INC R1
01C6 09 518 INC R1
01C7 F7 519 MOV @R1,A
A51 MACRO ASSEMBLER RTX51TNY 05/20/2007 16:49:11 PAGE 9
520 ; p1--;
01C8 19 521 DEC R1
522 ; }
01C9 80F3 523 SJMP ?C0024
01CB 524 ?C0025:
525 ; i--;
01CB 1E 526 DEC R6
527 ; }
01CC 80D9 528 SJMP ?C0020
529
01CE 530 ?C0021:
531 ;
532 ; DWORD[STKP[no]] = ENTRY[no];
01CE EF 533 MOV A,R7
01CF 2400 F 534 ADD A,#?RTX?TASKSP?S
01D1 F8 535 MOV R0,A
01D2 E6 536 MOV A,@R0
01D3 04 537 INC A
01D4 F8 538 MOV R0,A
01D5 EF 539 MOV A,R7
01D6 2F 540 ADD A,R7
01D7 04 541 INC A
01D8 900000 F 542 MOV DPTR,#?RTX?TASKENT?S
01DB 93 543 MOVC A,@A+DPTR
01DC F6 544 MOV @R0,A
01DD 08 545 INC R0
01DE EF 546 MOV A,R7
01DF 2F 547 ADD A,R7
01E0 93 548 MOVC A,@A+DPTR
01E1 F6 549 MOV @R0,A
550 ; return (0);
01E2 7F00 551 MOV R7,#0
552 ; }
553
01E4 22 554 RET
555
556 ; os_wait (uchar typ, uchar timeout) {
01E5 557 _os_wait:
01E5 558 _OS_wait1: ; entry point for 1 parameter
01E5 559 _OS_wait2: ; entry point for 2 parameters
560 ; uchar st = 0;
561 ;---- Variable 'typ' assigned to Register 'R7' ----
562 ;---- Variable 'timeout' assigned to Register 'R5' ----
563 ;---- Variable 'st' assigned to Register 'R6' ----
01E5 7EFF 564 MOV R6,#0FFH
565 ;
566 ;
01E7 E500 F 567 MOV A,?RTX_CURRENTTASK
01E9 23 568 RL A
01EA 2400 F 569 ADD A,#?RTX?TASKSTATE?S+1
01EC F8 570 MOV R0,A
571 ; if (typ == 0) goto no_wait;
01ED EF 572 MOV A,R7
01EE 605B 573 JZ no_wait
574 ;
575 ; if (typ & K_IVL) {
01F0 C2A9 576 CLR ET0
01F2 30E71A 577 JNB ACC.B_INTERVAL,??C0005
01F5 18 578 DEC R0
579 ; STATE[current].timer += timeout;
01F6 E6 580 MOV A,@R0
01F7 600B 581 JZ ??C0006_
01F9 2D 582 ADD A,R5
01FA F6 583 MOV @R0,A
584 ; if (!CY) {
01FB 6002 585 JZ ??C0006a ; zero means no wait
A51 MACRO ASSEMBLER RTX51TNY 05/20/2007 16:49:11 PAGE 10
01FD 4007 586 JC ??C0006
587 ; st = TMO_EVENT;
01FF 7E08 588 ??C0006a: MOV R6,#TMO_EVENT
589 ; goto no_wait;
0201 08 590 INC R0
0202 8047 591 SJMP no_wait;
592 ; }
0204 593 ??C0006_:
0204 ED 594 MOV A,R5
0205 F6 595 MOV @R0,A
0206 596 ??C0006:
0206 08 597 INC R0
598 ; STATE[current].st |= K_TMO;
0207 C2AF 599 CLR EA
0209 E6 600 MOV A,@R0
020A 4402 601 ORL A,#K_TMO
020C F6 602 MOV @R0,A
020D D2AF 603 SETB EA
604 ; }
020F 605 ??C0005:
606 ; if (typ & K_TMO) {
020F EF 607 MOV A,R7
0210 30E112 608 JNB ACC.B_WAITTIM,??C0007
609 ; if (timeout == 0) {
0213 ED 610 MOV A,R5
0214 7004 611 JNZ ??C0008
612 ; st = TMO_EVENT;
0216 7E08 613 MOV R6,#TMO_EVENT
614 ; goto no_wait;
0218 8031 615 SJMP no_wait
616 ; }
021A 617 ??C0008:
021A 18 618 DEC R0
619 ; STATE[current].timer = timeout;
021B F6 620 MOV @R0,A
621 ; STATE[current].st |= K_TMO;
021C 08 622 INC R0
021D C2AF 623 CLR EA
021F E6 624 MOV A,@R0
0220 4402 625 ORL A,#K_TMO
0222 F6 626 MOV @R0,A
0223 D2AF 627 SETB EA
628 ; }
0225 629 ??C0007:
630 ; if (typ & K_SIG) {
0225 EF 631 MOV A,R7
0226 30E015 632 JNB ACC.B_WAITSIG,??C0003
633 ; if (STATE[current].st & SIG_EVENT) {
0229 C2AF 634 CLR EA
022B E6 635 MOV A,@R0
022C 30E206 636 JNB ACC.B_SIGNAL,??C0004
022F D2AF 637 SETB EA
638 ; st = SIG_EVENT;
0231 7E04 639 MOV R6,#SIG_EVENT
640 ; goto no_wait;
0233 8016 641 SJMP no_wait
642 ; }
0235 643 ??C0004:
644 ; STATE[current].st |= K_SIG;
0235 4401 645 ORL A,#K_SIG
0237 54EF 646 ANL A,#NOT K_READY
0239 F6 647 MOV @R0,A
023A D2AF 648 SETB EA
023C 8008 649 SJMP ??C0003A
650 ; }
023E 651 ??C0003:
A51 MACRO ASSEMBLER RTX51TNY 05/20/2007 16:49:11 PAGE 11
652 ; switchnow (); /* Select Another Task */
023E C2AF 653 CLR EA
0240 E6 654 MOV A,@R0
0241 54EF 655 ANL A,#NOT K_READY
0243 F6 656 MOV @R0,A
0244 D2AF 657 SETB EA
0246 D2A9 658 ??C0003A: SETB ET0
0248 020000 F 659 JMP SwitchNow
660
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -