📄 cc2420db_library.lss
字号:
49a: 89 81 ldd r24, Y+1 ; 0x01
49c: 9a 81 ldd r25, Y+2 ; 0x02
49e: 9f 93 push r25
4a0: 8f 93 push r24
4a2: 8b 81 ldd r24, Y+3 ; 0x03
4a4: 9c 81 ldd r25, Y+4 ; 0x04
4a6: 9f 93 push r25
4a8: 8f 93 push r24
4aa: 8d 81 ldd r24, Y+5 ; 0x05
4ac: 9e 81 ldd r25, Y+6 ; 0x06
4ae: 9f 93 push r25
4b0: 8f 93 push r24
4b2: f8 01 movw r30, r16
4b4: 82 91 ld r24, -Z
4b6: 99 27 eor r25, r25
4b8: 9f 93 push r25
4ba: 8f 93 push r24
4bc: 88 e3 ldi r24, 0x38 ; 56
4be: 91 e0 ldi r25, 0x01 ; 1
4c0: 9f 93 push r25
4c2: 8f 93 push r24
4c4: ff 92 push r15
4c6: ef 92 push r14
4c8: 0e 94 00 0a call 0x1400
command[0], channel, panid, myaddress);
/* return status */
return status;
4cc: 2d b7 in r18, 0x3d ; 61
4ce: 3e b7 in r19, 0x3e ; 62
4d0: 2a 5e subi r18, 0xEA ; 234
4d2: 3f 4f sbci r19, 0xFF ; 255
4d4: 0f b6 in r0, 0x3f ; 63
4d6: f8 94 cli
4d8: 3e bf out 0x3e, r19 ; 62
4da: 0f be out 0x3f, r0 ; 63
4dc: 2d bf out 0x3d, r18 ; 61
4de: 26 96 adiw r28, 0x06 ; 6
4e0: 0f b6 in r0, 0x3f ; 63
4e2: f8 94 cli
4e4: de bf out 0x3e, r29 ; 62
4e6: 0f be out 0x3f, r0 ; 63
4e8: cd bf out 0x3d, r28 ; 61
4ea: df 91 pop r29
4ec: cf 91 pop r28
4ee: 1f 91 pop r17
4f0: 0f 91 pop r16
4f2: ff 90 pop r15
4f4: ef 90 pop r14
4f6: 08 95 ret
000004f8 <recv_cc_packet>:
}
/*******************************************************************************
* Function: Receive CC2420 packet. *
*******************************************************************************/
int recv_cc_packet(char *command, char *response)
{
4f8: ef 92 push r14
4fa: ff 92 push r15
4fc: 0f 93 push r16
4fe: 1f 93 push r17
500: cf 93 push r28
502: df 93 push r29
504: fc 01 movw r30, r24
506: 8b 01 movw r16, r22
int i, status;
/* generate command response */
if (sig_packet_rx == TRUE)
508: 80 91 b2 01 lds r24, 0x01B2
50c: e0 81 ld r30, Z
50e: 81 30 cpi r24, 0x01 ; 1
510: 09 f0 breq .+2 ; 0x514
512: 7d c0 rjmp .+250 ; 0x60e
{
/* add packet header */
status = sprintf(&response[0], ":%c%02X%04X%04X%02X", command[0],
514: 80 91 b8 01 lds r24, 0x01B8
518: 99 27 eor r25, r25
51a: 87 fd sbrc r24, 7
51c: 90 95 com r25
51e: 9f 93 push r25
520: 8f 93 push r24
522: 80 91 b6 01 lds r24, 0x01B6
526: 90 91 b7 01 lds r25, 0x01B7
52a: 9f 93 push r25
52c: 8f 93 push r24
52e: 80 91 b4 01 lds r24, 0x01B4
532: 90 91 b5 01 lds r25, 0x01B5
536: 9f 93 push r25
538: 8f 93 push r24
53a: 80 91 b3 01 lds r24, 0x01B3
53e: 99 27 eor r25, r25
540: 9f 93 push r25
542: 8f 93 push r24
544: 8e 2f mov r24, r30
546: 99 27 eor r25, r25
548: 9f 93 push r25
54a: 8f 93 push r24
54c: 8a e4 ldi r24, 0x4A ; 74
54e: 91 e0 ldi r25, 0x01 ; 1
550: 9f 93 push r25
552: 8f 93 push r24
554: 7f 93 push r23
556: 6f 93 push r22
558: 0e 94 00 0a call 0x1400
rfRxInfo.seqNumber, rfRxInfo.srcAddr, rfRxInfo.srcPanId,
rfRxInfo.length);
/* add packet payload */
for (i = 0; i < rfRxInfo.length; i++)
55c: 2d b7 in r18, 0x3d ; 61
55e: 3e b7 in r19, 0x3e ; 62
560: 22 5f subi r18, 0xF2 ; 242
562: 3f 4f sbci r19, 0xFF ; 255
564: 0f b6 in r0, 0x3f ; 63
566: f8 94 cli
568: 3e bf out 0x3e, r19 ; 62
56a: 0f be out 0x3f, r0 ; 63
56c: 2d bf out 0x3d, r18 ; 61
56e: 80 91 b8 01 lds r24, 0x01B8
572: ee 24 eor r14, r14
574: ff 24 eor r15, r15
576: 18 16 cp r1, r24
578: 44 f5 brge .+80 ; 0x5ca
57a: e8 01 movw r28, r16
57c: 2e 96 adiw r28, 0x0e ; 14
{
status = sprintf(&response[14+2*i], "%02X", rfRxInfo.pPayload[i]);
57e: e0 91 b9 01 lds r30, 0x01B9
582: f0 91 ba 01 lds r31, 0x01BA
586: ee 0d add r30, r14
588: ff 1d adc r31, r15
58a: 80 81 ld r24, Z
58c: 99 27 eor r25, r25
58e: 9f 93 push r25
590: 8f 93 push r24
592: 8e e5 ldi r24, 0x5E ; 94
594: 91 e0 ldi r25, 0x01 ; 1
596: 9f 93 push r25
598: 8f 93 push r24
59a: df 93 push r29
59c: cf 93 push r28
59e: 0e 94 00 0a call 0x1400
5a2: 8d b7 in r24, 0x3d ; 61
5a4: 9e b7 in r25, 0x3e ; 62
5a6: 06 96 adiw r24, 0x06 ; 6
5a8: 0f b6 in r0, 0x3f ; 63
5aa: f8 94 cli
5ac: 9e bf out 0x3e, r25 ; 62
5ae: 0f be out 0x3f, r0 ; 63
5b0: 8d bf out 0x3d, r24 ; 61
5b2: 08 94 sec
5b4: e1 1c adc r14, r1
5b6: f1 1c adc r15, r1
5b8: 22 96 adiw r28, 0x02 ; 2
5ba: 80 91 b8 01 lds r24, 0x01B8
5be: 99 27 eor r25, r25
5c0: 87 fd sbrc r24, 7
5c2: 90 95 com r25
5c4: e8 16 cp r14, r24
5c6: f9 06 cpc r15, r25
5c8: d4 f2 brlt .-76 ; 0x57e
}
/* add packet footer */
status = sprintf(&response[14+2*rfRxInfo.length], "%02X%02X\r\n",
5ca: 80 91 bc 01 lds r24, 0x01BC
5ce: 99 27 eor r25, r25
5d0: 9f 93 push r25
5d2: 8f 93 push r24
5d4: 80 91 bb 01 lds r24, 0x01BB
5d8: 99 27 eor r25, r25
5da: 9f 93 push r25
5dc: 8f 93 push r24
5de: 83 e6 ldi r24, 0x63 ; 99
5e0: 91 e0 ldi r25, 0x01 ; 1
5e2: 9f 93 push r25
5e4: 8f 93 push r24
5e6: 80 91 b8 01 lds r24, 0x01B8
5ea: 99 27 eor r25, r25
5ec: 87 fd sbrc r24, 7
5ee: 90 95 com r25
5f0: 88 0f add r24, r24
5f2: 99 1f adc r25, r25
5f4: 08 0f add r16, r24
5f6: 19 1f adc r17, r25
5f8: 02 5f subi r16, 0xF2 ; 242
5fa: 1f 4f sbci r17, 0xFF ; 255
5fc: 1f 93 push r17
5fe: 0f 93 push r16
600: 0e 94 00 0a call 0x1400
604: 2d b7 in r18, 0x3d ; 61
606: 3e b7 in r19, 0x3e ; 62
608: 28 5f subi r18, 0xF8 ; 248
60a: 3f 4f sbci r19, 0xFF ; 255
60c: 10 c0 rjmp .+32 ; 0x62e
rfRxInfo.ackRequest, rfRxInfo.rssi & 0xff);
}
else
{
/* no new packet available */
status = sprintf(&response[0], ":%c\r\n", command[0]);
60e: 8e 2f mov r24, r30
610: 99 27 eor r25, r25
612: 9f 93 push r25
614: 8f 93 push r24
616: 8e e6 ldi r24, 0x6E ; 110
618: 91 e0 ldi r25, 0x01 ; 1
61a: 9f 93 push r25
61c: 8f 93 push r24
61e: 7f 93 push r23
620: 6f 93 push r22
622: 0e 94 00 0a call 0x1400
626: 2d b7 in r18, 0x3d ; 61
628: 3e b7 in r19, 0x3e ; 62
62a: 2a 5f subi r18, 0xFA ; 250
62c: 3f 4f sbci r19, 0xFF ; 255
62e: 0f b6 in r0, 0x3f ; 63
630: f8 94 cli
632: 3e bf out 0x3e, r19 ; 62
634: 0f be out 0x3f, r0 ; 63
636: 2d bf out 0x3d, r18 ; 61
}
/* clear packet reception */
sig_packet_rx = FALSE;
638: 10 92 b2 01 sts 0x01B2, r1
63c: df 91 pop r29
63e: cf 91 pop r28
640: 1f 91 pop r17
642: 0f 91 pop r16
644: ff 90 pop r15
646: ef 90 pop r14
648: 08 95 ret
0000064a <send_cc_packet>:
/* return status */
return status;
}
/*******************************************************************************
* Function: Send CC2420 packet. *
*******************************************************************************/
int send_cc_packet(char *command, char *response)
{
64a: 8f 92 push r8
64c: 9f 92 push r9
64e: af 92 push r10
650: bf 92 push r11
652: cf 92 push r12
654: df 92 push r13
656: ef 92 push r14
658: ff 92 push r15
65a: 0f 93 push r16
65c: 1f 93 push r17
65e: cf 93 push r28
660: df 93 push r29
662: cd b7 in r28, 0x3d ; 61
664: de b7 in r29, 0x3e ; 62
666: 22 97 sbiw r28, 0x02 ; 2
668: 0f b6 in r0, 0x3f ; 63
66a: f8 94 cli
66c: de bf out 0x3e, r29 ; 62
66e: 0f be out 0x3f, r0 ; 63
670: cd bf out 0x3d, r28 ; 61
672: 6c 01 movw r12, r24
674: 5b 01 movw r10, r22
int i, status;
unsigned int dummy = 0;
676: 19 82 std Y+1, r1 ; 0x01
678: 1a 82 std Y+2, r1 ; 0x02
/* parse packet header */
status = sscanf(&command[1], "%4hX%4hX%2X",
67a: 4e 01 movw r8, r28
67c: 08 94 sec
67e: 81 1c adc r8, r1
680: 91 1c adc r9, r1
682: 9f 92 push r9
684: 8f 92 push r8
686: 83 e3 ldi r24, 0x33 ; 51
688: 92 e0 ldi r25, 0x02 ; 2
68a: 9f 93 push r25
68c: 8f 93 push r24
68e: 02 97 sbiw r24, 0x02 ; 2
690: 9f 93 push r25
692: 8f 93 push r24
694: 84 e7 ldi r24, 0x74 ; 116
696: 91 e0 ldi r25, 0x01 ; 1
698: 9f 93 push r25
69a: 8f 93 push r24
69c: 08 94 sec
69e: c1 1c adc r12, r1
6a0: d1 1c adc r13, r1
6a2: df 92 push r13
6a4: cf 92 push r12
6a6: 08 94 sec
6a8: c1 08 sbc r12, r1
6aa: d1 08 sbc r13, r1
6ac: 0e 94 31 0a call 0x1462
&rfTxInfo.destPanId, &rfTxInfo.destAddr, &dummy);
rfTxInfo.destPanId = (command[1] != '0' ?
6b0: 2d b7 in r18, 0x3d ; 61
6b2: 3e b7 in r19, 0x3e ; 62
6b4: 26 5f subi r18, 0xF6 ; 246
6b6: 3f 4f sbci r19, 0xFF ; 255
6b8: 0f b6 in r0, 0x3f ; 63
6ba: f8 94 cli
6bc: 3e bf out 0x3e, r19 ; 62
6be: 0f be out 0x3f, r0 ; 63
6c0: 2d bf out 0x3d, r18 ; 61
6c2: f6 01 movw r30, r12
6c4: 81 81 ldd r24, Z+1 ; 0x01
6c6: 20 91 31 02 lds r18, 0x0231
6ca: 30 91 32 02 lds r19, 0x0232
6ce: 80 33 cpi r24, 0x30 ; 48
6d0: 11 f0 breq .+4 ; 0x6d6
6d2: c9 01 movw r24, r18
6d4: 06 c0 rjmp .+12 ; 0x6e2
6d6: c9 01 movw r24, r18
6d8: 74 e0 ldi r23, 0x04 ; 4
6da: 96 95 lsr r25
6dc: 87 95 ror r24
6de: 7a 95 dec r23
6e0: e1 f7 brne .-8 ; 0x6da
6e2: 90 93 32 02 sts 0x0232, r25
6e6: 80 93 31 02 sts 0x0231, r24
rfTxInfo.destPanId : rfTxInfo.destPanId >> 4);
rfTxInfo.destAddr = (command[5] != '0' ?
6ea: f6 01 movw r30, r12
6ec: 85 81 ldd r24, Z+5 ; 0x05
6ee: 20 91 33 02 lds r18, 0x0233
6f2: 30 91 34 02 lds r19, 0x0234
6f6: 49 81 ldd r20, Y+1 ; 0x01
6f8: 5a 81 ldd r21, Y+2 ; 0x02
6fa: 80 33 cpi r24, 0x30 ; 48
6fc: 11 f0 breq .+4 ; 0x702
6fe: c9 01 movw r24, r18
700: 06 c0 rjmp .+12 ; 0x70e
702: c9 01 movw r24, r18
704: 64 e0 ldi r22, 0x04 ; 4
706: 96 95 lsr r25
708: 87 95 ror r24
70a: 6a 95 dec r22
70c: e1 f7 brne .-8 ; 0x706
70e: 90 93 34 02 sts 0x0234, r25
712: 80 93 33 02 sts 0x0233, r24
rfTxInfo.destAddr : rfTxInfo.destAddr >> 4);
rfTxInfo.length = (INT8) (command[9] != '0' ? dummy : dummy >> 4);
716: 9a 01 movw r18, r20
718: f6 01 movw r30, r12
71a: 81 85 ldd r24, Z+9 ; 0x09
71c: 80 33 cpi r24, 0x30 ; 48
71e: 29 f4 brne .+10 ; 0x72a
720: 54 e0 ldi r21, 0x04 ; 4
722: 36 95 lsr r19
724: 27 95 ror r18
726: 5a 95 dec r21
728: e1 f7 brne .-8 ; 0x722
72a: 20 93 35 02 sts 0x0235, r18
/* parse packet payload */
for (i = 0; i < rfTxInfo.length; i++)
72e: ee 24 eor r14, r14
730: ff 24 eor r15, r15
732: 12 16 cp r1, r18
734: bc f5 brge .+110 ; 0x7a4
736: 86 01 movw r16, r12
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -