📄 uart.ls1
字号:
0026 22 454 RET
455 ; END OF PutInputData
456
457 ;
458 ; int GetInputData( void )
459
---- 460 RSEG ?PR?GetInputData?UART
0000 461 GetInputData:
462 USING 0
463 ; SOURCE LINE # 97
464 ; {
465 ; SOURCE LINE # 98
466 ; unsigned char tmp;
467 ;
468 ; EnterCrtcl();
469 ; SOURCE LINE # 101
0000 C2AC 470 CLR ES
471 ; if( IBufGetIdx == IBufPutIdx )
472 ; SOURCE LINE # 102
0002 E500 F 473 MOV A,IBufGetIdx
0004 6500 F 474 XRL A,IBufPutIdx
0006 7007 475 JNZ ?C0009
476 ; {
477 ; SOURCE LINE # 103
478 ; LeaveCrtcl();
479 ; SOURCE LINE # 104
0008 D2AC 480 SETB ES
481 ; return -1;
482 ; SOURCE LINE # 105
000A 7EFF 483 MOV R6,#0FFH
000C 7FFF 484 MOV R7,#0FFH
000E 22 485 RET
486 ; }
487 ; SOURCE LINE # 106
000F 488 ?C0009:
489 ;
490 ; tmp = InputBuf[IBufGetIdx++];
491 ; SOURCE LINE # 108
000F AF00 F 492 MOV R7,IBufGetIdx
0011 0500 F 493 INC IBufGetIdx
0013 7400 F 494 MOV A,#LOW (InputBuf)
0015 2F 495 ADD A,R7
0016 F8 496 MOV R0,A
0017 E6 497 MOV A,@R0
0018 FF 498 MOV R7,A
499 ;---- Variable 'tmp?240' assigned to Register 'R7' ----
500 ;
501 ; #if (BUF_SIZE != 256)
502 ; if(IBufGetIdx==BUF_SIZE)
503 ; SOURCE LINE # 111
0019 E500 F 504 MOV A,IBufGetIdx
001B B42003 505 CJNE A,#020H,?C0011
506 ; IBufGetIdx=0;
507 ; SOURCE LINE # 112
001E E4 508 CLR A
001F F500 F 509 MOV IBufGetIdx,A
0021 510 ?C0011:
511 ; #endif
512 ;
513 ; LeaveCrtcl();
514 ; SOURCE LINE # 115
0021 D2AC 515 SETB ES
516 ; return tmp;
517 ; SOURCE LINE # 116
0023 7E00 518 MOV R6,#00H
519 ; }
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 9
520 ; SOURCE LINE # 117
0025 521 ?C0010:
0025 22 522 RET
523 ; END OF GetInputData
524
525 ;
526 ; bit GetOutputData( void )
527
---- 528 RSEG ?PR?GetOutputData?UART
0000 529 GetOutputData:
530 ; SOURCE LINE # 119
531 ; {
532 ; SOURCE LINE # 120
533 ; if( OBufPutIdx == OBufGetIdx )
534 ; SOURCE LINE # 121
0000 E500 F 535 MOV A,OBufPutIdx
0002 6500 F 536 XRL A,OBufGetIdx
0004 7004 537 JNZ ?C0012
538 ; {
539 ; SOURCE LINE # 122
540 ; SbufWorking=0;
541 ; SOURCE LINE # 123
0006 C200 F 542 CLR SbufWorking
543 ; return 0;
544 ; SOURCE LINE # 124
0008 C3 545 CLR C
0009 22 546 RET
547 ; }
548 ; SOURCE LINE # 125
000A 549 ?C0012:
550 ;
551 ; SBUF = OutputBuf[OBufGetIdx];
552 ; SOURCE LINE # 127
000A 7400 F 553 MOV A,#LOW (OutputBuf)
000C 2500 F 554 ADD A,OBufGetIdx
000E F582 555 MOV DPL,A
0010 E4 556 CLR A
0011 3400 F 557 ADDC A,#HIGH (OutputBuf)
0013 F583 558 MOV DPH,A
0015 E0 559 MOVX A,@DPTR
0016 F599 560 MOV SBUF,A
561 ; OBufGetIdx++;
562 ; SOURCE LINE # 128
0018 0500 F 563 INC OBufGetIdx
564 ; #if (OBUF_SIZE != 256)
565 ; if(OBufGetIdx==OBUF_SIZE)
566 ; SOURCE LINE # 130
001A E500 F 567 MOV A,OBufGetIdx
001C B41003 568 CJNE A,#010H,?C0014
569 ; OBufGetIdx=0;
570 ; SOURCE LINE # 131
001F E4 571 CLR A
0020 F500 F 572 MOV OBufGetIdx,A
0022 573 ?C0014:
574 ; #endif
575 ; return 1;
576 ; SOURCE LINE # 133
0022 D3 577 SETB C
578 ; }
579 ; SOURCE LINE # 134
0023 580 ?C0013:
0023 22 581 RET
582 ; END OF GetOutputData
583
584 ;
585 ; bit PutOutputData( unsigned char abyte )
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 10
586
---- 587 RSEG ?PR?_PutOutputData?UART
0000 588 _PutOutputData:
589 USING 0
590 ; SOURCE LINE # 136
591 ;---- Variable 'abyte?441' assigned to Register 'R7' ----
592 ; {
593 ; SOURCE LINE # 137
594 ; EnterCrtcl();
595 ; SOURCE LINE # 138
0000 C2AC 596 CLR ES
597 ; #if (OBUF_SIZE!=256)
598 ; if( OBufGetIdx ==0 )
599 ; SOURCE LINE # 140
0002 E500 F 600 MOV A,OBufGetIdx
0004 7007 601 JNZ ?C0015
602 ; if( OBufPutIdx == OBUF_SIZE-1 )
603 ; SOURCE LINE # 141
0006 E500 F 604 MOV A,OBufPutIdx
0008 B40F02 605 CJNE A,#0FH,?C0015
606 ; {
607 ; SOURCE LINE # 142
608 ; LeaveCrtcl();
609 ; SOURCE LINE # 143
610 ; return 0;
611 ; SOURCE LINE # 144
000B 8007 612 SJMP ?C0051
613 ; }
614 ; SOURCE LINE # 145
000D 615 ?C0015:
616 ; #endif
617 ;
618 ; if( OBufPutIdx == OBufGetIdx-1 )
619 ; SOURCE LINE # 148
000D E500 F 620 MOV A,OBufGetIdx
000F 14 621 DEC A
0010 6500 F 622 XRL A,OBufPutIdx
0012 7004 623 JNZ ?C0018
624 ; {
625 ; SOURCE LINE # 149
626 ; LeaveCrtcl();
627 ; SOURCE LINE # 150
0014 628 ?C0051:
0014 D2AC 629 SETB ES
630 ; return 0;
631 ; SOURCE LINE # 151
0016 C3 632 CLR C
0017 22 633 RET
634 ; }
635 ; SOURCE LINE # 152
0018 636 ?C0018:
637 ;
638 ; OutputBuf[OBufPutIdx++] = abyte;
639 ; SOURCE LINE # 154
0018 AE00 F 640 MOV R6,OBufPutIdx
001A 0500 F 641 INC OBufPutIdx
001C 7400 F 642 MOV A,#LOW (OutputBuf)
001E 2E 643 ADD A,R6
001F F582 644 MOV DPL,A
0021 E4 645 CLR A
0022 3400 F 646 ADDC A,#HIGH (OutputBuf)
0024 F583 647 MOV DPH,A
0026 EF 648 MOV A,R7
0027 F0 649 MOVX @DPTR,A
650 ;
651 ; #if (OBUF_SIZE != 256)
A51 MACRO ASSEMBLER UART 03/13/2009 15:44:52 PAGE 11
652 ; if(OBufPutIdx==OBUF_SIZE)
653 ; SOURCE LINE # 157
0028 E500 F 654 MOV A,OBufPutIdx
002A B41003 655 CJNE A,#010H,?C0019
656 ; OBufPutIdx=0;
657 ; SOURCE LINE # 158
002D E4 658 CLR A
002E F500 F 659 MOV OBufPutIdx,A
0030 660 ?C0019:
661 ; #endif
662 ;
663 ; if(!SbufWorking)
664 ; SOURCE LINE # 161
0030 200004 F 665 JB SbufWorking,?C0020
666 ; {
667 ; SOURCE LINE # 162
668 ; SbufWorking = 1;
669 ; SOURCE LINE # 163
0033 D200 F 670 SETB SbufWorking
671 ; StartSend();
672 ; SOURCE LINE # 164
0035 D299 673 SETB TI
674 ; }
675 ; SOURCE LINE # 165
0037 676 ?C0020:
677 ; LeaveCrtcl();
678 ; SOURCE LINE # 166
0037 D2AC 679 SETB ES
680 ;
681 ; return 1;
682 ; SOURCE LINE # 168
0039 D3 683 SETB C
684 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -