📄 i2c.l
字号:
186 0DBD 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
187 0DC0 FF nop
188 0DC1 AF ret
189 ;***********************************************
190
191 ;***********************************************
192 0DC2 I2C_stop:
193 0DC2 FF nop
194 0DC3 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
195 0DC6 FF nop
196 0DC7 56 E2 EF and I2C_PORT,#I2C_SDA0 ;SDA=0
197 0DCA FF nop
198 0DCB 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
199 0DCE FF nop
200 0DCF 46 E2 10 or I2C_PORT,#I2C_SDA1 ;SDA=1
201 0DD2 FF nop
202 0DD3 AF ret
203 ;***********************************************
204
205 ;***********************************************
206 0DD4 I2C_ask:
207 0DD4 FF nop
208 0DD5 56 E2 EF and I2C_PORT,#I2C_SDA0 ;SDA=0
209 0DD8 FF nop
210 0DD9 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
211 0DDC FF nop
212 0DDD 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
213 0DE0 FF nop
214 0DE1 46 E2 10 or I2C_PORT,#I2C_SDA1 ;SDA=1
215 0DE4 FF nop
216 0DE5 AF ret
217 ;***********************************************
218
219 ;***********************************************
220 0DE6 I2C_noask:
221 0DE6 FF nop
222 0DE7 46 E2 10 or I2C_PORT,#I2C_SDA1 ;SDA=1
223 0DEA FF nop
224 0DEB 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
225 0DEE FF nop
226 0DEF 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
227 0DF2 FF nop
228 0DF3 AF ret
229 ;***********************************************
230
231 ;***********************************************
232 0DF4 I2C_cack:
233 0DF4 FF nop
234 0DF5 46 E2 10 or I2C_PORT,#I2C_SDA1 ;SDA=1
235 0DF8 FF nop
236 0DF9 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
237 0DFC E6 16 00 ld I2C_ack_flag,#00H
238 0DFF 76 E2 10 tm p2,#00010000B
239 0E02 EB 03 jr nz,I2C_nocack
240 0E04 E6 16 01 ld I2C_ack_flag,#01H
241 0E07 I2C_nocack:
242 0E07 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
243 0E0A FF nop
244 0E0B AF ret
245 ;***********************************************
246
247 ;***********************************************
248 0E0C WRbyte:
249 0E0C 0C 08 ld r0,#08H
250 0E0E wlp:
251 0E0E 10 17 rlc I2C_wrdata
252 0E10 7B 02 jr c,wr1
253 0E12 8B 10 jr wr0
254
255 0E14 wr1:
256 0E14 46 E2 10 or I2C_PORT,#I2C_SDA1 ;SDA=1
257 0E17 FF NOP
258 0E18 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
259 0E1B FF nop
260 0E1C FF nop
261 0E1D FF nop
262 0E1E FF nop
263 0E1F 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
264 0E22 8B 10 jr wlp1
265
266 0E24 wr0:
267 0E24 56 E2 EF and I2C_PORT,#I2C_SDA0 ;SDA=0
268 0E27 FF NOP
269 0E28 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
270 0E2B FF nop
271 0E2C FF nop
272 0E2D FF nop
273 0E2E FF nop
274 0E2F 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
275 0E32 8B 00 jr wlp1
276
277 0E34 wlp1:
278 0E34 26 C0 01 sub r0,#01H
279 0E37 EB D5 jr nz,wlp
280 0E39 AF ret
281 ;***************************************************
282
283 ;***************************************************
284 0E3A RDbyte:
285 0E3A 0C 08 ld r0,#08H
286 0E3C rlp:
287 0E3C 46 E2 10 or I2C_PORT,#I2C_SDA1 ;SDA=1
288 0E3F FF nop
289 0E40 46 E2 20 or I2C_PORT,#I2C_SCL1 ;SCL=1
290 0E43 FF nop
291 0E44 76 E2 10 tm I2C_PORT,#I2C_SDA1 ;SDA=0 ?
292 0E47 6B 05 jr z,rd_0
293 0E49 46 18 80 or I2C_rddata,#80H
294 0E4C 8B 03 jr rlp1
295 0E4E rd_0:
296 0E4E 56 18 7F and I2C_rddata,#7FH
297 0E51 rlp1:
298 0E51 56 E2 DF and I2C_PORT,#I2C_SCL0 ;SCL=0
299 0E54 90 18 rl I2C_rddata
300 0E56 26 C0 01 sub r0,#01H
301 0E59 EB E1 jr nz,rlp
302 0E5B AF ret
303 ;***************************************************
304
305 ;***************************************************
306 0E5C WR_24C02:
307 0E5C F6 0D B0 call I2C_start
308 0E5F E6 17 A0 ld I2C_wrdata,#0A0H ;write 24c02 dress
309 0E62 F6 0E 0C call WRbyte
310 0E65 F6 0D F4 call I2C_cack
311 0E68 76 16 01 tm I2C_ack_flag,#01H
312 0E6B 6B 12 jr z,exit_wr
313
314 0E6D E4 1A 17 ld I2C_wrdata,I2C_dress ;write eeprom dress
315 0E70 F6 0E 0C call WRbyte
316 0E73 F6 0D F4 call I2C_cack
317 0E76 wrdata:
318 0E76 E4 19 17 ld I2C_wrdata,I2C_data ;write data to 24C02
319 0E79 F6 0E 0C call WRbyte
320 0E7C F6 0D F4 call I2C_cack
321
322 0E7F exit_wr:
323 0E7F F6 0D C2 call I2C_stop
324 0E82 AF ret
325 ;***************************************************
326
327 ;***************************************************
328 0E83 RD_24C02:
329 0E83 F6 0D B0 call I2C_start
330 0E86 E6 17 A0 ld I2C_wrdata,#0A0H ;write 24c02 dress A0H
331 0E89 F6 0E 0C call WRbyte
332 0E8C F6 0D F4 call I2C_cack
333 0E8F 76 16 01 tm I2C_ack_flag,#01H
334 0E92 6B 23 jr z,exit_rd
335
336 0E94 E4 1A 17 ld I2C_wrdata,I2C_dress ;write eeprom dress
337 0E97 F6 0E 0C call WRbyte
338 0E9A F6 0D F4 call I2C_cack
339
340 0E9D F6 0D B0 call I2C_start
341 0EA0 E6 17 A0 ld I2C_wrdata,#0A0H ;read 24c02 dress A1H
342 0EA3 F6 0E 0C call WRbyte
343 0EA6 F6 0D F4 call I2C_cack
344 0EA9 76 16 01 tm I2C_ack_flag,#01H
345 0EAC 6B 09 jr z,exit_rd
346 0EAE rddata:
347 0EAE F6 0E 3A call RDbyte
348 0EB1 E4 18 19 ld I2C_data,I2C_rddata ;save read data
349 0EB4 F6 0D E6 call I2C_noask
350
351 0EB7 exit_rd:
352 0EB7 F6 0D C2 call I2C_stop
353 0EBA AF ret
354 ;******************************************************
355
356 ;******************************************************
357 0EBB restore:
358 0EBB E6 1A 12 ld I2C_dress,#lamp_status_dress
359 0EBE F6 0E 83 call RD_24C02
360 0EC1 E4 19 12 ld lamp_status,I2C_data
361
362 0EC4 E6 1A 13 ld I2C_dress,#sound_status_dress
363 0EC7 F6 0E 83 call RD_24C02
364 0ECA E4 19 13 ld sound_status,I2C_data
365
366 0ECD E6 1A 14 ld I2C_dress,#fire_value_dress
367 0ED0 F6 0E 83 call RD_24C02
368 0ED3 E4 19 14 ld fire_value,I2C_data
369
370 0ED6 E6 1A 15 ld I2C_dress,#temp_value_dress
371 0ED9 F6 0E 83 call RD_24C02
372 0EDC E4 19 15 ld temp_value,I2C_data
373 0EDF AF ret
374 ;******************************************************
375 0EE0 .end
Total 208 Lines Assembled - 0 Errors, 0 Warnings
Total code size 0x130
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -