📄 iic.src
字号:
; SOURCE LINE # 146
;---- Variable 'value?648' assigned to Register 'R5' ----
;---- Variable 'SlaveAddress?647' assigned to Register 'R7' ----
; {
; SOURCE LINE # 147
; StartI2c(); /*启动总线*/
; SOURCE LINE # 148
LCALL StartI2c
;
; if(!SendByte(SlaveAddress + 1)) /*发送器件地址*/
; SOURCE LINE # 150
MOV A,R7
INC A
MOV R7,A
LCALL _SendByte
JC ?C0016
; {
; SOURCE LINE # 151
; return(FALSE);
; SOURCE LINE # 152
RET
; }
; SOURCE LINE # 153
?C0016:
;
; value = RcvByte(); /*读取数据*/
; SOURCE LINE # 155
LCALL RcvByte
MOV R5,AR7
;
; AckI2c(TRUE); /*发送非就答位*/
; SOURCE LINE # 157
SETB ?AckI2c?BIT
LCALL AckI2c
;
; StopI2c(); /*结束总线*/
; SOURCE LINE # 159
LCALL StopI2c
;
; return(TRUE);
; SOURCE LINE # 161
SETB C
; }
; SOURCE LINE # 162
?C0017:
RET
; END OF _iic_rcv_byte
;
;
; extern bool iic_send_str(byte SlaveAddress, byte address, byte *source, byte len)
RSEG ?PR?_iic_send_str?IIC
_iic_send_str:
USING 0
; SOURCE LINE # 165
;---- Variable 'SlaveAddress?749' assigned to Register 'R7' ----
;---- Variable 'source?751' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?750' assigned to Register 'R5' ----
; {
; SOURCE LINE # 166
; byte idata i;
;
; StartI2c(); /*启动总线*/
; SOURCE LINE # 169
;
; if(!SendByte(SlaveAddress)) /*发送器件地址*/
; SOURCE LINE # 171
LCALL L?0050
JC ?C0018
; {
; SOURCE LINE # 172
; return(FALSE);
; SOURCE LINE # 173
RET
; }
; SOURCE LINE # 174
?C0018:
;
; if(!SendByte(address)) /*发送器件子地址*/
; SOURCE LINE # 176
MOV R7,AR5
LCALL _SendByte
JC ?C0020
; {
; SOURCE LINE # 177
; return(FALSE);
; SOURCE LINE # 178
RET
; }
; SOURCE LINE # 179
?C0020:
;
; for(i = 0; i < len; i++)
; SOURCE LINE # 181
CLR A
MOV R0,#LOW (i?753)
MOV @R0,A
?C0021:
MOV DPTR,#len?752
MOVX A,@DPTR
MOV R7,A
MOV R0,#LOW (i?753)
MOV A,@R0
CLR C
SUBB A,R7
JNC ?C0022
; {
; SOURCE LINE # 182
; if(!SendByte(*source)) /*发送数据*/
; SOURCE LINE # 183
LCALL ?C?CLDPTR
MOV R7,A
LCALL _SendByte
JC ?C0024
; {
; SOURCE LINE # 184
; return(FALSE);
; SOURCE LINE # 185
RET
; }
; SOURCE LINE # 186
?C0024:
; source++;
; SOURCE LINE # 187
MOV A,#01H
ADD A,R1
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
; }
; SOURCE LINE # 188
MOV R0,#LOW (i?753)
INC @R0
SJMP ?C0021
?C0022:
; StopI2c(); /*结束总线*/
; SOURCE LINE # 189
LCALL StopI2c
;
; return(TRUE);
; SOURCE LINE # 191
SETB C
; }
; SOURCE LINE # 192
?C0019:
RET
; END OF _iic_send_str
;
;
;
; extern bool iic_rcv_str(byte SlaveAddress, byte address, byte *source, byte len)
RSEG ?PR?_iic_rcv_str?IIC
_iic_rcv_str:
USING 0
; SOURCE LINE # 196
;---- Variable 'SlaveAddress?854' assigned to Register 'R4' ----
MOV R4,AR7
;---- Variable 'source?856' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?855' assigned to Register 'R5' ----
; {
; SOURCE LINE # 197
; byte idata i;
;
; StartI2c(); /*启动总线*/
; SOURCE LINE # 200
LCALL StartI2c
;
; if(!SendByte(SlaveAddress)) /*发送器件地址*/
; SOURCE LINE # 202
LCALL _SendByte
JC ?C0025
; {
; SOURCE LINE # 203
; return(FALSE);
; SOURCE LINE # 204
RET
; }
; SOURCE LINE # 205
?C0025:
;
; if(!SendByte(address)) /*发送器件子地址*/
; SOURCE LINE # 207
MOV R7,AR5
LCALL _SendByte
JC ?C0027
; {
; SOURCE LINE # 208
; return(FALSE);
; SOURCE LINE # 209
RET
; }
; SOURCE LINE # 210
?C0027:
;
; StartI2c();
; SOURCE LINE # 212
LCALL StartI2c
;
; if(!SendByte(SlaveAddress+1))
; SOURCE LINE # 214
MOV A,R4
INC A
MOV R7,A
LCALL _SendByte
JC ?C0028
; {
; SOURCE LINE # 215
; return(FALSE);
; SOURCE LINE # 216
RET
; }
; SOURCE LINE # 217
?C0028:
;
; for(i = 0; i < len - 1; i++)
; SOURCE LINE # 219
CLR A
MOV R0,#LOW (i?858)
MOV @R0,A
?C0029:
MOV DPTR,#len?857
MOVX A,@DPTR
DEC A
MOV R7,A
MOV R0,#LOW (i?858)
MOV A,@R0
CLR C
SUBB A,R7
JNC ?C0030
; {
; SOURCE LINE # 220
; *source = RcvByte(); /*接收数据*/
; SOURCE LINE # 221
LCALL RcvByte
; AckI2c(FALSE); /*发送就答位*/
; SOURCE LINE # 222
LCALL L?0051
; source++;
; SOURCE LINE # 223
MOV A,#01H
ADD A,R1
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
; }
; SOURCE LINE # 224
MOV R0,#LOW (i?858)
INC @R0
SJMP ?C0029
?C0030:
;
; *source = RcvByte();
; SOURCE LINE # 226
LCALL RcvByte
MOV A,R7
LCALL ?C?CSTPTR
;
; AckI2c(TRUE); /*发送非应位*/
; SOURCE LINE # 228
SETB ?AckI2c?BIT
LCALL AckI2c
;
; StopI2c(); /*结束总线*/
; SOURCE LINE # 230
LCALL StopI2c
;
; return(TRUE);
; SOURCE LINE # 232
SETB C
; }
; SOURCE LINE # 233
?C0026:
RET
; END OF _iic_rcv_str
;
;
; extern bool iiv_send_long_str(byte SlaveAddress, word address, byte *source, byte len)
RSEG ?PR?_iiv_send_long_str?IIC
_iiv_send_long_str:
USING 0
; SOURCE LINE # 236
;---- Variable 'SlaveAddress?959' assigned to Register 'R7' ----
;---- Variable 'source?961' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?960' assigned to Register 'R4/R5' ----
; {
; SOURCE LINE # 237
; byte idata i;
;
; StartI2c(); /*启动总线*/
; SOURCE LINE # 240
LCALL StartI2c
;
; if(!SendByte(SlaveAddress)) /*发送器件地址*/
; SOURCE LINE # 242
LCALL _SendByte
JC ?C0032
; {
; SOURCE LINE # 243
; return(FALSE);
; SOURCE LINE # 244
RET
; }
; SOURCE LINE # 245
?C0032:
;
; if(!SendByte(HBYTE(address))) /*发送器件地址*/
; SOURCE LINE # 247
MOV A,R4
MOV R7,A
LCALL _SendByte
JC ?C0034
; {
; SOURCE LINE # 248
; return(FALSE);
; SOURCE LINE # 249
RET
; }
; SOURCE LINE # 250
?C0034:
;
; if(!SendByte(LBYTE(address))) /*发送器件子地址*/
; SOURCE LINE # 252
MOV R7,AR5
LCALL _SendByte
JC ?C0035
; {
; SOURCE LINE # 253
; return(FALSE);
; SOURCE LINE # 254
RET
; }
; SOURCE LINE # 255
?C0035:
;
; for(i = 0; i < len; i++)
; SOURCE LINE # 257
CLR A
MOV R0,#LOW (i?963)
MOV @R0,A
?C0036:
MOV DPTR,#len?962
MOVX A,@DPTR
MOV R7,A
MOV R0,#LOW (i?963)
MOV A,@R0
CLR C
SUBB A,R7
JNC ?C0037
; {
; SOURCE LINE # 258
; if(!SendByte(*source)) /*发送数据*/
; SOURCE LINE # 259
LCALL ?C?CLDPTR
MOV R7,A
LCALL _SendByte
JC ?C0039
; {
; SOURCE LINE # 260
; return(FALSE);
; SOURCE LINE # 261
RET
; }
; SOURCE LINE # 262
?C0039:
; source++;
; SOURCE LINE # 263
MOV A,#01H
ADD A,R1
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
; }
; SOURCE LINE # 264
MOV R0,#LOW (i?963)
INC @R0
SJMP ?C0036
?C0037:
; StopI2c(); /*结束总线*/
; SOURCE LINE # 265
LCALL StopI2c
;
; return(TRUE);
; SOURCE LINE # 267
SETB C
; }
; SOURCE LINE # 268
?C0033:
RET
; END OF _iiv_send_long_str
;
;
; extern bool iic_rcv_long_str(byte SlaveAddress, word address, byte *source, byte len)
RSEG ?PR?_iic_rcv_long_str?IIC
_iic_rcv_long_str:
USING 0
; SOURCE LINE # 271
MOV DPTR,#SlaveAddress?1064
MOV A,R7
MOVX @DPTR,A
;---- Variable 'source?1066' assigned to Register 'R1/R2/R3' ----
;---- Variable 'address?1065' assigned to Register 'R4/R5' ----
; {
; SOURCE LINE # 272
; byte idata i;
;
; StartI2c(); /*启动总线*/
; SOURCE LINE # 275
LCALL StartI2c
;
; if(!SendByte(SlaveAddress)) /*发送器件地址*/
; SOURCE LINE # 277
MOVX A,@DPTR
MOV R7,A
LCALL _SendByte
JC ?C0040
; {
; SOURCE LINE # 278
; return(FALSE);
; SOURCE LINE # 279
RET
; }
; SOURCE LINE # 280
?C0040:
;
; if(!SendByte(HBYTE(address))) /*发送器件子地址*/
; SOURCE LINE # 282
MOV A,R4
MOV R7,A
LCALL _SendByte
JC ?C0042
; {
; SOURCE LINE # 283
; return(FALSE);
; SOURCE LINE # 284
RET
; }
; SOURCE LINE # 285
?C0042:
;
; if(!SendByte(LBYTE(address))) /*发送器件子地址*/
; SOURCE LINE # 287
MOV R7,AR5
LCALL _SendByte
JC ?C0043
; {
; SOURCE LINE # 288
; return(FALSE);
; SOURCE LINE # 289
RET
; }
; SOURCE LINE # 290
?C0043:
;
; StartI2c();
; SOURCE LINE # 292
LCALL StartI2c
;
; if(!SendByte(SlaveAddress+1))
; SOURCE LINE # 294
MOV DPTR,#SlaveAddress?1064
MOVX A,@DPTR
INC A
MOV R7,A
LCALL _SendByte
JC ?C0044
; {
; SOURCE LINE # 295
; return(FALSE);
; SOURCE LINE # 296
RET
; }
; SOURCE LINE # 297
?C0044:
;
; for(i = 0; i < len - 1; i++)
; SOURCE LINE # 299
CLR A
MOV R0,#LOW (i?1068)
MOV @R0,A
?C0045:
MOV DPTR,#len?1067
MOVX A,@DPTR
DEC A
MOV R7,A
MOV R0,#LOW (i?1068)
MOV A,@R0
CLR C
SUBB A,R7
JNC ?C0046
; {
; SOURCE LINE # 300
; *source = RcvByte(); /*发送数据*/
; SOURCE LINE # 301
LCALL RcvByte
; AckI2c(FALSE); /*发送就答位*/
; SOURCE LINE # 302
LCALL L?0051
; source++;
; SOURCE LINE # 303
MOV A,#01H
ADD A,R1
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
; }
; SOURCE LINE # 304
MOV R0,#LOW (i?1068)
INC @R0
SJMP ?C0045
?C0046:
;
; *source = RcvByte();
; SOURCE LINE # 306
LCALL RcvByte
MOV A,R7
LCALL ?C?CSTPTR
;
; AckI2c(TRUE); /*发送非应位*/
; SOURCE LINE # 308
SETB ?AckI2c?BIT
LCALL AckI2c
;
; StopI2c(); /*结束总线*/
; SOURCE LINE # 310
LCALL StopI2c
;
; return(TRUE);
; SOURCE LINE # 312
SETB C
; }
; SOURCE LINE # 313
?C0041:
RET
; END OF _iic_rcv_long_str
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -