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