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

📄 avrnet.lss

📁 AVR单片机的以太网源代码支持TCPIPHTTP
💻 LSS
📖 第 1 页 / 共 5 页
字号:
0000071a <__do_copy_data>:
     71a:	10 e0       	ldi	r17, 0x00	; 0
     71c:	a0 e6       	ldi	r26, 0x60	; 96
     71e:	b0 e0       	ldi	r27, 0x00	; 0
     720:	ea e6       	ldi	r30, 0x6A	; 106
     722:	f8 e2       	ldi	r31, 0x28	; 40
     724:	02 c0       	rjmp	.+4      	; 0x72a <.do_copy_data_start>

00000726 <.do_copy_data_loop>:
     726:	05 90       	lpm	r0, Z+
     728:	0d 92       	st	X+, r0

0000072a <.do_copy_data_start>:
     72a:	aa 3e       	cpi	r26, 0xEA	; 234
     72c:	b1 07       	cpc	r27, r17
     72e:	d9 f7       	brne	.-10     	; 0x726 <.do_copy_data_loop>

00000730 <__do_clear_bss>:
     730:	11 e0       	ldi	r17, 0x01	; 1
     732:	aa ee       	ldi	r26, 0xEA	; 234
     734:	b0 e0       	ldi	r27, 0x00	; 0
     736:	01 c0       	rjmp	.+2      	; 0x73a <.do_clear_bss_start>

00000738 <.do_clear_bss_loop>:
     738:	1d 92       	st	X+, r1

0000073a <.do_clear_bss_start>:
     73a:	a2 32       	cpi	r26, 0x22	; 34
     73c:	b1 07       	cpc	r27, r17
     73e:	e1 f7       	brne	.-8      	; 0x738 <.do_clear_bss_loop>
     740:	0e 94 1e 07 	call	0xe3c	; 0xe3c <main>
     744:	0c 94 34 14 	jmp	0x2868	; 0x2868 <_exit>

00000748 <__bad_interrupt>:
     748:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

0000074c <enc28j60ReadOp>:
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
BYTE enc28j60ReadOp(BYTE op, BYTE address)
{
     74c:	c4 98       	cbi	0x18, 4	; 24
	// activate CS
	CSACTIVE;
	// issue read command
	SPDR = op | (address & ADDR_MASK);
     74e:	96 2f       	mov	r25, r22
     750:	9f 71       	andi	r25, 0x1F	; 31
     752:	98 2b       	or	r25, r24
     754:	9f b9       	out	0x0f, r25	; 15
	waitspi();
     756:	77 9b       	sbis	0x0e, 7	; 14
     758:	fe cf       	rjmp	.-4      	; 0x756 <enc28j60ReadOp+0xa>
	// read data
	SPDR = 0x00;
     75a:	1f b8       	out	0x0f, r1	; 15
	waitspi();
     75c:	77 9b       	sbis	0x0e, 7	; 14
     75e:	fe cf       	rjmp	.-4      	; 0x75c <enc28j60ReadOp+0x10>
	// do dummy read if needed (for mac and mii, see datasheet page 29)
	if(address & 0x80)
     760:	67 ff       	sbrs	r22, 7
     762:	03 c0       	rjmp	.+6      	; 0x76a <enc28j60ReadOp+0x1e>
	{
		SPDR = 0x00;
     764:	1f b8       	out	0x0f, r1	; 15
		waitspi();
     766:	77 9b       	sbis	0x0e, 7	; 14
     768:	fe cf       	rjmp	.-4      	; 0x766 <enc28j60ReadOp+0x1a>
	}
	// release CS
	CSPASSIVE;
     76a:	c4 9a       	sbi	0x18, 4	; 24
	return(SPDR);
     76c:	8f b1       	in	r24, 0x0f	; 15
}
     76e:	99 27       	eor	r25, r25
     770:	08 95       	ret

00000772 <enc28j60WriteOp>:
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60WriteOp(BYTE op, BYTE address, BYTE data)
{
     772:	c4 98       	cbi	0x18, 4	; 24
	CSACTIVE;
	// issue write command
	SPDR = op | (address & ADDR_MASK);
     774:	6f 71       	andi	r22, 0x1F	; 31
     776:	68 2b       	or	r22, r24
     778:	6f b9       	out	0x0f, r22	; 15
	waitspi();
     77a:	77 9b       	sbis	0x0e, 7	; 14
     77c:	fe cf       	rjmp	.-4      	; 0x77a <enc28j60WriteOp+0x8>
	// write data
	SPDR = data;
     77e:	4f b9       	out	0x0f, r20	; 15
	waitspi();
     780:	77 9b       	sbis	0x0e, 7	; 14
     782:	fe cf       	rjmp	.-4      	; 0x780 <enc28j60WriteOp+0xe>
	CSPASSIVE;
     784:	c4 9a       	sbi	0x18, 4	; 24
     786:	08 95       	ret

00000788 <enc28j60SetBank>:
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60SetBank(BYTE address)
{
     788:	1f 93       	push	r17
     78a:	cf 93       	push	r28
     78c:	df 93       	push	r29
     78e:	18 2f       	mov	r17, r24
	// set the bank (if needed)
	if((address & BANK_MASK) != Enc28j60Bank)
     790:	c8 2f       	mov	r28, r24
     792:	dd 27       	eor	r29, r29
     794:	c0 76       	andi	r28, 0x60	; 96
     796:	d0 70       	andi	r29, 0x00	; 0
     798:	80 91 ea 00 	lds	r24, 0x00EA
     79c:	99 27       	eor	r25, r25
     79e:	c8 17       	cp	r28, r24
     7a0:	d9 07       	cpc	r29, r25
     7a2:	91 f0       	breq	.+36     	; 0x7c8 <enc28j60SetBank+0x40>
	{
		// set the bank
		enc28j60WriteOp(ENC28J60_BIT_FIELD_CLR, ECON1, (ECON1_BSEL1|ECON1_BSEL0));
     7a4:	43 e0       	ldi	r20, 0x03	; 3
     7a6:	6f e1       	ldi	r22, 0x1F	; 31
     7a8:	80 ea       	ldi	r24, 0xA0	; 160
     7aa:	0e 94 b9 03 	call	0x772	; 0x772 <enc28j60WriteOp>
		enc28j60WriteOp(ENC28J60_BIT_FIELD_SET, ECON1, (address & BANK_MASK)>>5);
     7ae:	85 e0       	ldi	r24, 0x05	; 5
     7b0:	d5 95       	asr	r29
     7b2:	c7 95       	ror	r28
     7b4:	8a 95       	dec	r24
     7b6:	e1 f7       	brne	.-8      	; 0x7b0 <enc28j60SetBank+0x28>
     7b8:	4c 2f       	mov	r20, r28
     7ba:	6f e1       	ldi	r22, 0x1F	; 31
     7bc:	80 e8       	ldi	r24, 0x80	; 128
     7be:	0e 94 b9 03 	call	0x772	; 0x772 <enc28j60WriteOp>
		Enc28j60Bank = (address & BANK_MASK);
     7c2:	10 76       	andi	r17, 0x60	; 96
     7c4:	10 93 ea 00 	sts	0x00EA, r17
     7c8:	df 91       	pop	r29
     7ca:	cf 91       	pop	r28
     7cc:	1f 91       	pop	r17
     7ce:	08 95       	ret

000007d0 <enc28j60Read>:
	}
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
BYTE enc28j60Read(BYTE address)
{
     7d0:	1f 93       	push	r17
     7d2:	18 2f       	mov	r17, r24
	// select bank to read
	enc28j60SetBank(address);
     7d4:	0e 94 c4 03 	call	0x788	; 0x788 <enc28j60SetBank>
	
	// do the read
	return enc28j60ReadOp(ENC28J60_READ_CTRL_REG, address);
     7d8:	61 2f       	mov	r22, r17
     7da:	80 e0       	ldi	r24, 0x00	; 0
     7dc:	0e 94 a6 03 	call	0x74c	; 0x74c <enc28j60ReadOp>
}
     7e0:	99 27       	eor	r25, r25
     7e2:	1f 91       	pop	r17
     7e4:	08 95       	ret

000007e6 <enc28j60Write>:
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60Write(BYTE address, BYTE data)
{
     7e6:	0f 93       	push	r16
     7e8:	1f 93       	push	r17
     7ea:	08 2f       	mov	r16, r24
     7ec:	16 2f       	mov	r17, r22
	// select bank to write
	enc28j60SetBank(address);
     7ee:	0e 94 c4 03 	call	0x788	; 0x788 <enc28j60SetBank>

	// do the write
	enc28j60WriteOp(ENC28J60_WRITE_CTRL_REG, address, data);
     7f2:	41 2f       	mov	r20, r17
     7f4:	60 2f       	mov	r22, r16
     7f6:	80 e4       	ldi	r24, 0x40	; 64
     7f8:	0e 94 b9 03 	call	0x772	; 0x772 <enc28j60WriteOp>
     7fc:	1f 91       	pop	r17
     7fe:	0f 91       	pop	r16
     800:	08 95       	ret

00000802 <enc28j60_read_phyreg>:
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
WORD enc28j60_read_phyreg(BYTE address)
{
     802:	0f 93       	push	r16
     804:	1f 93       	push	r17
	WORD data;
	
	// set the PHY register address
	enc28j60Write(MIREGADR, address);
     806:	68 2f       	mov	r22, r24
     808:	84 ed       	ldi	r24, 0xD4	; 212
     80a:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <enc28j60Write>
	enc28j60Write(MICMD, MICMD_MIIRD);
     80e:	61 e0       	ldi	r22, 0x01	; 1
     810:	82 ed       	ldi	r24, 0xD2	; 210
     812:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <enc28j60Write>
	
	// Loop to wait until the PHY register has been read through the MII
	// This requires 10.24us
	while( (enc28j60Read(MISTAT) & MISTAT_BUSY) );
     816:	8a ee       	ldi	r24, 0xEA	; 234
     818:	0e 94 e8 03 	call	0x7d0	; 0x7d0 <enc28j60Read>
     81c:	80 fd       	sbrc	r24, 0
     81e:	fb cf       	rjmp	.-10     	; 0x816 <enc28j60_read_phyreg+0x14>
	
	// Stop reading
	enc28j60Write(MICMD, MICMD_MIIRD);
     820:	61 e0       	ldi	r22, 0x01	; 1
     822:	82 ed       	ldi	r24, 0xD2	; 210
     824:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <enc28j60Write>
	
	// Obtain results and return
	data = enc28j60Read ( MIRDL );
     828:	88 ed       	ldi	r24, 0xD8	; 216
     82a:	0e 94 e8 03 	call	0x7d0	; 0x7d0 <enc28j60Read>
     82e:	08 2f       	mov	r16, r24
     830:	11 27       	eor	r17, r17
	data |= enc28j60Read ( MIRDH );
     832:	89 ed       	ldi	r24, 0xD9	; 217
     834:	0e 94 e8 03 	call	0x7d0	; 0x7d0 <enc28j60Read>
     838:	99 27       	eor	r25, r25

	return data;
}
     83a:	80 2b       	or	r24, r16
     83c:	91 2b       	or	r25, r17
     83e:	1f 91       	pop	r17
     840:	0f 91       	pop	r16
     842:	08 95       	ret

00000844 <enc28j60PhyWrite>:
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
void enc28j60PhyWrite(BYTE address, WORD_BYTES data)
{
     844:	0f 93       	push	r16
     846:	1f 93       	push	r17
     848:	8b 01       	movw	r16, r22
	// set the PHY register address
	enc28j60Write(MIREGADR, address);
     84a:	68 2f       	mov	r22, r24
     84c:	84 ed       	ldi	r24, 0xD4	; 212
     84e:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <enc28j60Write>
	// write the PHY data
	enc28j60Write(MIWRL, data.byte.low);
     852:	60 2f       	mov	r22, r16
     854:	86 ed       	ldi	r24, 0xD6	; 214
     856:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <enc28j60Write>
	enc28j60Write(MIWRH, data.byte.high);
     85a:	61 2f       	mov	r22, r17
     85c:	87 ed       	ldi	r24, 0xD7	; 215
     85e:	0e 94 f3 03 	call	0x7e6	; 0x7e6 <enc28j60Write>
     862:	03 c0       	rjmp	.+6      	; 0x86a <__stack+0xb>
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
     864:	80 e5       	ldi	r24, 0x50	; 80
     866:	8a 95       	dec	r24
     868:	f1 f7       	brne	.-4      	; 0x866 <__stack+0x7>
	// wait until the PHY write completes
	while(enc28j60Read(MISTAT) & MISTAT_BUSY)
     86a:	8a ee       	ldi	r24, 0xEA	; 234
     86c:	0e 94 e8 03 	call	0x7d0	; 0x7d0 <enc28j60Read>
     870:	80 fd       	sbrc	r24, 0
     872:	f8 cf       	rjmp	.-16     	; 0x864 <__stack+0x5>
     874:	1f 91       	pop	r17
     876:	0f 91       	pop	r16
     878:	08 95       	ret

0000087a <enc28j60getrev>:
	{
		_delay_us(15);
	}
}
//*******************************************************************************************
//
// Function : icmp_send_request
// Description : Send ARP request packet to destination.
//
//*******************************************************************************************
/*
void enc28j60_init( BYTE *avr_mac)
{
	// initialize I/O
	//DDRB |= _BV( DDB4 );
	//CSPASSIVE;



	// enable PB0, reset as output /

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -