fm_i2cdrv2.lst
来自「MP3 整个 SDK」· LST 代码 · 共 394 行 · 第 1/2 页
LST
394 行
157 000091 D1 POP DE
158 000092 C1 POP BC
159 000093 F1 POP AF
160 000094 C9 RET
161 000095
162 000095 //==================================================
=======
163 000095 // WRITE FM REGISTER
164 000095 //==================================================
=======
165 000095 WRITE_ONEFRAME:
166 000095 E5 PUSH HL
167 000096 C5 PUSH BC
168 000097 D5 PUSH DE
169 000098
170 000098 1EC0 LD E,0C0H //send start
& address
171 00009A CD.... CALL LWRD I2C_Start
172 00009D FE00 CP 00H
173 00009F 2813 JR Z,I2C_werror_exit
174 0000A1
175 0000A1 11.... LD DE,LWRD WRITE_BUFFER
176 0000A4 0E05 LD C,05H
177 0000A6 CD.... CALL LWRD I2C_Write
178 0000A9 FE00 CP 00H
179 0000AB 2807 JR Z,I2C_werror_exit
180 0000AD
181 0000AD 3E01 LD A,01H
182 0000AF 32.... LD (LWRD FM_result),A
183 0000B2 1805 JR I2Cwstop_exit
184 0000B4 I2C_werror_exit:
185 0000B4 3E00 LD A,00H
186 0000B6 32.... LD (LWRD FM_result),A
187 0000B9 I2Cwstop_exit:
188 0000B9 3A.... LD A,(LWRD FM_result)
189 0000BC
190 0000BC D1 POP DE
191 0000BD C1 POP BC
192 0000BE E1 POP HL
193 0000BF C9 RET
194 0000C0
195 0000C0 //==================================================
=======
196 0000C0 // READ FM REGISTER
197 0000C0 //==================================================
=======
198 0000C0 READ_ONEFRAME:
199 0000C0 C5 PUSH BC
200 0000C1 E5 PUSH HL
201 0000C2 D5 PUSH DE
202 0000C3
203 0000C3 1EC1 LD E,0C1H /
/send start & address
204 0000C5 CD.... CALL LWRD I2C_Start
205 0000C8 FE00 CP 00H
206 0000CA 2813 JR Z,I2C_rerror_exit
207 0000CC
208 0000CC 11.... LD DE,LWRD READ_BUFFER
209 0000CF 0E05 LD C,05H
210 0000D1 CD.... CALL LWRD I2C_Read
211 0000D4 FE00 CP 00H
212 0000D6 2807 JR Z,I2C_rerror_exit
213 0000D8
214 0000D8 3E01 LD A,01H
215 0000DA 32.... LD (LWRD FM_result),A
216 0000DD 1805 JR I2Crstop_exit
217 0000DF I2C_rerror_exit:
218 0000DF 3E00 LD A,00H
219 0000E1 32.... LD (LWRD FM_result),A
220 0000E4 I2Crstop_exit:
221 0000E4 3A.... LD A,(LWRD FM_result)
222 0000E7
223 0000E7 D1 POP DE
224 0000E8 E1 POP HL
225 0000E9 C1 POP BC
226 0000EA C9 RET
227 0000EB
228 0000EB /***************************************************
**********
229 0000EB I2C Write One Frame
230 0000EB input parameter:DE:Sendbuffer address
231 0000EB C:byte length
232 0000EB output parameter:A:01-sucess;00-fail.
233 0000EB ****************************************************
*********/
234 0000EB I2C_Write:
235 0000EB C5 PUSH BC
236 0000EC D5 PUSH DE
237 0000ED
238 0000ED 6B LD L,E
239 0000EE 62 LD H,D
240 0000EF 41 LD B,C
241 0000F0 05 DEC B
242 0000F1 I2C_Write_loop:
243 0000F1 5E LD E,(HL)
244 0000F2 0E00 LD C,00H
245 0000F4 CD.... CALL LWRD I2C_Writeonebyte
246 0000F7 FE00 CP 00H
247 0000F9 2809 JR Z,I2C_Write_exit
248 0000FB
249 0000FB 23 INC HL
250 0000FC
251 0000FC 10F3 DJNZ I2C_Write_loop
252 0000FE
253 0000FE 5E LD E,(HL)
254 0000FF 0E02 LD C,02H
255 000101 CD.... CALL LWRD I2C_Writeonebyte
256 000104
257 000104 I2C_Write_exit:
258 000104 D1 POP DE
259 000105 C1 POP BC
260 000106 C9 RET
261 000107
262 000107 /***************************************************
**********
263 000107 I2C Read Continuous Byte
264 000107 input parameter:DE:Receivebuffer address.
265 000107 C:Data length
266 000107 output parameter:A:1-success;0:fail.
267 000107 ****************************************************
*********/
268 000107 I2C_Read:
269 000107 D5 PUSH DE
270 000108
271 000108 6B LD L,E
272 000109 62 LD H,D
273 00010A 41 LD B,C
274 00010B 05 DEC B
275 00010C CD.... CALL DELAY_15us //mus
t >10us;avoid address ACK too short.
276 00010F Read_data_loop:
277 00010F 1E00 LD E,00H
278 000111 CD.... CALL LWRD I2C_ReadOneByte
279 000114 FE00 CP 00H
280 000116 2812 JR Z,I2C_Read_Exit
281 000118 79 LD A,C
282 000119 77 LD (HL),A
283 00011A 23 INC HL
284 00011B 10F2 DJNZ Read_data_loop
285 00011D
286 00011D 1E02 LD E,02H //S
end Stop & Receive data
287 00011F CD.... CALL LWRD I2C_ReadOneByte
288 000122 FE00 CP 00H
289 000124 2804 JR Z,I2C_Read_Exit
290 000126 79 LD A,C
291 000127 77 LD (HL),A
292 000128
293 000128 3E01 LD A,01H
294 00012A I2C_Read_Exit:
295 00012A D1 POP DE
296 00012B C9 RET
297 00012C
298 00012C //==================================================
======
299 00012C // FM wait 50ms
300 00012C //==================================================
======
301 00012C FMwait50ms:
302 00012C F5 PUSH AF
303 00012D C5 PUSH BC
304 00012E DB4E IN A,(4eh)
305 000130 F608 OR 08h
306 000132 D34E OUT (4eh),A
307 000134 0664 LD B,100
308 000136 FMwait50msloop1:
309 000136 C5 PUSH BC
310 000137 //500us
311 000137 06E6 LD B,230
312 000139 FMwait50msloop2:
313 000139 D5 PUSH DE
314 00013A D1 POP DE
315 00013B D5 PUSH DE
316 00013C D1 POP DE
317 00013D 10FA DJNZ FMwait50msloop2
318 00013F
319 00013F C1 POP BC
320 000140 10F4 DJNZ FMwait50msloop1
321 000142 C1 POP BC
322 000143 F1 POP AF
323 000144 C9 RET
324 000145
325 000145 END
##############################
# CRC:B5D1 #
# Errors: 0 #
# Warnings: 0 #
# Bytes: 325 #
##############################
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?