⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 avrnet.lss

📁 AVR M32 Ethernet仿真实例
💻 LSS
📖 第 1 页 / 共 5 页
字号:
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 + -