📄 main.ls1
字号:
------ 196 RSEG ?PR?I2C_Start?MAIN
000000 197 I2C_Start:
198 USING 0
199 ; SOURCE LINE # 53
200 ; {
201 ; SOURCE LINE # 54
202 ; I2C_SDA_SET;
203 ; SOURCE LINE # 55
000000 438002 204 ORL P0,#02H
205 ; I2C_SCL_SET;
206 ; SOURCE LINE # 56
000003 438001 207 ORL P0,#01H
208 ; I2C_NOP();
209 ; SOURCE LINE # 57
000006 1100 F 210 ACALL I2C_NOP
211 ; I2C_SDA_CLR;
212 ; SOURCE LINE # 58
000008 5380FD 213 ANL P0,#0FDH
214 ; I2C_NOP();
215 ; SOURCE LINE # 59
00000B 1100 F 216 ACALL I2C_NOP
217 ; I2C_SCL_CLR;
218 ; SOURCE LINE # 60
00000D 5380FE 219 ANL P0,#0FEH
220 ; I2C_NOP();
221 ; SOURCE LINE # 61
000010 0100 F 222 AJMP I2C_NOP
223 ; END OF I2C_Start
224
225 ; }
226 ;
227 ; /* Generate the stop condition */
228 ; void I2C_Stop()
229
------ 230 RSEG ?PR?I2C_Stop?MAIN
000000 231 I2C_Stop:
232 USING 0
233 ; SOURCE LINE # 65
234 ; {
235 ; SOURCE LINE # 66
236 ; I2C_SCL_CLR;
237 ; SOURCE LINE # 67
000000 5380FE 238 ANL P0,#0FEH
239 ; I2C_SDA_CLR;
240 ; SOURCE LINE # 68
000003 5380FD 241 ANL P0,#0FDH
242 ; I2C_NOP();
243 ; SOURCE LINE # 69
000006 1100 F 244 ACALL I2C_NOP
245 ; I2C_SCL_SET;
246 ; SOURCE LINE # 70
000008 438001 247 ORL P0,#01H
248 ; I2C_NOP();
249 ; SOURCE LINE # 71
00000B 1100 F 250 ACALL I2C_NOP
251 ; I2C_SDA_SET;
252 ; SOURCE LINE # 72
00000D 438002 253 ORL P0,#02H
254 ; I2C_NOP();
255 ; SOURCE LINE # 73
000010 0100 F 256 AJMP I2C_NOP
AX51 MACRO ASSEMBLER MAIN 08/22/07 12:34:21 PAGE 5
257 ; END OF I2C_Stop
258
259 ; }
260 ;
261 ; /* Master send a byte to the slave device */
262 ; void I2C_Send_Byte(unsigned char byte)
263
------ 264 RSEG ?PR?_I2C_Send_Byte?MAIN
000000 265 _I2C_Send_Byte:
266 USING 0
267 ; SOURCE LINE # 77
000000 8F00 F 268 MOV byte?240,R7
269 ; {
270 ; SOURCE LINE # 78
271 ; unsigned char mask;
272 ;
273 ; /* Send the byte from MSB to LSB */
274 ; for (mask = 0x80 ; mask > 0 ; mask = mask >> 1 )
275 ; SOURCE LINE # 82
000002 750080 F 276 MOV mask?241,#080H
000005 277 ?C0003:
000005 E500 F 278 MOV A,mask?241
000007 D3 279 SETB C
000008 9400 280 SUBB A,#00H
00000A 401E 281 JC ?C0004
282 ; {
283 ; SOURCE LINE # 83
284 ; if (byte & mask)
285 ; SOURCE LINE # 84
00000C E500 F 286 MOV A,byte?240
00000E 5500 F 287 ANL A,mask?241
000010 6005 288 JZ ?C0006
289 ; I2C_SDA_SET;
290 ; SOURCE LINE # 85
000012 438002 291 ORL P0,#02H
000015 8003 292 SJMP ?C0007
000017 293 ?C0006:
294 ; else
295 ; I2C_SDA_CLR;
296 ; SOURCE LINE # 87
000017 5380FD 297 ANL P0,#0FDH
00001A 298 ?C0007:
299 ;
300 ; I2C_SCL_SET;
301 ; SOURCE LINE # 89
00001A 438001 302 ORL P0,#01H
303 ; I2C_NOP();
304 ; SOURCE LINE # 90
00001D 1100 F 305 ACALL I2C_NOP
306 ; I2C_SCL_CLR;
307 ; SOURCE LINE # 91
00001F 5380FE 308 ANL P0,#0FEH
309 ; }
310 ; SOURCE LINE # 92
000022 E500 F 311 MOV A,mask?241
000024 C3 312 CLR C
000025 13 313 RRC A
000026 F500 F 314 MOV mask?241,A
000028 80DB 315 SJMP ?C0003
00002A 316 ?C0004:
317 ;
318 ; /* Check the Acknowledge from slave device */
319 ; I2C_SDA_SET;
320 ; SOURCE LINE # 95
00002A 438002 321 ORL P0,#02H
322 ; I2C_SCL_SET;
AX51 MACRO ASSEMBLER MAIN 08/22/07 12:34:21 PAGE 6
323 ; SOURCE LINE # 96
00002D 438001 324 ORL P0,#01H
325 ; I2C_NOP();
326 ; SOURCE LINE # 97
000030 1100 F 327 ACALL I2C_NOP
328 ; I2C_SCL_CLR;
329 ; SOURCE LINE # 98
000032 5380FE 330 ANL P0,#0FEH
331 ; I2C_NOP();
332 ; SOURCE LINE # 99
000035 0100 F 333 AJMP I2C_NOP
334 ; END OF _I2C_Send_Byte
335
336 ; }
337 ;
338 ; /* Master send the slave address */
339 ; void I2C_Send_Addr(unsigned char addr, unsigned char dir)
340
------ 341 RSEG ?PR?_I2C_Send_Addr?MAIN
000000 342 _I2C_Send_Addr:
343 USING 0
344 ; SOURCE LINE # 103
345 ;---- Variable 'dir?343' assigned to Register 'R5' ----
346 ;---- Variable 'addr?342' assigned to Register 'R7' ----
347 ; {
348 ; SOURCE LINE # 104
349 ; I2C_Send_Byte(addr + dir);
350 ; SOURCE LINE # 105
000000 EF 351 MOV A,R7
000001 2D 352 ADD A,R5
000002 FF 353 MOV R7,A
000003 0100 F 354 AJMP _I2C_Send_Byte
355 ; END OF _I2C_Send_Addr
356
357 ; }
358 ; /* Master get a byte from the slave device */
359 ; #if 0
360 ; unsigned char I2C_Get_Byte()
361 ; {
362 ; unsigned char mask;
363 ; unsigned char retVal;
364 ;
365 ; I2C_SDA_SET; /* configure the pin for input */
366 ; retVal = 0; /* initial the return value */
367 ;
368 ; for (mask = 0x80 ; mask != 0 ; mask = mask >> 1)
369 ; {
370 ; I2C_NOP();
371 ; I2C_SCL_SET;
372 ; if(I2C_SDA_GET)
373 ; retVal = retVal | 1;
374 ; I2C_NOP();
375 ; I2C_SCL_CLR;
376 ; }
377 ;
378 ; I2C_SDA_SET; /* No Acknowledge */
379 ; I2C_NOP();
380 ; I2C_SCL_SET;
381 ; I2C_NOP();
382 ; I2C_SCL_CLR;
383 ;
384 ; return retVal;
385 ; }
386 ; #endif
387 ; /* Master get the data from the slave device */
388 ; #if 0
AX51 MACRO ASSEMBLER MAIN 08/22/07 12:34:21 PAGE 7
389 ; unsigned char I2C_Get_Data()
390 ; {
391 ; return I2C_Get_Byte();
392 ; }
393 ; #endif
394 ;
395 ; /* Hold the voltage level of the signal */
396 ; void I2C_NOP()
397
------ 398 RSEG ?PR?I2C_NOP?MAIN
000000 399 I2C_NOP:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -