📄 iic.ls1
字号:
001E 120000 F 661 LCALL ?C?CLDPTR
0021 FF 662 MOV R7,A
0022 120000 F 663 LCALL _SendByte
0025 4001 664 JC ?C0024
665 ; {
666 ; SOURCE LINE # 184
667 ; return(FALSE);
668 ; SOURCE LINE # 185
0027 22 669 RET
670 ; }
671 ; SOURCE LINE # 186
0028 672 ?C0024:
673 ; source++;
674 ; SOURCE LINE # 187
0028 7401 675 MOV A,#01H
002A 29 676 ADD A,R1
002B F9 677 MOV R1,A
002C E4 678 CLR A
002D 3A 679 ADDC A,R2
002E FA 680 MOV R2,A
681 ; }
682 ; SOURCE LINE # 188
002F 7800 F 683 MOV R0,#LOW (i?753)
0031 06 684 INC @R0
0032 80DE 685 SJMP ?C0021
0034 686 ?C0022:
687 ; StopI2c(); /*结束总线*/
688 ; SOURCE LINE # 189
0034 120000 F 689 LCALL StopI2c
690 ;
691 ; return(TRUE);
692 ; SOURCE LINE # 191
0037 D3 693 SETB C
694 ; }
695 ; SOURCE LINE # 192
0038 696 ?C0019:
0038 22 697 RET
698 ; END OF _iic_send_str
699
700 ;
701 ;
702 ;
703 ; extern bool iic_rcv_str(byte SlaveAddress, byte address, byte *source, byte len)
704
---- 705 RSEG ?PR?_iic_rcv_str?IIC
0000 706 _iic_rcv_str:
707 USING 0
708 ; SOURCE LINE # 196
709 ;---- Variable 'SlaveAddress?854' assigned to Register 'R4' ----
0000 AC07 710 MOV R4,AR7
711 ;---- Variable 'source?856' assigned to Register 'R1/R2/R3' ----
712 ;---- Variable 'address?855' assigned to Register 'R5' ----
713 ; {
714 ; SOURCE LINE # 197
715 ; byte idata i;
716 ;
717 ; StartI2c(); /*启动总线*/
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 12
718 ; SOURCE LINE # 200
0002 120000 F 719 LCALL StartI2c
720 ;
721 ; if(!SendByte(SlaveAddress)) /*发送器件地址*/
722 ; SOURCE LINE # 202
0005 120000 F 723 LCALL _SendByte
0008 4001 724 JC ?C0025
725 ; {
726 ; SOURCE LINE # 203
727 ; return(FALSE);
728 ; SOURCE LINE # 204
000A 22 729 RET
730 ; }
731 ; SOURCE LINE # 205
000B 732 ?C0025:
733 ;
734 ; if(!SendByte(address)) /*发送器件子地址*/
735 ; SOURCE LINE # 207
000B AF05 736 MOV R7,AR5
000D 120000 F 737 LCALL _SendByte
0010 4001 738 JC ?C0027
739 ; {
740 ; SOURCE LINE # 208
741 ; return(FALSE);
742 ; SOURCE LINE # 209
0012 22 743 RET
744 ; }
745 ; SOURCE LINE # 210
0013 746 ?C0027:
747 ;
748 ; StartI2c();
749 ; SOURCE LINE # 212
0013 120000 F 750 LCALL StartI2c
751 ;
752 ; if(!SendByte(SlaveAddress+1))
753 ; SOURCE LINE # 214
0016 EC 754 MOV A,R4
0017 04 755 INC A
0018 FF 756 MOV R7,A
0019 120000 F 757 LCALL _SendByte
001C 4001 758 JC ?C0028
759 ; {
760 ; SOURCE LINE # 215
761 ; return(FALSE);
762 ; SOURCE LINE # 216
001E 22 763 RET
764 ; }
765 ; SOURCE LINE # 217
001F 766 ?C0028:
767 ;
768 ; for(i = 0; i < len - 1; i++)
769 ; SOURCE LINE # 219
001F E4 770 CLR A
0020 7800 F 771 MOV R0,#LOW (i?858)
0022 F6 772 MOV @R0,A
0023 773 ?C0029:
0023 900000 F 774 MOV DPTR,#len?857
0026 E0 775 MOVX A,@DPTR
0027 14 776 DEC A
0028 FF 777 MOV R7,A
0029 7800 F 778 MOV R0,#LOW (i?858)
002B E6 779 MOV A,@R0
002C C3 780 CLR C
002D 9F 781 SUBB A,R7
002E 5012 782 JNC ?C0030
783 ; {
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 13
784 ; SOURCE LINE # 220
785 ; *source = RcvByte(); /*接收数据*/
786 ; SOURCE LINE # 221
0030 120000 F 787 LCALL RcvByte
788 ; AckI2c(FALSE); /*发送就答位*/
789 ; SOURCE LINE # 222
0033 120000 F 790 LCALL L?0051
791 ; source++;
792 ; SOURCE LINE # 223
0036 7401 793 MOV A,#01H
0038 29 794 ADD A,R1
0039 F9 795 MOV R1,A
003A E4 796 CLR A
003B 3A 797 ADDC A,R2
003C FA 798 MOV R2,A
799 ; }
800 ; SOURCE LINE # 224
003D 7800 F 801 MOV R0,#LOW (i?858)
003F 06 802 INC @R0
0040 80E1 803 SJMP ?C0029
0042 804 ?C0030:
805 ;
806 ; *source = RcvByte();
807 ; SOURCE LINE # 226
0042 120000 F 808 LCALL RcvByte
0045 EF 809 MOV A,R7
0046 120000 F 810 LCALL ?C?CSTPTR
811 ;
812 ; AckI2c(TRUE); /*发送非应位*/
813 ; SOURCE LINE # 228
0049 D200 F 814 SETB ?AckI2c?BIT
004B 120000 F 815 LCALL AckI2c
816 ;
817 ; StopI2c(); /*结束总线*/
818 ; SOURCE LINE # 230
004E 120000 F 819 LCALL StopI2c
820 ;
821 ; return(TRUE);
822 ; SOURCE LINE # 232
0051 D3 823 SETB C
824 ; }
825 ; SOURCE LINE # 233
0052 826 ?C0026:
0052 22 827 RET
828 ; END OF _iic_rcv_str
829
830 ;
831 ;
832 ; extern bool iiv_send_long_str(byte SlaveAddress, word address, byte *source, byte len)
833
---- 834 RSEG ?PR?_iiv_send_long_str?IIC
0000 835 _iiv_send_long_str:
836 USING 0
837 ; SOURCE LINE # 236
838 ;---- Variable 'SlaveAddress?959' assigned to Register 'R7' ----
839 ;---- Variable 'source?961' assigned to Register 'R1/R2/R3' ----
840 ;---- Variable 'address?960' assigned to Register 'R4/R5' ----
841 ; {
842 ; SOURCE LINE # 237
843 ; byte idata i;
844 ;
845 ; StartI2c(); /*启动总线*/
846 ; SOURCE LINE # 240
0000 120000 F 847 LCALL StartI2c
848 ;
849 ; if(!SendByte(SlaveAddress)) /*发送器件地址*/
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 14
850 ; SOURCE LINE # 242
0003 120000 F 851 LCALL _SendByte
0006 4001 852 JC ?C0032
853 ; {
854 ; SOURCE LINE # 243
855 ; return(FALSE);
856 ; SOURCE LINE # 244
0008 22 857 RET
858 ; }
859 ; SOURCE LINE # 245
0009 860 ?C0032:
861 ;
862 ; if(!SendByte(HBYTE(address))) /*发送器件地址*/
863 ; SOURCE LINE # 247
0009 EC 864 MOV A,R4
000A FF 865 MOV R7,A
000B 120000 F 866 LCALL _SendByte
000E 4001 867 JC ?C0034
868 ; {
869 ; SOURCE LINE # 248
870 ; return(FALSE);
871 ; SOURCE LINE # 249
0010 22 872 RET
873 ; }
874 ; SOURCE LINE # 250
0011 875 ?C0034:
876 ;
877 ; if(!SendByte(LBYTE(address))) /*发送器件子地址*/
878 ; SOURCE LINE # 252
0011 AF05 879 MOV R7,AR5
0013 120000 F 880 LCALL _SendByte
0016 4001 881 JC ?C0035
882 ; {
883 ; SOURCE LINE # 253
884 ; return(FALSE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -