📄 i2c_driver.lst
字号:
136 000049 3E01 LD A,01H
137 00004B 1812 JR I2C_Writeonebyte_exit
138 00004D
139 00004D Wr_Send_Stop:
140 00004D CD.... CALL LWRD I2C_Stop //S
end Stop & the last data
141 000050 CD.... CALL LWRD Trans_complete
142 000053
143 000053 3A.... LD A,(I2CSPEED)
144 000056 C682 ADD A,82H
145 000058 D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
146 00005A
147 00005A CD.... CALL LWRD Wait_Stop
148 00005D 3E01 LD A,01H
149 00005F
150 00005F I2C_Writeonebyte_exit:
151 00005F D1 POP DE
152 000060 C1 POP BC
153 000061 C9 RET
154 000062
155 000062 /***************************************************
************************
156 000062 I2C Transfer Address:After restart,transfer
address.
157 000062 input parameter:E:slave address.
158 000062 output parameter:A:1-success;0:fail.
159 000062 ****************************************************
***********************/
160 000062 I2C_Transaddr:
161 000062 D5 PUSH DE
162 000063
163 000063 7B LD A,E
164 000064 D371 OUT (I2CADDR),A
165 000066
166 000066 3A.... LD A,(I2CSPEED)
167 000069 C682 ADD A,82H
168 00006B D37A OUT (I2CCTL),A
//release i2c;Must need????----test
169 00006D
170 00006D CD.... CALL LWRD Trans_complete
171 000070
172 000070 D1 POP DE
173 000071 C9 RET
174 000072
175 000072 ///*************************************************
**************************
176 000072 // I2C Read Continuous Byte
177 000072 // input parameter:DE:Receivebuffer address
.
178 000072 // C:Data length
179 000072 // output parameter:A:1-success;0:fail.
180 000072 //**************************************************
*************************/
181 000072 //I2C_Read:
182 000072 // PUSH DE
183 000072 //
184 000072 // LD L,E
185 000072 // LD H,D
186 000072 // LD B,C
187 000072 // CALL DELAY_15us //m
ust >10us;avoid address ACK too short.
188 000072 //Read_data:
189 000072 // LD A,B
190 000072 // CP 01H
191 000072 // JR NZ,Send_ACK2
192 000072 // LD A,(I2CSPEED)
193 000072 // ADD A,8BH
194 000072 // //LD A,08BH+I2Cmode /
/if it is last byte,Send NACK & stop.
195 000072 // JR I2C_Read_loop
196 000072 //Send_ACK2:
197 000072 // LD A,(I2CSPEED)
198 000072 // ADD A,82H
199 000072 // //LD A,082H+I2Cmode
//release i2c;Must need!!!!
200 000072 //I2C_Read_loop:
201 000072 // OUT (I2CCTL),A
202 000072 //
203 000072 // CALL LWRD Recv_complete
204 000072 // CP 00H
205 000072 // JR Z,I2C_Read_Exit
206 000072 // IN A,(I2CDAT)
207 000072 // LD (HL),A
208 000072 // INC HL
209 000072 // DJNZ Read_data
210 000072 // LD A,01H
211 000072 //
212 000072 //I2C_Read_Exit:
213 000072 // POP DE
214 000072 // RET
215 000072
216 000072 /***************************************************
***********************
*
217 000072 I2C Read One Byte
218 000072 input parameter:E:02H-Stop;01H-Restart;els
e No.
219 000072 output parameter:A:1-success;0:fail.
220 000072 C:One Byte Data.
221 000072 ****************************************************
********
********
*******/
222 000072 I2C_ReadOneByte:
223 000072 D5 PUSH DE
224 000073 E5 PUSH HL
225 000074
226 000074 7B LD A,E
227 000075 FE01 CP 01H
228 000077 281A JR Z,Rd_Send_Restart
229 000079 FE02 CP 02H
230 00007B 282E JR Z,Rd_Send_Stop
231 00007D
232 00007D 3A.... LD A,(I2CSPEED) /
/read one byte
233 000080 C682 ADD A,82H
234 000082 D37A OUT (I2CCTL),A /
/Realse I2C-must need!!!
235 000084
236 000084 CD.... CALL LWRD Recv_complete
237 000087 FE00 CP 00H
238 000089 283B JR Z,I2C_ReadOneByte_Exit
239 00008B DB7C IN A,(I2CDAT)
240 00008D 4F LD C,A
241 00008E 3E01 LD A,01H
242 000090 C3.... JP I2C_ReadOneByte_Exit
243 000093
244 000093 Rd_Send_Restart:
245 000093 CD.... CALL LWRD I2C_Restart /
/Send NACK & Restart& receive the last data
246 000096 CD.... CALL LWRD Recv_complete
247 000099 FE00 CP 00H
248 00009B 2829 JR Z,I2C_ReadOneByte_Exit
249 00009D DB7C IN A,(I2CDAT)
250 00009F 4F LD C,A
251 0000A0
252 0000A0 3A.... LD A,(I2CSPEED)
253 0000A3 C682 ADD A,82H
254 0000A5 D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
255 0000A7
256 0000A7 3E01 LD A,01H
257 0000A9 181B JR I2C_ReadOneByte_Exit
258 0000AB
259 0000AB Rd_Send_Stop:
260 0000AB CD.... CALL LWRD I2C_Stop //
Send Stop & NACK & receive the last data
261 0000AE CD.... CALL LWRD Recv_complete
262 0000B1 FE00 CP 00H
263 0000B3 2811 JR Z,I2C_ReadOneByte_Exit
264 0000B5 DB7C IN A,(I2CDAT)
265 0000B7 4F LD C,A
266 0000B8
267 0000B8 3A.... LD A,(I2CSPEED)
268 0000BB C682 ADD A,82H
269 0000BD D37A OUT (I2CCTL),A
//release i2c;Must need!!!!
270 0000BF
271 0000BF CD.... CALL LWRD Wait_Stop
272 0000C2 3E01 LD A,01H
273 0000C4 1800 JR I2C_ReadOneByte_Exit
274 0000C6
275 0000C6 I2C_ReadOneByte_Exit:
276 0000C6 E1 POP HL
277 0000C7 D1 POP DE
278 0000C8 C9 RET
279 0000C9
280 0000C9 /***************************************************
************************
281 0000C9 I2C Restart
282 0000C9 input parameter:NO
283 0000C9 output parameter:NO
284 0000C9 ****************************************************
**********************
*/
285 0000C9 I2C_Restart:
286 0000C9 3A.... LD A,(I2CSPEED)
287 0000CC C68F ADD A,8FH
288 0000CE D37A OUT (I2CCTL),A //Sta
rt condition
289 0000D0 C9 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -