📄 si4421.ls1
字号:
0048 602 ?C0009:
603 ; if(k==6000)
604 ; SOURCE LINE # 97
0048 BE171C 605 CJNE R6,#017H,?C0012
004B BF7019 606 CJNE R7,#070H,?C0012
607 ; { // nres=0;
608 ; SOURCE LINE # 98
609 ; //delayms(50);
610 ; //nres=1;
611 ; ia442xinit();
612 ; SOURCE LINE # 101
004E 120000 F 613 LCALL ia442xinit
614 ; spirevtwobyte();
615 ; SOURCE LINE # 102
0051 120000 F 616 LCALL spirevtwobyte
617 ; spisendcommand(0x8288); //电源管理 whole receive crysta
l on
618 ; SOURCE LINE # 103
0054 120000 F 619 LCALL L?0068
620 ; spisendcommand(0xca83); //FIFO COMMAND
621 ; SOURCE LINE # 104
0057 7F83 622 MOV R7,#083H
0059 7ECA 623 MOV R6,#0CAH
005B 120000 F 624 LCALL _spisendcommand
625 ; if(DEBUG) Printf_String("\r\n[msg:]001 si4421's sdo is dead but she can
receive");
626 ; SOURCE LINE # 105
005E 7BFF 627 MOV R3,#0FFH
0060 7A00 F 628 MOV R2,#HIGH (?SC_0)
0062 7900 F 629 MOV R1,#LOW (?SC_0)
0064 020000 F 630 LJMP _Printf_String
631 ; return;
632 ; }
633 ; SOURCE LINE # 107
0067 634 ?C0012:
635 ;
636 ; spirevbyte();
637 ; SOURCE LINE # 109
0067 120000 F 638 LCALL spirevbyte
639 ; spirevbyte();
640 ; SOURCE LINE # 110
006A 120000 F 641 LCALL spirevbyte
642 ; rxdata[1]=spirevbyte();
643 ; SOURCE LINE # 111
006D 120000 F 644 LCALL spirevbyte
0070 900000 F 645 MOV DPTR,#rxdata+01H
0073 EF 646 MOV A,R7
0074 F0 647 MOVX @DPTR,A
648 ; nsel=1;
649 ; SOURCE LINE # 112
0075 D290 650 SETB nsel
651 ; n=rxdata[1]&0xff; //最大接收255字节
652 ; SOURCE LINE # 113
0077 7800 F 653 MOV R0,#LOW (n)
0079 F6 654 MOV @R0,A
655 ; if(n<31)
656 ; SOURCE LINE # 114
007A C3 657 CLR C
007B 941F 658 SUBB A,#01FH
007D 5079 659 JNC ?C0015
A51 MACRO ASSEMBLER SI4421 08/03/2009 16:57:27 PAGE 12
660 ; {
661 ; SOURCE LINE # 115
662 ; for(i=0;i<n;i++)
663 ; SOURCE LINE # 116
007F E4 664 CLR A
0080 900000 F 665 MOV DPTR,#i?241
0083 F0 666 MOVX @DPTR,A
0084 667 ?C0016:
0084 900000 F 668 MOV DPTR,#i?241
0087 E0 669 MOVX A,@DPTR
0088 C3 670 CLR C
0089 7800 F 671 MOV R0,#LOW (n)
008B 96 672 SUBB A,@R0
008C 5061 673 JNC ?C0017
674 ; {
675 ; SOURCE LINE # 117
676 ; sdi = 0;
677 ; SOURCE LINE # 118
008E C286 678 CLR sdi
679 ; nsel = 0;
680 ; SOURCE LINE # 119
0090 C290 681 CLR nsel
682 ;
683 ; // while(!sdo);
684 ; for(k=0;k<6000;k++)
685 ; SOURCE LINE # 122
0092 E4 686 CLR A
0093 A3 687 INC DPTR
0094 F0 688 MOVX @DPTR,A
0095 A3 689 INC DPTR
0096 F0 690 MOVX @DPTR,A
0097 691 ?C0019:
0097 900000 F 692 MOV DPTR,#k?242
009A E0 693 MOVX A,@DPTR
009B FE 694 MOV R6,A
009C A3 695 INC DPTR
009D E0 696 MOVX A,@DPTR
009E FF 697 MOV R7,A
009F C3 698 CLR C
00A0 9470 699 SUBB A,#070H
00A2 EE 700 MOV A,R6
00A3 9417 701 SUBB A,#017H
00A5 5013 702 JNC ?C0020
703 ; {
704 ; SOURCE LINE # 123
705 ; if(sdo)
706 ; SOURCE LINE # 124
00A7 208110 707 JB sdo,?C0020
708 ; {
709 ; SOURCE LINE # 125
710 ; break;
711 ; SOURCE LINE # 126
712 ; }
713 ; SOURCE LINE # 127
714 ; }
715 ; SOURCE LINE # 128
00AA 716 ?C0021:
00AA 900000 F 717 MOV DPTR,#k?242+01H
00AD E0 718 MOVX A,@DPTR
00AE 04 719 INC A
00AF F0 720 MOVX @DPTR,A
00B0 70E5 721 JNZ ?C0019
00B2 900000 F 722 MOV DPTR,#k?242
00B5 E0 723 MOVX A,@DPTR
00B6 04 724 INC A
00B7 F0 725 MOVX @DPTR,A
A51 MACRO ASSEMBLER SI4421 08/03/2009 16:57:27 PAGE 13
00B8 726 ?C0061:
00B8 80DD 727 SJMP ?C0019
00BA 728 ?C0020:
729 ; if(k==6000)
730 ; SOURCE LINE # 129
00BA BE1710 731 CJNE R6,#017H,?C0023
00BD BF700D 732 CJNE R7,#070H,?C0023
733 ; { //nres=0;
734 ; SOURCE LINE # 130
735 ; // delayms(50);
736 ; // nres=1;
737 ; ia442xinit();
738 ; SOURCE LINE # 133
00C0 120000 F 739 LCALL ia442xinit
740 ; spirevtwobyte();
741 ; SOURCE LINE # 134
00C3 120000 F 742 LCALL spirevtwobyte
743 ; spisendcommand(0x8288); //电源管理 whole receive crysta
l on
744 ; SOURCE LINE # 135
00C6 120000 F 745 LCALL L?0068
746 ; spisendcommand(0xca83); //FIFO COMMAND
747 ; SOURCE LINE # 136
00C9 7F83 748 MOV R7,#083H
00CB 8026 749 SJMP ?C0065
750 ; return;
751 ; if(DEBUG) Printf_String("\r\n[msg:]002 si4421's sdo is dead but s
he can receive");
752 ; SOURCE LINE # 138
753 ; }
754 ; SOURCE LINE # 139
00CD 755 ?C0023:
756 ;
757 ; spirevbyte();
758 ; SOURCE LINE # 141
00CD 120000 F 759 LCALL spirevbyte
760 ; spirevbyte();
761 ; SOURCE LINE # 142
00D0 120000 F 762 LCALL spirevbyte
763 ; rxdata[i+2]=spirevbyte();
764 ; SOURCE LINE # 143
00D3 120000 F 765 LCALL spirevbyte
00D6 900000 F 766 MOV DPTR,#i?241
00D9 E0 767 MOVX A,@DPTR
00DA 2400 F 768 ADD A,#LOW (rxdata+02H)
00DC F582 769 MOV DPL,A
00DE E4 770 CLR A
00DF 3400 F 771 ADDC A,#HIGH (rxdata+02H)
00E1 F583 772 MOV DPH,A
00E3 EF 773 MOV A,R7
00E4 F0 774 MOVX @DPTR,A
775 ; nsel=1;
776 ; SOURCE LINE # 144
00E5 D290 777 SETB nsel
778 ; }
779 ; SOURCE LINE # 145
00E7 900000 F 780 MOV DPTR,#i?241
00EA E0 781 MOVX A,@DPTR
00EB 04 782 INC A
00EC F0 783 MOVX @DPTR,A
00ED 8095 784 SJMP ?C0016
00EF 785 ?C0017:
786 ; revframe=1;
787 ; SOURCE LINE # 146
00EF D200 F 788 SETB revframe
789 ;
A51 MACRO ASSEMBLER SI4421 08/03/2009 16:57:27 PAGE 14
790 ; spisendcommand(0xca81);//Disables the highly sensitive RESET mode.
791 ; SOURCE LINE # 148
00F1 7F81 792 MOV R7,#081H
00F3 793 ?C0065:
00F3 7ECA 794 MOV R6,#0CAH
00F5 020000 F 795 LJMP _spisendcommand
796 ; }
797 ; SOURCE LINE # 149
00F8 798 ?C0015:
799 ; else
800 ; {revframe = 0;}
801 ; SOURCE LINE # 151
00F8 C200 F 802 CLR revframe
803 ;
804 ; }
805 ; SOURCE LINE # 153
00FA 22 806 RET
00FB 807 ?C0007:
808 ; else
809 ; {
810 ; SOURCE LINE # 155
811 ; revframe = 0;
812 ; SOURCE LINE # 156
00FB C200 F 813 CLR revframe
814 ; }
815 ; SOURCE LINE # 157
816 ;
817 ; }
818 ; SOURCE LINE # 159
00FD 819 ?C0014:
00FD 22 820 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -