main.lss

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

LSS
2,272
字号
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     39a:	80 91 9b 00 	lds	r24, 0x009B
     39e:	85 ff       	sbrs	r24, 5
     3a0:	fc cf       	rjmp	.-8      	; 0x39a <put_hex_6+0x1c>
 	UDR1 = c;    /* 发送数据*/
     3a2:	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]);
     3a6:	9f 70       	andi	r25, 0x0F	; 15
     3a8:	fa 01       	movw	r30, r20
     3aa:	e9 0f       	add	r30, r25
     3ac:	f1 1d       	adc	r31, r1
     3ae:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     3b0:	80 91 9b 00 	lds	r24, 0x009B
     3b4:	85 ff       	sbrs	r24, 5
     3b6:	fc cf       	rjmp	.-8      	; 0x3b0 <put_hex_6+0x32>
 	UDR1 = c;    /* 发送数据*/
     3b8:	e0 93 9c 00 	sts	0x009C, r30
}

void put_hex_6 (uc *p) 
{
	uc i;
	for(i=0;i<6;i++)
     3bc:	2f 5f       	subi	r18, 0xFF	; 255
     3be:	26 30       	cpi	r18, 0x06	; 6
     3c0:	11 f0       	breq	.+4      	; 0x3c6 <put_hex_6+0x48>
	{
		put_hex(*p);
		p++;		
     3c2:	11 96       	adiw	r26, 0x01	; 1
     3c4:	e2 cf       	rjmp	.-60     	; 0x38a <put_hex_6+0xc>
     3c6:	08 95       	ret

000003c8 <put_hex4>:
	}
}

void put_hex4 (uc *p) 
{
     3c8:	dc 01       	movw	r26, r24


void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
     3ca:	40 91 11 01 	lds	r20, 0x0111
     3ce:	50 91 12 01 	lds	r21, 0x0112
     3d2:	20 e0       	ldi	r18, 0x00	; 0
void put_hex4 (uc *p) 
{
	uc i;
	for(i=0;i<4;i++)
	{
		put_hex(*p);
     3d4:	9c 91       	ld	r25, X


void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
     3d6:	89 2f       	mov	r24, r25
     3d8:	82 95       	swap	r24
     3da:	8f 70       	andi	r24, 0x0F	; 15
     3dc:	fa 01       	movw	r30, r20
     3de:	e8 0f       	add	r30, r24
     3e0:	f1 1d       	adc	r31, r1
     3e2:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     3e4:	80 91 9b 00 	lds	r24, 0x009B
     3e8:	85 ff       	sbrs	r24, 5
     3ea:	fc cf       	rjmp	.-8      	; 0x3e4 <put_hex4+0x1c>
 	UDR1 = c;    /* 发送数据*/
     3ec:	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]);
     3f0:	9f 70       	andi	r25, 0x0F	; 15
     3f2:	fa 01       	movw	r30, r20
     3f4:	e9 0f       	add	r30, r25
     3f6:	f1 1d       	adc	r31, r1
     3f8:	e0 81       	ld	r30, Z
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     3fa:	80 91 9b 00 	lds	r24, 0x009B
     3fe:	85 ff       	sbrs	r24, 5
     400:	fc cf       	rjmp	.-8      	; 0x3fa <put_hex4+0x32>
 	UDR1 = c;    /* 发送数据*/
     402:	e0 93 9c 00 	sts	0x009C, r30
}

void put_hex4 (uc *p) 
{
	uc i;
	for(i=0;i<4;i++)
     406:	2f 5f       	subi	r18, 0xFF	; 255
     408:	24 30       	cpi	r18, 0x04	; 4
     40a:	11 f0       	breq	.+4      	; 0x410 <put_hex4+0x48>
	{
		put_hex(*p);
		p++;		
     40c:	11 96       	adiw	r26, 0x01	; 1
     40e:	e2 cf       	rjmp	.-60     	; 0x3d4 <put_hex4+0xc>
     410:	08 95       	ret

00000412 <putl_str>:
	}
}

void putl_str (char *s) 
{
     412:	fc 01       	movw	r30, r24
     414:	07 c0       	rjmp	.+14     	; 0x424 <putl_str+0x12>
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     416:	80 91 9b 00 	lds	r24, 0x009B
     41a:	85 ff       	sbrs	r24, 5
     41c:	fc cf       	rjmp	.-8      	; 0x416 <putl_str+0x4>
 	UDR1 = c;    /* 发送数据*/
     41e:	90 93 9c 00 	sts	0x009C, r25
void putl_str (char *s) 
{
    while (0 != *s) 
	{
        put_char (*s);
        s++;
     422:	31 96       	adiw	r30, 0x01	; 1
	}
}

void putl_str (char *s) 
{
    while (0 != *s) 
     424:	90 81       	ld	r25, Z
     426:	99 23       	and	r25, r25
     428:	b1 f7       	brne	.-20     	; 0x416 <putl_str+0x4>
extern volatile uc rx1_char;

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

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
     438:	80 91 9b 00 	lds	r24, 0x009B
     43c:	85 ff       	sbrs	r24, 5
     43e:	fc cf       	rjmp	.-8      	; 0x438 <putl_str+0x26>
 	UDR1 = c;    /* 发送数据*/
     440:	8a e0       	ldi	r24, 0x0A	; 10
     442:	80 93 9c 00 	sts	0x009C, r24
        put_char (*s);
        s++;
    }
    put_char ('\r');
    put_char ('\n');
     446:	08 95       	ret

00000448 <enroll_tick>:

void init_tick (void) {
    memset (tick_tasks, 0, sizeof(tick_tasks));
}

void enroll_tick (tick_task_t f) {
     448:	a8 e4       	ldi	r26, 0x48	; 72
     44a:	b1 e0       	ldi	r27, 0x01	; 1
     44c:	40 e0       	ldi	r20, 0x00	; 0
     44e:	ef ef       	ldi	r30, 0xFF	; 255
    uc i, j;

    j = 0xFF;

    for (i=0; i<TICK_TASK_CNT; i++) {
        if (NULL == tick_tasks[i]) {
     450:	2d 91       	ld	r18, X+
     452:	3c 91       	ld	r19, X
     454:	11 97       	sbiw	r26, 0x01	; 1
     456:	21 15       	cp	r18, r1
     458:	31 05       	cpc	r19, r1
     45a:	09 f4       	brne	.+2      	; 0x45e <enroll_tick+0x16>
     45c:	e4 2f       	mov	r30, r20
            j = i;
        }
        if (f == tick_tasks[i]) {
     45e:	82 17       	cp	r24, r18
     460:	93 07       	cpc	r25, r19
     462:	69 f0       	breq	.+26     	; 0x47e <enroll_tick+0x36>
void enroll_tick (tick_task_t f) {
    uc i, j;

    j = 0xFF;

    for (i=0; i<TICK_TASK_CNT; i++) {
     464:	4f 5f       	subi	r20, 0xFF	; 255
     466:	12 96       	adiw	r26, 0x02	; 2
     468:	4a 30       	cpi	r20, 0x0A	; 10
     46a:	91 f7       	brne	.-28     	; 0x450 <enroll_tick+0x8>
        if (f == tick_tasks[i]) {
            return;
        }
    }

    if (0xFF == j) {
     46c:	ef 3f       	cpi	r30, 0xFF	; 255
     46e:	39 f0       	breq	.+14     	; 0x47e <enroll_tick+0x36>
        return;
    }

    tick_tasks[j] = f;
     470:	f0 e0       	ldi	r31, 0x00	; 0
     472:	ee 0f       	add	r30, r30
     474:	ff 1f       	adc	r31, r31
     476:	e8 5b       	subi	r30, 0xB8	; 184
     478:	fe 4f       	sbci	r31, 0xFE	; 254
     47a:	91 83       	std	Z+1, r25	; 0x01
     47c:	80 83       	st	Z, r24
     47e:	08 95       	ret

00000480 <deroll_tick>:
}

void deroll_tick (tick_task_t f) {
     480:	9c 01       	movw	r18, r24
     482:	e8 e4       	ldi	r30, 0x48	; 72
     484:	f1 e0       	ldi	r31, 0x01	; 1
    uc i;

    for (i=0; i<TICK_TASK_CNT; i++) {
        if (f == tick_tasks[i]) {
     486:	80 81       	ld	r24, Z
     488:	91 81       	ldd	r25, Z+1	; 0x01
     48a:	28 17       	cp	r18, r24
     48c:	39 07       	cpc	r19, r25
     48e:	11 f4       	brne	.+4      	; 0x494 <deroll_tick+0x14>
            tick_tasks[i] = NULL;
     490:	11 82       	std	Z+1, r1	; 0x01
     492:	10 82       	st	Z, r1
     494:	32 96       	adiw	r30, 0x02	; 2
}

void deroll_tick (tick_task_t f) {
    uc i;

    for (i=0; i<TICK_TASK_CNT; i++) {
     496:	81 e0       	ldi	r24, 0x01	; 1
     498:	ec 35       	cpi	r30, 0x5C	; 92
     49a:	f8 07       	cpc	r31, r24
     49c:	a1 f7       	brne	.-24     	; 0x486 <deroll_tick+0x6>
        if (f == tick_tasks[i]) {
            tick_tasks[i] = NULL;
        }
    }
}
     49e:	08 95       	ret

000004a0 <exec_tick>:

void exec_tick (void) {
     4a0:	cf 93       	push	r28
     4a2:	df 93       	push	r29
     4a4:	c8 e4       	ldi	r28, 0x48	; 72
     4a6:	d1 e0       	ldi	r29, 0x01	; 1
    uc i;

    for (i=0; i<TICK_TASK_CNT; i++) {
        if (tick_tasks[i]) {
     4a8:	e8 81       	ld	r30, Y
     4aa:	f9 81       	ldd	r31, Y+1	; 0x01
     4ac:	30 97       	sbiw	r30, 0x00	; 0
     4ae:	09 f0       	breq	.+2      	; 0x4b2 <exec_tick+0x12>
            tick_tasks[i] ();
     4b0:	09 95       	icall
     4b2:	22 96       	adiw	r28, 0x02	; 2
}

void exec_tick (void) {
    uc i;

    for (i=0; i<TICK_TASK_CNT; i++) {
     4b4:	81 e0       	ldi	r24, 0x01	; 1
     4b6:	cc 35       	cpi	r28, 0x5C	; 92
     4b8:	d8 07       	cpc	r29, r24
     4ba:	b1 f7       	brne	.-20     	; 0x4a8 <exec_tick+0x8>
        if (tick_tasks[i]) {
            tick_tasks[i] ();
        }
    }
}
     4bc:	df 91       	pop	r29
     4be:	cf 91       	pop	r28
     4c0:	08 95       	ret

000004c2 <init_cfg>:
//uc cfg_gw_addr[IP_ADDR_LEN];
//uc cfg_ip_mask[IP_ADDR_LEN];
uc cfg_dst_addr[IP_ADDR_LEN];

void init_cfg(void)
{
     4c2:	30 ec       	ldi	r19, 0xC0	; 192
     4c4:	30 93 44 01 	sts	0x0144, r19
    //配本机IP地址
    cfg_src_addr[0]=192;
    cfg_src_addr[1]=168;
     4c8:	28 ea       	ldi	r18, 0xA8	; 168
     4ca:	20 93 45 01 	sts	0x0145, r18
    cfg_src_addr[2]=2;
     4ce:	92 e0       	ldi	r25, 0x02	; 2
     4d0:	90 93 46 01 	sts	0x0146, r25
    cfg_src_addr[3]=35;
     4d4:	83 e2       	ldi	r24, 0x23	; 35
     4d6:	80 93 47 01 	sts	0x0147, r24

    //配本机MAC地址
    cfg_mac_addr[0]=0x12;
     4da:	82 e1       	ldi	r24, 0x12	; 18
     4dc:	80 93 5f 01 	sts	0x015F, r24
    cfg_mac_addr[1]=0x34;
     4e0:	84 e3       	ldi	r24, 0x34	; 52
     4e2:	80 93 60 01 	sts	0x0160, r24
    cfg_mac_addr[2]=0x56;
     4e6:	86 e5       	ldi	r24, 0x56	; 86
     4e8:	80 93 61 01 	sts	0x0161, r24
    cfg_mac_addr[3]=0x78;
     4ec:	88 e7       	ldi	r24, 0x78	; 120
     4ee:	80 93 62 01 	sts	0x0162, r24
    cfg_mac_addr[4]=0x00;
     4f2:	10 92 63 01 	sts	0x0163, r1
    cfg_mac_addr[5]=0x30;
     4f6:	80 e3       	ldi	r24, 0x30	; 48
     4f8:	80 93 64 01 	sts	0x0164, r24
	
	//配目的IP
	cfg_dst_addr[0]=192;
     4fc:	30 93 66 01 	sts	0x0166, r19
    cfg_dst_addr[1]=168;
     500:	20 93 67 01 	sts	0x0167, r18
    cfg_dst_addr[2]=2;
     504:	90 93 68 01 	sts	0x0168, r25
    cfg_dst_addr[3]=37;
     508:	85 e2       	ldi	r24, 0x25	; 37
     50a:	80 93 69 01 	sts	0x0169, r24


}
     50e:	08 95       	ret

00000510 <cfg_same_ip>:
{
    memcpy(addr,cfg_mac_addr,MAC_ADDR_LEN);
}

bool cfg_same_ip(uc * ip1, uc *ip2)
{
     510:	ac 01       	movw	r20, r24
     512:	20 e0       	ldi	r18, 0x00	; 0
     514:	30 e0       	ldi	r19, 0x00	; 0
    
    for(uc i=0;i<IP_ADDR_LEN;i++)
    {
        if(ip1[i]!=ip2[i])
     516:	fa 01       	movw	r30, r20
     518:	e2 0f       	add	r30, r18
     51a:	f3 1f       	adc	r31, r19
     51c:	db 01       	movw	r26, r22
     51e:	a2 0f       	add	r26, r18
     520:	b3 1f       	adc	r27, r19
     522:	90 81       	ld	r25, Z
     524:	8c 91       	ld	r24, X
     526:	98 17       	cp	r25, r24
     528:	11 f0       	breq	.+4      	; 0x52e <cfg_same_ip+0x1e>
     52a:	80 e0       	ldi	r24, 0x00	; 0
     52c:	08 95       	ret
     52e:	2f 5f       	subi	r18, 0xFF	; 255
     530:	3f 4f       	sbci	r19, 0xFF	; 255
}

bool cfg_same_ip(uc * ip1, uc *ip2)
{
    
    for(uc i=0;i<IP_ADDR_LEN;i++)
     532:	24 30       	cpi	r18, 0x04	; 4
     534:	31 05       	cpc	r19, r1
     536:	79 f7       	brne	.-34     	; 0x516 <cfg_same_ip+0x6>
     538:	81 e0       	ldi	r24, 0x01	; 1
        {
            return false;
        }
    }
    return true;
}
     53a:	08 95       	ret

0000053c <cfg_same_mac>:
bool cfg_same_mac(uc * mac1, uc *mac2)
{
     53c:	ac 01       	movw	r20, r24
     53e:	20 e0       	ldi	r18, 0x00	; 0
     540:	30 e0       	ldi	r19, 0x00	; 0
    
    for(uc i=0;i<MAC_ADDR_LEN;i++)
    {
        if(mac1[i]!=mac2[i])
     542:	fa 01       	movw	r30, r20
     544:	e2 0f       	add	r30, r18
     546:	f3 1f       	adc	r31, r19
     548:	db 01       	movw	r26, r22
     54a:	a2 0f       	add	r26, r18
     54c:	b3 1f       	adc	r27, r19
     54e:	90 81       	ld	r25, Z
     550:	8c 91       	ld	r24, X
     552:	98 17       	cp	r25, r24
     554:	11 f0       	breq	.+4      	; 0x55a <cfg_same_mac+0x1e>
     556:	80 e0       	ldi	r24, 0x00	; 0
     558:	08 95       	ret
     55a:	2f 5f       	subi	r18, 0xFF	; 255
     55c:	3f 4f       	sbci	r19, 0xFF	; 255

⌨️ 快捷键说明

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