📄 avrnet.lss
字号:
0000071d <__c.2331>:
71d: 53 49 4f 4b 0d 0a 00 SIOK...
00000724 <__c.2320>:
724: 53 54 4f 4b 0d 0a 00 STOK...
0000072b <__c.2318>:
72b: 3b 0d 0a 00 ;...
0000072f <__c.2316>:
72f: 3b 00 ;.
00000731 <__c.2314>:
731: 30 00 0.
00000733 <__c.2312>:
733: 31 00 1.
00000735 <__c.2310>:
735: 30 00 0.
00000737 <__c.2308>:
737: 31 00 1.
00000739 <__c.2306>:
739: 30 00 0.
0000073b <__c.2304>:
73b: 31 00 1.
0000073d <__c.2302>:
73d: 47 41 4f 4b 00 GAOK.
00000742 <__ctors_end>:
742: 11 24 eor r1, r1
744: 1f be out 0x3f, r1 ; 63
746: cf e5 ldi r28, 0x5F ; 95
748: d8 e0 ldi r29, 0x08 ; 8
74a: de bf out 0x3e, r29 ; 62
74c: cd bf out 0x3d, r28 ; 61
0000074e <__do_copy_data>:
74e: 10 e0 ldi r17, 0x00 ; 0
750: a0 e6 ldi r26, 0x60 ; 96
752: b0 e0 ldi r27, 0x00 ; 0
754: e6 e9 ldi r30, 0x96 ; 150
756: fd e2 ldi r31, 0x2D ; 45
758: 02 c0 rjmp .+4 ; 0x75e <.do_copy_data_start>
0000075a <.do_copy_data_loop>:
75a: 05 90 lpm r0, Z+
75c: 0d 92 st X+, r0
0000075e <.do_copy_data_start>:
75e: aa 3e cpi r26, 0xEA ; 234
760: b1 07 cpc r27, r17
762: d9 f7 brne .-10 ; 0x75a <.do_copy_data_loop>
00000764 <__do_clear_bss>:
764: 11 e0 ldi r17, 0x01 ; 1
766: aa ee ldi r26, 0xEA ; 234
768: b0 e0 ldi r27, 0x00 ; 0
76a: 01 c0 rjmp .+2 ; 0x76e <.do_clear_bss_start>
0000076c <.do_clear_bss_loop>:
76c: 1d 92 st X+, r1
0000076e <.do_clear_bss_start>:
76e: a2 32 cpi r26, 0x22 ; 34
770: b1 07 cpc r27, r17
772: e1 f7 brne .-8 ; 0x76c <.do_clear_bss_loop>
774: 0e 94 50 07 call 0xea0 ; 0xea0 <main>
778: 0c 94 ca 16 jmp 0x2d94 ; 0x2d94 <_exit>
0000077c <__bad_interrupt>:
77c: 0c 94 00 00 jmp 0 ; 0x0 <__vectors>
00000780 <enc28j60ReadOp>:
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
BYTE enc28j60ReadOp(BYTE op, BYTE address)
{
780: c4 98 cbi 0x18, 4 ; 24
// activate CS
CSACTIVE;
// issue read command
SPDR = op | (address & ADDR_MASK);
782: 96 2f mov r25, r22
784: 9f 71 andi r25, 0x1F ; 31
786: 98 2b or r25, r24
788: 9f b9 out 0x0f, r25 ; 15
waitspi();
78a: 77 9b sbis 0x0e, 7 ; 14
78c: fe cf rjmp .-4 ; 0x78a <enc28j60ReadOp+0xa>
// read data
SPDR = 0x00;
78e: 1f b8 out 0x0f, r1 ; 15
waitspi();
790: 77 9b sbis 0x0e, 7 ; 14
792: fe cf rjmp .-4 ; 0x790 <enc28j60ReadOp+0x10>
// do dummy read if needed (for mac and mii, see datasheet page 29)
if(address & 0x80)
794: 67 ff sbrs r22, 7
796: 03 c0 rjmp .+6 ; 0x79e <enc28j60ReadOp+0x1e>
{
SPDR = 0x00;
798: 1f b8 out 0x0f, r1 ; 15
waitspi();
79a: 77 9b sbis 0x0e, 7 ; 14
79c: fe cf rjmp .-4 ; 0x79a <enc28j60ReadOp+0x1a>
}
// release CS
CSPASSIVE;
79e: c4 9a sbi 0x18, 4 ; 24
return(SPDR);
7a0: 8f b1 in r24, 0x0f ; 15
}
7a2: 99 27 eor r25, r25
7a4: 08 95 ret
000007a6 <enc28j60WriteOp>:
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60WriteOp(BYTE op, BYTE address, BYTE data)
{
7a6: c4 98 cbi 0x18, 4 ; 24
CSACTIVE;
// issue write command
SPDR = op | (address & ADDR_MASK);
7a8: 6f 71 andi r22, 0x1F ; 31
7aa: 68 2b or r22, r24
7ac: 6f b9 out 0x0f, r22 ; 15
waitspi();
7ae: 77 9b sbis 0x0e, 7 ; 14
7b0: fe cf rjmp .-4 ; 0x7ae <enc28j60WriteOp+0x8>
// write data
SPDR = data;
7b2: 4f b9 out 0x0f, r20 ; 15
waitspi();
7b4: 77 9b sbis 0x0e, 7 ; 14
7b6: fe cf rjmp .-4 ; 0x7b4 <enc28j60WriteOp+0xe>
CSPASSIVE;
7b8: c4 9a sbi 0x18, 4 ; 24
7ba: 08 95 ret
000007bc <enc28j60SetBank>:
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60SetBank(BYTE address)
{
7bc: 1f 93 push r17
7be: cf 93 push r28
7c0: df 93 push r29
7c2: 18 2f mov r17, r24
// set the bank (if needed)
if((address & BANK_MASK) != Enc28j60Bank)
7c4: c8 2f mov r28, r24
7c6: dd 27 eor r29, r29
7c8: c0 76 andi r28, 0x60 ; 96
7ca: d0 70 andi r29, 0x00 ; 0
7cc: 80 91 ea 00 lds r24, 0x00EA
7d0: 99 27 eor r25, r25
7d2: c8 17 cp r28, r24
7d4: d9 07 cpc r29, r25
7d6: 91 f0 breq .+36 ; 0x7fc <enc28j60SetBank+0x40>
{
// set the bank
enc28j60WriteOp(ENC28J60_BIT_FIELD_CLR, ECON1, (ECON1_BSEL1|ECON1_BSEL0));
7d8: 43 e0 ldi r20, 0x03 ; 3
7da: 6f e1 ldi r22, 0x1F ; 31
7dc: 80 ea ldi r24, 0xA0 ; 160
7de: 0e 94 d3 03 call 0x7a6 ; 0x7a6 <enc28j60WriteOp>
enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, ECON1, (address & BANK_MASK)>>5);
7e2: 85 e0 ldi r24, 0x05 ; 5
7e4: d5 95 asr r29
7e6: c7 95 ror r28
7e8: 8a 95 dec r24
7ea: e1 f7 brne .-8 ; 0x7e4 <enc28j60SetBank+0x28>
7ec: 4c 2f mov r20, r28
7ee: 6f e1 ldi r22, 0x1F ; 31
7f0: 80 e8 ldi r24, 0x80 ; 128
7f2: 0e 94 d3 03 call 0x7a6 ; 0x7a6 <enc28j60WriteOp>
Enc28j60Bank = (address & BANK_MASK);
7f6: 10 76 andi r17, 0x60 ; 96
7f8: 10 93 ea 00 sts 0x00EA, r17
7fc: df 91 pop r29
7fe: cf 91 pop r28
800: 1f 91 pop r17
802: 08 95 ret
00000804 <enc28j60Read>:
}
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
BYTE enc28j60Read(BYTE address)
{
804: 1f 93 push r17
806: 18 2f mov r17, r24
// select bank to read
enc28j60SetBank(address);
808: 0e 94 de 03 call 0x7bc ; 0x7bc <enc28j60SetBank>
// do the read
return enc28j60ReadOp(ENC28J60_READ_CTRL_REG, address);
80c: 61 2f mov r22, r17
80e: 80 e0 ldi r24, 0x00 ; 0
810: 0e 94 c0 03 call 0x780 ; 0x780 <enc28j60ReadOp>
}
814: 99 27 eor r25, r25
816: 1f 91 pop r17
818: 08 95 ret
0000081a <enc28j60Write>:
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60Write(BYTE address, BYTE data)
{
81a: 0f 93 push r16
81c: 1f 93 push r17
81e: 08 2f mov r16, r24
820: 16 2f mov r17, r22
// select bank to write
enc28j60SetBank(address);
822: 0e 94 de 03 call 0x7bc ; 0x7bc <enc28j60SetBank>
// do the write
enc28j60WriteOp(ENC28J60_WRITE_CTRL_REG, address, data);
826: 41 2f mov r20, r17
828: 60 2f mov r22, r16
82a: 80 e4 ldi r24, 0x40 ; 64
82c: 0e 94 d3 03 call 0x7a6 ; 0x7a6 <enc28j60WriteOp>
830: 1f 91 pop r17
832: 0f 91 pop r16
834: 08 95 ret
00000836 <enc28j60_read_phyreg>:
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
WORD enc28j60_read_phyreg(BYTE address)
{
836: 0f 93 push r16
838: 1f 93 push r17
WORD data;
// set the PHY register address
enc28j60Write(MIREGADR, address);
83a: 68 2f mov r22, r24
83c: 84 ed ldi r24, 0xD4 ; 212
83e: 0e 94 0d 04 call 0x81a ; 0x81a <enc28j60Write>
enc28j60Write(MICMD, MICMD_MIIRD);
842: 61 e0 ldi r22, 0x01 ; 1
844: 82 ed ldi r24, 0xD2 ; 210
846: 0e 94 0d 04 call 0x81a ; 0x81a <enc28j60Write>
// Loop to wait until the PHY register has been read through the MII
// This requires 10.24us
while( (enc28j60Read(MISTAT) & MISTAT_BUSY) );
84a: 8a ee ldi r24, 0xEA ; 234
84c: 0e 94 02 04 call 0x804 ; 0x804 <enc28j60Read>
850: 80 fd sbrc r24, 0
852: fb cf rjmp .-10 ; 0x84a <enc28j60_read_phyreg+0x14>
// Stop reading
enc28j60Write(MICMD, MICMD_MIIRD);
854: 61 e0 ldi r22, 0x01 ; 1
856: 82 ed ldi r24, 0xD2 ; 210
858: 0e 94 0d 04 call 0x81a ; 0x81a <enc28j60Write>
// Obtain results and return
data = enc28j60Read ( MIRDL );
85c: 88 ed ldi r24, 0xD8 ; 216
85e: 0e 94 02 04 call 0x804 ; 0x804 <enc28j60Read>
862: 08 2f mov r16, r24
864: 11 27 eor r17, r17
data |= enc28j60Read ( MIRDH );
866: 89 ed ldi r24, 0xD9 ; 217
868: 0e 94 02 04 call 0x804 ; 0x804 <enc28j60Read>
86c: 99 27 eor r25, r25
return data;
}
86e: 80 2b or r24, r16
870: 91 2b or r25, r17
872: 1f 91 pop r17
874: 0f 91 pop r16
876: 08 95 ret
00000878 <enc28j60PhyWrite>:
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60PhyWrite(BYTE address, WORD_BYTES data)
{
878: 0f 93 push r16
87a: 1f 93 push r17
87c: 8b 01 movw r16, r22
// set the PHY register address
enc28j60Write(MIREGADR, address);
87e: 68 2f mov r22, r24
880: 84 ed ldi r24, 0xD4 ; 212
882: 0e 94 0d 04 call 0x81a ; 0x81a <enc28j60Write>
// write the PHY data
enc28j60Write(MIWRL, data.byte.low);
886: 60 2f mov r22, r16
888: 86 ed ldi r24, 0xD6 ; 214
88a: 0e 94 0d 04 call 0x81a ; 0x81a <enc28j60Write>
enc28j60Write(MIWRH, data.byte.high);
88e: 61 2f mov r22, r17
890: 87 ed ldi r24, 0xD7 ; 215
892: 0e 94 0d 04 call 0x81a ; 0x81a <enc28j60Write>
896: 03 c0 rjmp .+6 ; 0x89e <enc28j60PhyWrite+0x26>
*/
void
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -