📄 iic.ls1
字号:
885 ; SOURCE LINE # 254
0018 22 886 RET
887 ; }
888 ; SOURCE LINE # 255
0019 889 ?C0035:
890 ;
891 ; for(i = 0; i < len; i++)
892 ; SOURCE LINE # 257
0019 E4 893 CLR A
001A 7800 F 894 MOV R0,#LOW (i?963)
001C F6 895 MOV @R0,A
001D 896 ?C0036:
001D 900000 F 897 MOV DPTR,#len?962
0020 E0 898 MOVX A,@DPTR
0021 FF 899 MOV R7,A
0022 7800 F 900 MOV R0,#LOW (i?963)
0024 E6 901 MOV A,@R0
0025 C3 902 CLR C
0026 9F 903 SUBB A,R7
0027 5016 904 JNC ?C0037
905 ; {
906 ; SOURCE LINE # 258
907 ; if(!SendByte(*source)) /*发送数据*/
908 ; SOURCE LINE # 259
0029 120000 F 909 LCALL ?C?CLDPTR
002C FF 910 MOV R7,A
002D 120000 F 911 LCALL _SendByte
0030 4001 912 JC ?C0039
913 ; {
914 ; SOURCE LINE # 260
915 ; return(FALSE);
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 15
916 ; SOURCE LINE # 261
0032 22 917 RET
918 ; }
919 ; SOURCE LINE # 262
0033 920 ?C0039:
921 ; source++;
922 ; SOURCE LINE # 263
0033 7401 923 MOV A,#01H
0035 29 924 ADD A,R1
0036 F9 925 MOV R1,A
0037 E4 926 CLR A
0038 3A 927 ADDC A,R2
0039 FA 928 MOV R2,A
929 ; }
930 ; SOURCE LINE # 264
003A 7800 F 931 MOV R0,#LOW (i?963)
003C 06 932 INC @R0
003D 80DE 933 SJMP ?C0036
003F 934 ?C0037:
935 ; StopI2c(); /*结束总线*/
936 ; SOURCE LINE # 265
003F 120000 F 937 LCALL StopI2c
938 ;
939 ; return(TRUE);
940 ; SOURCE LINE # 267
0042 D3 941 SETB C
942 ; }
943 ; SOURCE LINE # 268
0043 944 ?C0033:
0043 22 945 RET
946 ; END OF _iiv_send_long_str
947
948 ;
949 ;
950 ; extern bool iic_rcv_long_str(byte SlaveAddress, word address, byte *source, byte len)
951
---- 952 RSEG ?PR?_iic_rcv_long_str?IIC
0000 953 _iic_rcv_long_str:
954 USING 0
955 ; SOURCE LINE # 271
0000 900000 F 956 MOV DPTR,#SlaveAddress?1064
0003 EF 957 MOV A,R7
0004 F0 958 MOVX @DPTR,A
959 ;---- Variable 'source?1066' assigned to Register 'R1/R2/R3' ----
960 ;---- Variable 'address?1065' assigned to Register 'R4/R5' ----
961 ; {
962 ; SOURCE LINE # 272
963 ; byte idata i;
964 ;
965 ; StartI2c(); /*启动总线*/
966 ; SOURCE LINE # 275
0005 120000 F 967 LCALL StartI2c
968 ;
969 ; if(!SendByte(SlaveAddress)) /*发送器件地址*/
970 ; SOURCE LINE # 277
0008 E0 971 MOVX A,@DPTR
0009 FF 972 MOV R7,A
000A 120000 F 973 LCALL _SendByte
000D 4001 974 JC ?C0040
975 ; {
976 ; SOURCE LINE # 278
977 ; return(FALSE);
978 ; SOURCE LINE # 279
000F 22 979 RET
980 ; }
981 ; SOURCE LINE # 280
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 16
0010 982 ?C0040:
983 ;
984 ; if(!SendByte(HBYTE(address))) /*发送器件子地址*/
985 ; SOURCE LINE # 282
0010 EC 986 MOV A,R4
0011 FF 987 MOV R7,A
0012 120000 F 988 LCALL _SendByte
0015 4001 989 JC ?C0042
990 ; {
991 ; SOURCE LINE # 283
992 ; return(FALSE);
993 ; SOURCE LINE # 284
0017 22 994 RET
995 ; }
996 ; SOURCE LINE # 285
0018 997 ?C0042:
998 ;
999 ; if(!SendByte(LBYTE(address))) /*发送器件子地址*/
1000 ; SOURCE LINE # 287
0018 AF05 1001 MOV R7,AR5
001A 120000 F 1002 LCALL _SendByte
001D 4001 1003 JC ?C0043
1004 ; {
1005 ; SOURCE LINE # 288
1006 ; return(FALSE);
1007 ; SOURCE LINE # 289
001F 22 1008 RET
1009 ; }
1010 ; SOURCE LINE # 290
0020 1011 ?C0043:
1012 ;
1013 ; StartI2c();
1014 ; SOURCE LINE # 292
0020 120000 F 1015 LCALL StartI2c
1016 ;
1017 ; if(!SendByte(SlaveAddress+1))
1018 ; SOURCE LINE # 294
0023 900000 F 1019 MOV DPTR,#SlaveAddress?1064
0026 E0 1020 MOVX A,@DPTR
0027 04 1021 INC A
0028 FF 1022 MOV R7,A
0029 120000 F 1023 LCALL _SendByte
002C 4001 1024 JC ?C0044
1025 ; {
1026 ; SOURCE LINE # 295
1027 ; return(FALSE);
1028 ; SOURCE LINE # 296
002E 22 1029 RET
1030 ; }
1031 ; SOURCE LINE # 297
002F 1032 ?C0044:
1033 ;
1034 ; for(i = 0; i < len - 1; i++)
1035 ; SOURCE LINE # 299
002F E4 1036 CLR A
0030 7800 F 1037 MOV R0,#LOW (i?1068)
0032 F6 1038 MOV @R0,A
0033 1039 ?C0045:
0033 900000 F 1040 MOV DPTR,#len?1067
0036 E0 1041 MOVX A,@DPTR
0037 14 1042 DEC A
0038 FF 1043 MOV R7,A
0039 7800 F 1044 MOV R0,#LOW (i?1068)
003B E6 1045 MOV A,@R0
003C C3 1046 CLR C
003D 9F 1047 SUBB A,R7
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 17
003E 5012 1048 JNC ?C0046
1049 ; {
1050 ; SOURCE LINE # 300
1051 ; *source = RcvByte(); /*发送数据*/
1052 ; SOURCE LINE # 301
0040 120000 F 1053 LCALL RcvByte
1054 ; AckI2c(FALSE); /*发送就答位*/
1055 ; SOURCE LINE # 302
0043 120000 F 1056 LCALL L?0051
1057 ; source++;
1058 ; SOURCE LINE # 303
0046 7401 1059 MOV A,#01H
0048 29 1060 ADD A,R1
0049 F9 1061 MOV R1,A
004A E4 1062 CLR A
004B 3A 1063 ADDC A,R2
004C FA 1064 MOV R2,A
1065 ; }
1066 ; SOURCE LINE # 304
004D 7800 F 1067 MOV R0,#LOW (i?1068)
004F 06 1068 INC @R0
0050 80E1 1069 SJMP ?C0045
0052 1070 ?C0046:
1071 ;
1072 ; *source = RcvByte();
1073 ; SOURCE LINE # 306
0052 120000 F 1074 LCALL RcvByte
0055 EF 1075 MOV A,R7
0056 120000 F 1076 LCALL ?C?CSTPTR
1077 ;
1078 ; AckI2c(TRUE); /*发送非应位*/
1079 ; SOURCE LINE # 308
0059 D200 F 1080 SETB ?AckI2c?BIT
005B 120000 F 1081 LCALL AckI2c
1082 ;
1083 ; StopI2c(); /*结束总线*/
1084 ; SOURCE LINE # 310
005E 120000 F 1085 LCALL StopI2c
1086 ;
1087 ; return(TRUE);
1088 ; SOURCE LINE # 312
0061 D3 1089 SETB C
1090 ; }
1091 ; SOURCE LINE # 313
0062 1092 ?C0041:
0062 22 1093 RET
1094 ; END OF _iic_rcv_long_str
1095
1096 END
A51 MACRO ASSEMBLER IIC 10/31/2003 02:22:26 PAGE 18
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
?ACKI2C?BIT. . . . . . . . B ADDR 0000H.0 R SEG=?BI?ACKI2C?IIC
?BI?ACKI2C?IIC . . . . . . B SEG 0001H REL=UNIT
?BI?IIC. . . . . . . . . . B SEG 0001H REL=UNI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -