📄 enc28j60.lst
字号:
419:io/enc28j60.c **** res = enc28j60_read_address(ENC28J60_REG_MIRDH)<<8;
420:io/enc28j60.c **** res |= enc28j60_read_address(ENC28J60_REG_MIRDL);
421:io/enc28j60.c ****
422:io/enc28j60.c **** return res;
423:io/enc28j60.c **** }
424:io/enc28j60.c ****
425:io/enc28j60.c **** //write phy register
426:io/enc28j60.c **** void enc28j60_write_phy(unsigned char address, unsigned int data){
427:io/enc28j60.c **** //see microchip datasheet p.21
428:io/enc28j60.c **** //set address to MIREGADR:
429:io/enc28j60.c **** enc28j60_write_address(ENC28J60_REG_MIREGADR, address);
430:io/enc28j60.c ****
431:io/enc28j60.c **** //send the data
432:io/enc28j60.c **** enc28j60_write_address(ENC28J60_REG_MIWRL, data&0xFF);
433:io/enc28j60.c **** enc28j60_write_address(ENC28J60_REG_MIWRH, data>>8 );
434:io/enc28j60.c ****
435:io/enc28j60.c ****
436:io/enc28j60.c **** //wait until PHY write finished:
437:io/enc28j60.c **** while(enc28j60_read_address(ENC28J60_REG_MISTAT) & (1<<ENC28J60_BIT_MISTAT_BUSY)){}
438:io/enc28j60.c **** }
439:io/enc28j60.c ****
440:io/enc28j60.c ****
441:io/enc28j60.c **** //read enc28j60 buffer
442:io/enc28j60.c **** void enc28j60_read_buffer(unsigned char *buffer, unsigned int len){
229 n 68,0,442,.LM23-.LFBB3
230 .LM23:
231 0066 C098 cbi 56-32,0
443:io/enc28j60.c **** (1<<ENC28J60_BIT_MISTAT_BUSY)){}
444:io/enc28j60.c **** }
445:io/enc28j60.c ****
232 tabn 68,0,445,.LM24-.LFBB3
233 .LM24:
234 0068 8FEB ldi r24,lo8(-65)
235 006a 8FB9 out 47-32,r24
236 .L21:
446:io/enc28j60.c **** >8 );
447:io/enc28j60.c ****
448:io/enc28j60.c ****
237 bn 68,0,448,.LM25-.LFBB3
238 .LM25:
239 006c 779B sbis 46-32,7
240 006e 00C0 rjmp .L21
449:io/enc28j60.c **** ;
450:io/enc28j60.c ****
451:io/enc28j60.c **** //send the data
452:io/enc28j60.c **** enc28j60_write_address(ENC28J60_REG_MIWRL, data&0xFF);
241 abn 68,0,452,.LM26-.LFBB3
242 .LM26:
243 0070 83E0 ldi r24,lo8(3)
244 0072 8FB9 out 47-32,r24
245 .L22:
453:io/enc28j60.c **** GADR:
454:io/enc28j60.c **** enc28j60_write_address(ENC28J60_REG_MIREGADR, address);
455:io/enc28j60.c ****
246 bn 68,0,455,.LM27-.LFBB3
247 .LM27:
248 0074 779B sbis 46-32,7
249 0076 00C0 rjmp .L22
456:io/enc28j60.c **** unsigned int data){
457:io/enc28j60.c **** //see microchip datasheet p.21
458:io/enc28j60.c **** //set address to MIREGADR:
250 abn 68,0,458,.LM28-.LFBB3
251 .LM28:
252 0078 C09A sbi 56-32,0
253 .LBE70:
254 .LBE69:
256 .LM29:
257 007a 9091 0000 lds r25,enc28j60_current_bank
258 .LBB71:
259 .LBB72:
261 .LM30:
262 007e C098 cbi 56-32,0
264 .LM31:
265 0080 8FE9 ldi r24,lo8(-97)
266 0082 8FB9 out 47-32,r24
267 .L23:
269 .LM32:
270 0084 779B sbis 46-32,7
271 0086 00C0 rjmp .L23
272 .LBE72:
273 .LBE71:
275 .LM33:
276 0088 9295 swap r25
277 008a 9695 lsr r25
278 008c 9770 andi r25,lo8(7)
279 .LBB74:
280 .LBB73:
282 .LM34:
283 008e 9FB9 out 47-32,r25
284 .L24:
286 .LM35:
287 0090 779B sbis 46-32,7
288 0092 00C0 rjmp .L24
290 .LM36:
291 0094 C09A sbi 56-32,0
292 .L25:
293 0096 0895 ret
294 .LBE73:
295 .LBE74:
297 .Lscope3:
301 .global enc28j60_write_address
303 enc28j60_write_address:
305 .LM37:
306 .LFBB4:
307 0098 0F93 push r16
308 009a 1F93 push r17
309 /* prologue: function */
310 /* frame size = 0 */
311 009c 182F mov r17,r24
312 009e 062F mov r16,r22
314 .LM38:
315 00a0 0E94 0000 call enc28j60_select_bank
317 .LM39:
318 00a4 1F71 andi r17,lo8(31)
319 00a6 1064 ori r17,lo8(64)
320 .LBB75:
321 .LBB76:
323 .LM40:
324 00a8 C098 cbi 56-32,0
326 .LM41:
327 00aa 1FB9 out 47-32,r17
328 .L31:
330 .LM42:
331 00ac 779B sbis 46-32,7
332 00ae 00C0 rjmp .L31
334 .LM43:
335 00b0 0FB9 out 47-32,r16
336 .L32:
338 .LM44:
339 00b2 779B sbis 46-32,7
340 00b4 00C0 rjmp .L32
342 .LM45:
343 00b6 C09A sbi 56-32,0
344 /* epilogue start */
345 .LBE76:
346 .LBE75:
348 .LM46:
349 00b8 1F91 pop r17
350 00ba 0F91 pop r16
351 00bc 0895 ret
353 .Lscope4:
357 .global enc28j60_spi_read_byte
359 enc28j60_spi_read_byte:
361 .LM47:
362 .LFBB5:
363 /* prologue: function */
364 /* frame size = 0 */
366 .LM48:
367 00be C098 cbi 56-32,0
369 .LM49:
370 00c0 962F mov r25,r22
371 00c2 9F71 andi r25,lo8(31)
372 00c4 982B or r25,r24
373 00c6 9FB9 out 47-32,r25
374 .L37:
376 .LM50:
377 00c8 779B sbis 46-32,7
378 00ca 00C0 rjmp .L37
380 .LM51:
381 00cc 1FB8 out 47-32,__zero_reg__
382 .L38:
384 .LM52:
385 00ce 779B sbis 46-32,7
386 00d0 00C0 rjmp .L38
388 .LM53:
389 00d2 67FF sbrs r22,7
390 00d4 00C0 rjmp .L39
392 .LM54:
393 00d6 1FB8 out 47-32,__zero_reg__
394 .L40:
396 .LM55:
397 00d8 779B sbis 46-32,7
398 00da 00C0 rjmp .L40
399 .L39:
401 .LM56:
402 00dc 8FB1 in r24,47-32
404 .LM57:
405 00de C09A sbi 56-32,0
406 /* epilogue start */
408 .LM58:
409 00e0 0895 ret
414 .Lscope5:
417 .global enc28j60_read_address
419 enc28j60_read_address:
421 .LM59:
422 .LFBB6:
423 00e2 1F93 push r17
424 /* prologue: function */
425 /* frame size = 0 */
426 00e4 182F mov r17,r24
428 .LM60:
429 00e6 0E94 0000 call enc28j60_select_bank
431 .LM61:
432 00ea 80E0 ldi r24,lo8(0)
433 00ec 612F mov r22,r17
434 00ee 0E94 0000 call enc28j60_spi_read_byte
435 /* epilogue start */
437 .LM62:
438 00f2 1F91 pop r17
439 00f4 0895 ret
441 .Lscope6:
444 .global enc28j60_write_phy
446 enc28j60_write_phy:
448 .LM63:
449 .LFBB7:
450 00f6 0F93 push r16
451 00f8 1F93 push r17
452 /* prologue: function */
453 /* frame size = 0 */
454 00fa 982F mov r25,r24
455 00fc 162F mov r17,r22
456 00fe 072F mov r16,r23
458 .LM64:
459 0100 84ED ldi r24,lo8(-44)
460 0102 692F mov r22,r25
461 0104 0E94 0000 call enc28j60_write_address
463 .LM65:
464 0108 86ED ldi r24,lo8(-42)
465 010a 612F mov r22,r17
466 010c 0E94 0000 call enc28j60_write_address
468 .LM66:
469 0110 87ED ldi r24,lo8(-41)
470 0112 602F mov r22,r16
471 0114 0E94 0000 call enc28j60_write_address
472 .L48:
474 .LM67:
475 0118 8AEE ldi r24,lo8(-22)
476 011a 0E94 0000 call enc28j60_read_address
477 011e 80FD sbrc r24,0
478 0120 00C0 rjmp .L48
479 /* epilogue start */
481 .LM68:
482 0122 1F91 pop r17
483 0124 0F91 pop r16
484 0126 0895 ret
486 .Lscope7:
489 .global enc28j60_read_phy
491 enc28j60_read_phy:
493 .LM69:
494 .LFBB8:
495 0128 0F93 push r16
496 012a 1F93 push r17
497 /* prologue: function */
498 /* frame size = 0 */
499 012c 682F mov r22,r24
501 .LM70:
502 012e 84ED ldi r24,lo8(-44)
503 0130 0E94 0000 call enc28j60_write_address
505 .LM71:
506 0134 82ED ldi r24,lo8(-46)
507 0136 61E0 ldi r22,lo8(1)
508 0138 0E94 0000 call enc28j60_write_address
509 .L52:
511 .LM72:
512 013c 8AEE ldi r24,lo8(-22)
513 013e 0E94 0000 call enc28j60_read_address
514 0142 80FD sbrc r24,0
515 0144 00C0 rjmp .L52
517 .LM73:
518 0146 82ED ldi r24,lo8(-46)
519 0148 60E0 ldi r22,lo8(0)
520 014a 0E94 0000 call enc28j60_write_address
522 .LM74:
523 014e 89ED ldi r24,lo8(-39)
524 0150 0E94 0000 call enc28j60_read_address
525 0154 182F mov r17,r24
526 0156 00E0 ldi r16,lo8(0)
528 .LM75:
529 0158 88ED ldi r24,lo8(-40)
530 015a 0E94 0000 call enc28j60_read_address
531 015e 282F mov r18,r24
532 0160 30E0 ldi r19,lo8(0)
533 0162 202B or r18,r16
534 0164 312B or r19,r17
536 .LM76:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -