main.lss

来自「ARP协议,含ARP」· LSS 代码 · 共 2,272 行 · 第 1/5 页

LSS
2,272
字号
     742:	31 e0       	ldi	r19, 0x01	; 1
     744:	82 9f       	mul	r24, r18
     746:	a0 01       	movw	r20, r0
     748:	83 9f       	mul	r24, r19
     74a:	50 0d       	add	r21, r0
     74c:	92 9f       	mul	r25, r18
     74e:	50 0d       	add	r21, r0
     750:	11 24       	eor	r1, r1
     752:	4e 0d       	add	r20, r14
     754:	5f 1d       	adc	r21, r15
        p->pnext = ph;
        ph = p;
    }

    for (p=ph; NULL!=p; p=p->pnext) {
        p->len = MEM_BLK_SIZE;
     756:	f6 01       	movw	r30, r12
     758:	33 83       	std	Z+3, r19	; 0x03
     75a:	22 83       	std	Z+2, r18	; 0x02
        
        if (NULL == p->pnext) {
     75c:	80 81       	ld	r24, Z
     75e:	91 81       	ldd	r25, Z+1	; 0x01
     760:	89 2b       	or	r24, r25
     762:	11 f4       	brne	.+4      	; 0x768 <make_list_msg+0xd2>
            p->len = len - (n - 1) * MEM_BLK_SIZE;
     764:	53 83       	std	Z+3, r21	; 0x03
     766:	42 83       	std	Z+2, r20	; 0x02
        }
        p->pnext = ph;
        ph = p;
    }

    for (p=ph; NULL!=p; p=p->pnext) {
     768:	f6 01       	movw	r30, r12
     76a:	c0 80       	ld	r12, Z
     76c:	d1 80       	ldd	r13, Z+1	; 0x01
     76e:	c1 14       	cp	r12, r1
     770:	d1 04       	cpc	r13, r1
     772:	89 f7       	brne	.-30     	; 0x756 <make_list_msg+0xc0>
        if (NULL == p->pnext) {
            p->len = len - (n - 1) * MEM_BLK_SIZE;
        }
    }

    return ph;
     774:	9b 01       	movw	r18, r22
}
     776:	c9 01       	movw	r24, r18
     778:	df 91       	pop	r29
     77a:	cf 91       	pop	r28
     77c:	1f 91       	pop	r17
     77e:	0f 91       	pop	r16
     780:	ff 90       	pop	r15
     782:	ef 90       	pop	r14
     784:	df 90       	pop	r13
     786:	cf 90       	pop	r12
     788:	08 95       	ret

0000078a <print_msg>:


void print_msg (char ch, struct _mem_block *pm) {
     78a:	0f 93       	push	r16
     78c:	1f 93       	push	r17
     78e:	cf 93       	push	r28
     790:	df 93       	push	r29
     792:	98 2f       	mov	r25, r24
     794:	16 2f       	mov	r17, r22
     796:	07 2f       	mov	r16, r23
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     798:	80 91 9b 00 	lds	r24, 0x009B
     79c:	85 ff       	sbrs	r24, 5
     79e:	fc cf       	rjmp	.-8      	; 0x798 <print_msg+0xe>
 	UDR1 = c;    /* 发送数据*/
     7a0:	8d e0       	ldi	r24, 0x0D	; 13
     7a2:	80 93 9c 00 	sts	0x009C, r24
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     7a6:	80 91 9b 00 	lds	r24, 0x009B
     7aa:	85 ff       	sbrs	r24, 5
     7ac:	fc cf       	rjmp	.-8      	; 0x7a6 <print_msg+0x1c>
 	UDR1 = c;    /* 发送数据*/
     7ae:	8a e0       	ldi	r24, 0x0A	; 10
     7b0:	80 93 9c 00 	sts	0x009C, r24
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     7b4:	80 91 9b 00 	lds	r24, 0x009B
     7b8:	85 ff       	sbrs	r24, 5
     7ba:	fc cf       	rjmp	.-8      	; 0x7b4 <print_msg+0x2a>
 	UDR1 = c;    /* 发送数据*/
     7bc:	90 93 9c 00 	sts	0x009C, r25
     7c0:	81 2f       	mov	r24, r17
     7c2:	90 2f       	mov	r25, r16
     7c4:	9c 01       	movw	r18, r24
     7c6:	f9 01       	movw	r30, r18
     7c8:	20 e0       	ldi	r18, 0x00	; 0
     7ca:	30 e0       	ldi	r19, 0x00	; 0
     7cc:	07 c0       	rjmp	.+14     	; 0x7dc <print_msg+0x52>

us get_msg_len (struct _mem_block *p) {
    us len = 0;

    while (NULL != p) {
        len += p->len;
     7ce:	82 81       	ldd	r24, Z+2	; 0x02
     7d0:	93 81       	ldd	r25, Z+3	; 0x03
     7d2:	28 0f       	add	r18, r24
     7d4:	39 1f       	adc	r19, r25
        p = p->pnext;
     7d6:	01 90       	ld	r0, Z+
     7d8:	f0 81       	ld	r31, Z
     7da:	e0 2d       	mov	r30, r0
}

us get_msg_len (struct _mem_block *p) {
    us len = 0;

    while (NULL != p) {
     7dc:	30 97       	sbiw	r30, 0x00	; 0
     7de:	b9 f7       	brne	.-18     	; 0x7ce <print_msg+0x44>

    put_char ('\r');
    put_char ('\n');
    put_char (ch);

    put_hex_2 (get_msg_len (pm));
     7e0:	c9 01       	movw	r24, r18
     7e2:	0e 94 fa 00 	call	0x1f4	; 0x1f4 <put_hex_2>
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     7e6:	80 91 9b 00 	lds	r24, 0x009B
     7ea:	85 ff       	sbrs	r24, 5
     7ec:	fc cf       	rjmp	.-8      	; 0x7e6 <print_msg+0x5c>
 	UDR1 = c;    /* 发送数据*/
     7ee:	8e e2       	ldi	r24, 0x2E	; 46
     7f0:	80 93 9c 00 	sts	0x009C, r24


void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
     7f4:	60 91 11 01 	lds	r22, 0x0111
     7f8:	70 91 12 01 	lds	r23, 0x0112
     7fc:	21 2f       	mov	r18, r17
     7fe:	30 2f       	mov	r19, r16
     800:	c9 01       	movw	r24, r18
     802:	dc 01       	movw	r26, r24

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
 	UDR1 = c;    /* 发送数据*/
     804:	00 e2       	ldi	r16, 0x20	; 32
    put_char ('.');

    for (p=pm; NULL!=p; p=p->pnext) {
        for (i=0; i<p->len; i++) {
            put_hex (p->content[i]);
     806:	1e e2       	ldi	r17, 0x2E	; 46
     808:	2e c0       	rjmp	.+92     	; 0x866 <print_msg+0xdc>
     80a:	9c 81       	ldd	r25, Y+4	; 0x04


void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
     80c:	89 2f       	mov	r24, r25
     80e:	82 95       	swap	r24
     810:	8f 70       	andi	r24, 0x0F	; 15
     812:	fb 01       	movw	r30, r22
     814:	e8 0f       	add	r30, r24
     816:	f1 1d       	adc	r31, r1
     818:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     81a:	80 91 9b 00 	lds	r24, 0x009B
     81e:	85 ff       	sbrs	r24, 5
     820:	fc cf       	rjmp	.-8      	; 0x81a <print_msg+0x90>
 	UDR1 = c;    /* 发送数据*/
     822:	e0 93 9c 00 	sts	0x009C, r30
void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
    idx = (ch & 0x0f);
    put_char (hex_char[idx]);
     826:	9f 70       	andi	r25, 0x0F	; 15
     828:	fb 01       	movw	r30, r22
     82a:	e9 0f       	add	r30, r25
     82c:	f1 1d       	adc	r31, r1
     82e:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     830:	80 91 9b 00 	lds	r24, 0x009B
     834:	85 ff       	sbrs	r24, 5
     836:	fc cf       	rjmp	.-8      	; 0x830 <print_msg+0xa6>
 	UDR1 = c;    /* 发送数据*/
     838:	e0 93 9c 00 	sts	0x009C, r30
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     83c:	80 91 9b 00 	lds	r24, 0x009B
     840:	85 ff       	sbrs	r24, 5
     842:	fc cf       	rjmp	.-8      	; 0x83c <print_msg+0xb2>
 	UDR1 = c;    /* 发送数据*/
     844:	00 93 9c 00 	sts	0x009C, r16

    put_hex_2 (get_msg_len (pm));
    put_char ('.');

    for (p=pm; NULL!=p; p=p->pnext) {
        for (i=0; i<p->len; i++) {
     848:	2f 5f       	subi	r18, 0xFF	; 255
     84a:	3f 4f       	sbci	r19, 0xFF	; 255
     84c:	21 96       	adiw	r28, 0x01	; 1
     84e:	24 17       	cp	r18, r20
     850:	35 07       	cpc	r19, r21
     852:	d8 f2       	brcs	.-74     	; 0x80a <print_msg+0x80>
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     854:	80 91 9b 00 	lds	r24, 0x009B
     858:	85 ff       	sbrs	r24, 5
     85a:	fc cf       	rjmp	.-8      	; 0x854 <print_msg+0xca>
 	UDR1 = c;    /* 发送数据*/
     85c:	10 93 9c 00 	sts	0x009C, r17
    put_char (ch);

    put_hex_2 (get_msg_len (pm));
    put_char ('.');

    for (p=pm; NULL!=p; p=p->pnext) {
     860:	0d 90       	ld	r0, X+
     862:	bc 91       	ld	r27, X
     864:	a0 2d       	mov	r26, r0
     866:	10 97       	sbiw	r26, 0x00	; 0
     868:	41 f0       	breq	.+16     	; 0x87a <print_msg+0xf0>
        for (i=0; i<p->len; i++) {
     86a:	12 96       	adiw	r26, 0x02	; 2
     86c:	4d 91       	ld	r20, X+
     86e:	5c 91       	ld	r21, X
     870:	13 97       	sbiw	r26, 0x03	; 3
     872:	ed 01       	movw	r28, r26
     874:	20 e0       	ldi	r18, 0x00	; 0
     876:	30 e0       	ldi	r19, 0x00	; 0
     878:	ea cf       	rjmp	.-44     	; 0x84e <print_msg+0xc4>
            put_hex (p->content[i]);
            put_char (' ');
        }
        put_char ('.');
    }
}
     87a:	df 91       	pop	r29
     87c:	cf 91       	pop	r28
     87e:	1f 91       	pop	r17
     880:	0f 91       	pop	r16
     882:	08 95       	ret

00000884 <__vector_1>:
extern volatile uc event_flag;
extern volatile uc rx1_char;
volatile uc old_addr_port;
//外部中断 INT_0
SIGNAL (SIG_INTERRUPT0) { //__vector_1
     884:	1f 92       	push	r1
     886:	0f 92       	push	r0
     888:	0f b6       	in	r0, 0x3f	; 63
     88a:	0f 92       	push	r0
     88c:	0b b6       	in	r0, 0x3b	; 59
     88e:	0f 92       	push	r0
     890:	11 24       	eor	r1, r1
     892:	8f 93       	push	r24
     894:	af 93       	push	r26
     896:	bf 93       	push	r27
     898:	ef 93       	push	r30
     89a:	ff 93       	push	r31
 
    old_addr_port=DM9K_ADDR_PORT;
     89c:	a0 e0       	ldi	r26, 0x00	; 0
     89e:	b0 e2       	ldi	r27, 0x20	; 32
     8a0:	8c 91       	ld	r24, X
     8a2:	80 93 65 01 	sts	0x0165, r24
	
	DM9K_ADDR_PORT=ISR;
     8a6:	8e ef       	ldi	r24, 0xFE	; 254
     8a8:	8c 93       	st	X, r24
	dm9k_isr=DM9K_DATA_PORT;
     8aa:	e0 e0       	ldi	r30, 0x00	; 0
     8ac:	f0 e6       	ldi	r31, 0x60	; 96
     8ae:	80 81       	ld	r24, Z
     8b0:	80 93 16 01 	sts	0x0116, r24
	DM9K_DATA_PORT=0xFF;
     8b4:	8f ef       	ldi	r24, 0xFF	; 255
     8b6:	80 83       	st	Z, r24
	
	
	
	
	event_flag |= INTR_DM9K_EVENT;
     8b8:	80 91 c0 09 	lds	r24, 0x09C0
     8bc:	80 62       	ori	r24, 0x20	; 32
     8be:	80 93 c0 09 	sts	0x09C0, r24
	
	
	DM9K_ADDR_PORT=old_addr_port;
     8c2:	80 91 65 01 	lds	r24, 0x0165
     8c6:	8c 93       	st	X, r24

}
     8c8:	ff 91       	pop	r31
     8ca:	ef 91       	pop	r30
     8cc:	bf 91       	pop	r27
     8ce:	af 91       	pop	r26
     8d0:	8f 91       	pop	r24
     8d2:	0f 90       	pop	r0
     8d4:	0b be       	out	0x3b, r0	; 59
     8d6:	0f 90       	pop	r0
     8d8:	0f be       	out	0x3f, r0	; 63
     8da:	0f 90       	pop	r0
     8dc:	1f 90       	pop	r1
     8de:	18 95       	reti

000008e0 <__vector_2>:

void __vector_2  (void) {asm volatile ("reti"::);}
     8e0:	18 95       	reti
     8e2:	08 95       	ret

000008e4 <__vector_3>:
void __vector_3  (void) {asm volatile ("reti"::);}
     8e4:	18 95       	reti
     8e6:	08 95       	ret

000008e8 <__vector_4>:
void __vector_4  (void) {asm volatile ("reti"::);}
     8e8:	18 95       	reti
     8ea:	08 95       	ret

000008ec <__vector_5>:
void __vector_5  (void) {asm volatile ("reti"::);}
     8ec:	18 95       	reti
     8ee:	08 95       	ret

000008f0 <__vector_6>:
void __vector_6  (void) {asm volatile ("reti"::);}
     8f0:	18 95       	reti
     8f2:	08 95       	ret

000008f4 <__vector_7>:
void __vector_7  (void) {asm volatile ("reti"::);}
     8f4:	18 95       	reti
     8f6:	08 95       	ret

000008f8 <__vector_8>:
void __vector_8  (void) {asm volatile ("reti"::);}
     8f8:	18 95       	reti
     8fa:	08 95       	ret

000008fc <__vector_9>:
void __vector_9  (void) {asm volatile ("reti"::);}
     8fc:	18 95       	reti
     8fe:	08 95       	ret

00000900 <__vector_10>:
void __vector_10 (void) {asm volatile ("reti"::);}
     900:	18 95       	reti
     902:	08 95       	ret

00000904 <__vector_11>:
void __vector_11 (void) {asm volatile ("reti"::);}
     904:	18 95       	reti
     906:	08 95       	ret

00000908 <__vector_12>:
void __vector_12 (void) {asm volatile ("reti"::);}
     908:	18 95       	reti
     90a:	08 95       	ret

0000090c <__vector_13>:
void __vector_13 (void) {asm volatile ("reti"::);}
     90c:	18 95       	reti
     90e:	08 95       	ret

00000910 <__vector_14>:
void __vector_14 (void) {asm volatile ("reti"::);}
     910:	18 95       	reti
     912:	08 95       	ret

00000914 <__vector_15>:

/*定时器T0比较匹配中断*/
SIGNAL(SIG_OUTPUT_COMPARE0){
     914:	1f 92       	push	r1
     916:	0f 92       	push	r0
     918:	0f b6       	in	r0, 0x3f	; 63
     91a:	0f 92       	push	r0
     91c:	11 24       	eor	r1, r1
     91e:	8f 93       	push	r24

	//置事件标志位  
	event_flag |= INTR_TIMER_10MS;
     920:	80 91 c0 09 	lds	r24, 0x09C0
     924:	80 61       	ori	r24, 0x10	; 16
     926:	80 93 c0 09 	sts	0x09C0, r24

}
     92a:	8f 91       	pop	r24
     92c:	0f 90       	pop	r0
     92e:	0f be       	out	0x3f, r0	; 63
     930:	0f 90       	pop	r0
     932:	1f 90       	pop	r1
     934:	18 95       	reti

00000936 <__vector_16>:
void __vector_16 (void) {asm volatile ("reti"::);}
     936:	18 95       	reti
     938:	08 95     

⌨️ 快捷键说明

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