📄 i2c.lst
字号:
304 I2C_Start ();
305 I2C_SetAddr(DevAddr);
306 I2C_Rack();
307 I2C_SetAddr(subAddr);
308 I2C_Rack();
309
310 I2C_Start ();
311 I2C_SetAddr(DevAddr+1);
312 I2C_Rack();
313
314 while(number)
315 {
316 *str = I2C_RxData();
317 if (number==1)
318 I2C_nAck();
319 else
320 I2C_Ack();
321 str++;
322 number -= 1;
323 }
324 I2C_Stop();
325 }
326 */
C51 COMPILER V7.20 I2C 07/16/2005 13:42:42 PAGE 7
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION I2C_Start (BEGIN)
; SOURCE LINE # 18
; SOURCE LINE # 19
; SOURCE LINE # 20
0000 D2B7 SETB Pin_I2CSDA
; SOURCE LINE # 21
0002 120000 E LCALL Delay5US
; SOURCE LINE # 22
0005 120000 E LCALL Delay5US
; SOURCE LINE # 23
0008 D2B6 SETB Pin_I2CSCL
; SOURCE LINE # 24
000A 120000 E LCALL Delay5US
; SOURCE LINE # 25
000D 120000 E LCALL Delay5US
; SOURCE LINE # 26
0010 C2B7 CLR Pin_I2CSDA
; SOURCE LINE # 27
0012 120000 E LCALL Delay5US
; SOURCE LINE # 28
0015 120000 E LCALL Delay5US
; SOURCE LINE # 29
0018 120000 E LCALL Delay5US
; SOURCE LINE # 30
001B C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 31
001D 22 RET
; FUNCTION I2C_Start (END)
; FUNCTION I2C_Stop (BEGIN)
; SOURCE LINE # 37
; SOURCE LINE # 38
; SOURCE LINE # 39
0000 C2B7 CLR Pin_I2CSDA
; SOURCE LINE # 40
0002 120000 E LCALL Delay5US
; SOURCE LINE # 41
0005 D2B6 SETB Pin_I2CSCL
; SOURCE LINE # 42
0007 120000 E LCALL Delay5US
; SOURCE LINE # 43
000A 120000 E LCALL Delay5US
; SOURCE LINE # 44
000D D2B7 SETB Pin_I2CSDA
; SOURCE LINE # 45
000F 22 RET
; FUNCTION I2C_Stop (END)
; FUNCTION I2C_Rack (BEGIN)
; SOURCE LINE # 54
; SOURCE LINE # 55
; SOURCE LINE # 57
0000 C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 58
0002 D2B7 SETB Pin_I2CSDA
; SOURCE LINE # 59
0004 120000 E LCALL Delay5US
; SOURCE LINE # 60
0007 120000 E LCALL Delay5US
C51 COMPILER V7.20 I2C 07/16/2005 13:42:42 PAGE 8
; SOURCE LINE # 61
000A D2B6 SETB Pin_I2CSCL
; SOURCE LINE # 62
000C 120000 E LCALL Delay5US
; SOURCE LINE # 63
000F 120000 E LCALL Delay5US
; SOURCE LINE # 64
0012 120000 E LCALL Delay5US
; SOURCE LINE # 65
0015 C2B7 CLR Pin_I2CSDA
; SOURCE LINE # 66
0017 C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 67
0019 020000 E LJMP Delay5US
; FUNCTION I2C_Rack (END)
; FUNCTION I2C_nAck (BEGIN)
; SOURCE LINE # 95
; SOURCE LINE # 96
; SOURCE LINE # 97
0000 C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 98
0002 120000 E LCALL Delay5US
; SOURCE LINE # 99
0005 D2B7 SETB Pin_I2CSDA
; SOURCE LINE # 100
0007 120000 E LCALL Delay5US
; SOURCE LINE # 101
000A D2B6 SETB Pin_I2CSCL
; SOURCE LINE # 102
000C 120000 E LCALL Delay5US
; SOURCE LINE # 103
000F 120000 E LCALL Delay5US
; SOURCE LINE # 104
0012 120000 E LCALL Delay5US
; SOURCE LINE # 105
0015 C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 106
0017 120000 E LCALL Delay5US
; SOURCE LINE # 107
001A D2B7 SETB Pin_I2CSDA
; SOURCE LINE # 108
001C 22 RET
; FUNCTION I2C_nAck (END)
; FUNCTION _I2C_TxData (BEGIN)
; SOURCE LINE # 114
0000 8F00 R MOV i2c_data,R7
; SOURCE LINE # 115
; SOURCE LINE # 118
0002 E4 CLR A
0003 F500 R MOV send_i,A
0005 ?C0005:
; SOURCE LINE # 119
; SOURCE LINE # 120
0005 C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 121
0007 120000 E LCALL Delay5US
; SOURCE LINE # 122
000A E500 R MOV A,i2c_data
000C 30E704 JNB ACC.7,?C0008
; SOURCE LINE # 123
C51 COMPILER V7.20 I2C 07/16/2005 13:42:42 PAGE 9
000F D2B7 SETB Pin_I2CSDA
0011 8002 SJMP ?C0009
0013 ?C0008:
; SOURCE LINE # 125
0013 C2B7 CLR Pin_I2CSDA
0015 ?C0009:
; SOURCE LINE # 126
0015 120000 E LCALL Delay5US
; SOURCE LINE # 127
0018 D2B6 SETB Pin_I2CSCL
; SOURCE LINE # 128
001A 120000 E LCALL Delay5US
; SOURCE LINE # 129
001D E500 R MOV A,i2c_data
001F 25E0 ADD A,ACC
0021 F500 R MOV i2c_data,A
; SOURCE LINE # 130
0023 0500 R INC send_i
0025 E500 R MOV A,send_i
0027 C3 CLR C
0028 9408 SUBB A,#08H
002A 40D9 JC ?C0005
; SOURCE LINE # 132
002C ?C0010:
002C 22 RET
; FUNCTION _I2C_TxData (END)
; FUNCTION I2C_RxData (BEGIN)
; SOURCE LINE # 140
; SOURCE LINE # 141
; SOURCE LINE # 143
0000 E4 CLR A
0001 F500 R MOV readbyte,A
; SOURCE LINE # 144
0003 C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 145
0005 D2B7 SETB Pin_I2CSDA
; SOURCE LINE # 146
0007 120000 E LCALL Delay5US
; SOURCE LINE # 148
000A E4 CLR A
000B F500 R MOV read_i,A
000D ?C0011:
; SOURCE LINE # 149
; SOURCE LINE # 150
000D D2B6 SETB Pin_I2CSCL
; SOURCE LINE # 151
000F E500 R MOV A,readbyte
0011 25E0 ADD A,ACC
0013 F500 R MOV readbyte,A
; SOURCE LINE # 152
0015 120000 E LCALL Delay5US
; SOURCE LINE # 153
0018 30B703 JNB Pin_I2CSDA,?C0014
; SOURCE LINE # 154
001B 430001 R ORL readbyte,#01H
001E ?C0014:
; SOURCE LINE # 156
001E C2B6 CLR Pin_I2CSCL
; SOURCE LINE # 157
0020 120000 E LCALL Delay5US
; SOURCE LINE # 159
C51 COMPILER V7.20 I2C 07/16/2005 13:42:42 PAGE 10
0023 0500 R INC read_i
0025 E500 R MOV A,read_i
0027 C3 CLR C
0028 9408 SUBB A,#08H
002A 40E1 JC ?C0011
002C ?C0012:
; SOURCE LINE # 160
002C AF00 R MOV R7,readbyte
; SOURCE LINE # 162
002E ?C0015:
002E 22 RET
; FUNCTION I2C_RxData (END)
; FUNCTION _I2C_SetAddr (BEGIN)
; SOURCE LINE # 169
;---- Variable 'i2c_addr' assigned to Register 'R7' ----
; SOURCE LINE # 170
; SOURCE LINE # 171
0000 020000 R LJMP _I2C_TxData
; FUNCTION _I2C_SetAddr (END)
; FUNCTION _I2C_PutByte (BEGIN)
; SOURCE LINE # 182
0000 8F00 R MOV DevAddr,R7
0002 8D00 R MOV subAddr,R5
0004 8B00 R MOV ucData,R3
; SOURCE LINE # 183
; SOURCE LINE # 184
0006 120000 R LCALL I2C_Start
; SOURCE LINE # 185
0009 AF00 R MOV R7,DevAddr
000B 120000 R LCALL _I2C_SetAddr
; SOURCE LINE # 186
000E 120000 R LCALL I2C_Rack
; SOURCE LINE # 187
0011 AF00 R MOV R7,subAddr
0013 120000 R LCALL _I2C_SetAddr
; SOURCE LINE # 188
0016 120000 R LCALL I2C_Rack
; SOURCE LINE # 189
0019 AF00 R MOV R7,ucData
001B 120000 R LCALL _I2C_TxData
; SOURCE LINE # 190
001E 120000 R LCALL I2C_Rack
; SOURCE LINE # 191
0021 020000 R LJMP I2C_Stop
; FUNCTION _I2C_PutByte (END)
; FUNCTION _I2C_GetByte (BEGIN)
; SOURCE LINE # 201
0000 8F00 R MOV DevAddr,R7
0002 8D00 R MOV subAddr,R5
; SOURCE LINE # 202
; SOURCE LINE # 205
0004 120000 R LCALL I2C_Start
; SOURCE LINE # 206
0007 AF00 R MOV R7,DevAddr
0009 120000 R LCALL _I2C_SetAddr
; SOURCE LINE # 207
000C 120000 R LCALL I2C_Rack
; SOURCE LINE # 208
000F AF00 R MOV R7,subAddr
C51 COMPILER V7.20 I2C 07/16/2005 13:42:42 PAGE 11
0011 120000 R LCALL _I2C_SetAddr
; SOURCE LINE # 209
0014 120000 R LCALL I2C_Rack
; SOURCE LINE # 211
0017 120000 R LCALL I2C_Start
; SOURCE LINE # 212
001A E500 R MOV A,DevAddr
001C 04 INC A
001D FF MOV R7,A
001E 120000 R LCALL _I2C_SetAddr
; SOURCE LINE # 213
0021 120000 R LCALL I2C_Rack
; SOURCE LINE # 214
0024 120000 R LCALL I2C_RxData
0027 8F00 R MOV ucData,R7
; SOURCE LINE # 216
0029 120000 R LCALL I2C_nAck
; SOURCE LINE # 218
002C 120000 R LCALL I2C_Stop
; SOURCE LINE # 219
002F AF00 R MOV R7,ucData
; SOURCE LINE # 220
0031 ?C0018:
0031 22 RET
; FUNCTION _I2C_GetByte (END)
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 284 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -