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 + -
显示快捷键?