📄 cc2420db_library.lss
字号:
/* read cc2420 register */
case 'C':
/* call command routine */
status = read_cc_register(&command[0], &response[0]);
9ba: b8 01 movw r22, r16
9bc: ce 01 movw r24, r28
9be: 0e 94 32 01 call 0x264
break;
9c2: 18 c0 rjmp .+48 ; 0x9f4
/* write cc2420 register */
case 'D':
/* call command routine */
status = write_cc_register(&command[0], &response[0]);
9c4: b8 01 movw r22, r16
9c6: ce 01 movw r24, r28
9c8: 0e 94 9b 01 call 0x336
break;
9cc: 13 c0 rjmp .+38 ; 0x9f4
/* initialize cc2420 transceiver */
case 'I':
/* call command routine */
status = init_cc_transceiver(&command[0], &response[0]);
9ce: b8 01 movw r22, r16
9d0: ce 01 movw r24, r28
9d2: 0e 94 08 02 call 0x410
break;
9d6: 0e c0 rjmp .+28 ; 0x9f4
/* receive cc2420 packet */
case 'R':
/* call command routine */
status = recv_cc_packet(&command[0], &response[0]);
9d8: b8 01 movw r22, r16
9da: ce 01 movw r24, r28
9dc: 0e 94 7c 02 call 0x4f8
break;
9e0: 09 c0 rjmp .+18 ; 0x9f4
/* send cc2420 packet */
case 'S':
/* call command routine */
status = send_cc_packet(&command[0], &response[0]);
9e2: b8 01 movw r22, r16
9e4: ce 01 movw r24, r28
9e6: 0e 94 25 03 call 0x64a
break;
9ea: 04 c0 rjmp .+8 ; 0x9f4
/* toggle location led */
case 'T':
/* call command routine */
status = toggle_location_led(&command[0], &response[0]);
9ec: b8 01 movw r22, r16
9ee: ce 01 movw r24, r28
9f0: 0e 94 8b 04 call 0x916
break;
/* undefined command */
default:
/* set status */
status = 0;
}
/* check for error */
if (!status)
9f4: 89 2b or r24, r25
9f6: 41 f4 brne .+16 ; 0xa08
sprintf(&response[0], ":?\r\n");
9f8: 85 e0 ldi r24, 0x05 ; 5
9fa: f8 01 movw r30, r16
9fc: a1 ea ldi r26, 0xA1 ; 161
9fe: b1 e0 ldi r27, 0x01 ; 1
a00: 0d 90 ld r0, X+
a02: 01 92 st Z+, r0
a04: 8a 95 dec r24
a06: e1 f7 brne .-8 ; 0xa00
a08: df 91 pop r29
a0a: cf 91 pop r28
a0c: 1f 91 pop r17
a0e: 0f 91 pop r16
a10: 08 95 ret
00000a12 <remote_chat>:
/* return */
return;
}
/*******************************************************************************
* Function: Remote chat mode. *
*******************************************************************************/
void remote_chat()
{
a12: 0f 93 push r16
a14: 1f 93 push r17
a16: cf 93 push r28
a18: df 93 push r29
a1a: cd b7 in r28, 0x3d ; 61
a1c: de b7 in r29, 0x3e ; 62
a1e: c0 50 subi r28, 0x00 ; 0
a20: d2 40 sbci r29, 0x02 ; 2
a22: 0f b6 in r0, 0x3f ; 63
a24: f8 94 cli
a26: de bf out 0x3e, r29 ; 62
a28: 0f be out 0x3f, r0 ; 63
a2a: cd bf out 0x3d, r28 ; 61
char command[256], response[256];
int i, status;
/* turn on green led */
SET_GLED();
a2c: c7 9a sbi 0x18, 7 ; 24
/* new receive packet available? */
if (sig_packet_rx == TRUE)
a2e: 80 91 b2 01 lds r24, 0x01B2
a32: 81 30 cpi r24, 0x01 ; 1
a34: 09 f0 breq .+2 ; 0xa38
a36: 5d c0 rjmp .+186 ; 0xaf2
{
/* ignore command responses */
if (rfRxInfo.pPayload[0] == ':')
a38: 40 91 b9 01 lds r20, 0x01B9
a3c: 50 91 ba 01 lds r21, 0x01BA
a40: da 01 movw r26, r20
a42: 8c 91 ld r24, X
a44: 8a 33 cpi r24, 0x3A ; 58
a46: 09 f4 brne .+2 ; 0xa4a
a48: 57 c0 rjmp .+174 ; 0xaf8
return;
/* read command */
i = 0; while(TRUE)
a4a: 20 e0 ldi r18, 0x00 ; 0
a4c: 30 e0 ldi r19, 0x00 ; 0
a4e: be 01 movw r22, r28
a50: 6f 5f subi r22, 0xFF ; 255
a52: 7f 4f sbci r23, 0xFF ; 255
a54: 80 91 b8 01 lds r24, 0x01B8
a58: 99 27 eor r25, r25
a5a: 87 fd sbrc r24, 7
a5c: 90 95 com r25
{
/* read character from receive packet payload */
command[i] = rfRxInfo.pPayload[i];
a5e: d9 01 movw r26, r18
a60: a6 0f add r26, r22
a62: b7 1f adc r27, r23
a64: f9 01 movw r30, r18
a66: e4 0f add r30, r20
a68: f5 1f adc r31, r21
a6a: e0 81 ld r30, Z
a6c: ec 93 st X, r30
/* carriage return or line feed? */
if ((command[i] == 0x0D) || (command[i] == 0x0A))
a6e: ed 30 cpi r30, 0x0D ; 13
a70: 51 f0 breq .+20 ; 0xa86
a72: ea 30 cpi r30, 0x0A ; 10
a74: 41 f0 breq .+16 ; 0xa86
break;
/* receive packet payload length reached? */
if (++i == rfRxInfo.length)
a76: 2f 5f subi r18, 0xFF ; 255
a78: 3f 4f sbci r19, 0xFF ; 255
a7a: 28 17 cp r18, r24
a7c: 39 07 cpc r19, r25
a7e: 19 f0 breq .+6 ; 0xa86
break;
/* wrap-around command buffer */
i &= 0x7f;
a80: 2f 77 andi r18, 0x7F ; 127
a82: 30 70 andi r19, 0x00 ; 0
a84: ec cf rjmp .-40 ; 0xa5e
}
/* execute command */
execute_command(&command[0], &response[0]);
a86: 8e 01 movw r16, r28
a88: 0f 5f subi r16, 0xFF ; 255
a8a: 1e 4f sbci r17, 0xFE ; 254
a8c: b8 01 movw r22, r16
a8e: ce 01 movw r24, r28
a90: 01 96 adiw r24, 0x01 ; 1
a92: 0e 94 a6 04 call 0x94c
/* define transmit packet payload */
i = 0; while(TRUE)
a96: 20 e0 ldi r18, 0x00 ; 0
a98: 30 e0 ldi r19, 0x00 ; 0
a9a: a8 01 movw r20, r16
{
/* write character to transmit payload */
rfTxInfo.pPayload[i] = response[i];
a9c: e0 91 36 02 lds r30, 0x0236
aa0: f0 91 37 02 lds r31, 0x0237
aa4: e2 0f add r30, r18
aa6: f3 1f adc r31, r19
aa8: ba 01 movw r22, r20
aaa: da 01 movw r26, r20
aac: 8d 91 ld r24, X+
aae: ad 01 movw r20, r26
ab0: 80 83 st Z, r24
/* line feed? */
if (response[i++] == 0x0A)
ab2: 2f 5f subi r18, 0xFF ; 255
ab4: 3f 4f sbci r19, 0xFF ; 255
ab6: fb 01 movw r30, r22
ab8: 80 81 ld r24, Z
aba: 8a 30 cpi r24, 0x0A ; 10
abc: 79 f7 brne .-34 ; 0xa9c
break;
}
/* define transmit packet header */
rfTxInfo.destPanId = rfRxInfo.srcPanId;
abe: 80 91 b6 01 lds r24, 0x01B6
ac2: 90 91 b7 01 lds r25, 0x01B7
ac6: 90 93 32 02 sts 0x0232, r25
aca: 80 93 31 02 sts 0x0231, r24
rfTxInfo.destAddr = rfRxInfo.srcAddr;
ace: 80 91 b4 01 lds r24, 0x01B4
ad2: 90 91 b5 01 lds r25, 0x01B5
ad6: 90 93 34 02 sts 0x0234, r25
ada: 80 93 33 02 sts 0x0233, r24
rfTxInfo.length = i;
ade: 20 93 35 02 sts 0x0235, r18
/* define packet footer */
rfTxInfo.ackRequest = rfRxInfo.ackRequest;
ae2: 80 91 bb 01 lds r24, 0x01BB
ae6: 80 93 38 02 sts 0x0238, r24
/* send response */
status = RfSendPacket(&rfTxInfo);
aea: 81 e3 ldi r24, 0x31 ; 49
aec: 92 e0 ldi r25, 0x02 ; 2
aee: 0e 94 75 00 call 0xea
}
/* clear packet reception */
sig_packet_rx = FALSE;
af2: 10 92 b2 01 sts 0x01B2, r1
/* turn off green led */
CLR_GLED();
af6: c7 98 cbi 0x18, 7 ; 24
af8: c0 50 subi r28, 0x00 ; 0
afa: de 4f sbci r29, 0xFE ; 254
afc: 0f b6 in r0, 0x3f ; 63
afe: f8 94 cli
b00: de bf out 0x3e, r29 ; 62
b02: 0f be out 0x3f, r0 ; 63
b04: cd bf out 0x3d, r28 ; 61
b06: df 91 pop r29
b08: cf 91 pop r28
b0a: 1f 91 pop r17
b0c: 0f 91 pop r16
b0e: 08 95 ret
00000b10 <serial_chat>:
/* return */
return;
}
/*******************************************************************************
* Function: Serial chat mode. *
*******************************************************************************/
void serial_chat()
{
b10: 0f 93 push r16
b12: 1f 93 push r17
b14: cf 93 push r28
b16: df 93 push r29
b18: cd b7 in r28, 0x3d ; 61
b1a: de b7 in r29, 0x3e ; 62
b1c: c0 50 subi r28, 0x00 ; 0
b1e: d2 40 sbci r29, 0x02 ; 2
b20: 0f b6 in r0, 0x3f ; 63
b22: f8 94 cli
b24: de bf out 0x3e, r29 ; 62
b26: 0f be out 0x3f, r0 ; 63
b28: cd bf out 0x3d, r28 ; 61
char command[256], response[256];
int i;
/* turn on green led */
SET_GLED();
b2a: c7 9a sbi 0x18, 7 ; 24
/* enable uart1 */
// ENABLE_UART1();
/* data received on uart1? */
if (UCSR1A & BM(RXC1))
b2c: 80 91 9b 00 lds r24, 0x009B
b30: 87 ff sbrs r24, 7
b32: 36 c0 rjmp .+108 ; 0xba0
{
/* read command */
i = 0; while(TRUE)
b34: 20 e0 ldi r18, 0x00 ; 0
b36: 30 e0 ldi r19, 0x00 ; 0
b38: ae 01 movw r20, r28
b3a: 4f 5f subi r20, 0xFF ; 255
b3c: 5f 4f sbci r21, 0xFF ; 255
{
/* read character from uart1 */
UART1_WAIT_AND_RECEIVE(command[i++]);
b3e: 80 91 9b 00 lds r24, 0x009B
b42: 88 23 and r24, r24
b44: e4 f7 brge .-8 ; 0xb3e
b46: f9 01 movw r30, r18
b48: e4 0f add r30, r20
b4a: f5 1f adc r31, r21
b4c: 80 91 9c 00 lds r24, 0x009C
b50: 80 83 st Z, r24
b52: 2f 5f subi r18, 0xFF ; 255
b54: 3f 4f sbci r19, 0xFF ; 255
/* carriage return or line feed? */
if ((command[i-1] == 0x0D) || (command[i-1] == 0x0A))
b56: fe 01 movw r30, r28
b58: e2 0f add r30, r18
b5a: f3 1f adc r31, r19
b5c: e0 81 ld r30, Z
b5e: ed 30 cpi r30, 0x0D ; 13
b60: 29 f0 breq .+10 ; 0xb6c
b62: ea 30 cpi r30, 0x0A ; 10
b64: 19 f0 breq .+6 ; 0xb6c
break;
/* wrap-around command buffer */
i &= 0x7f;
b66: 2f 77 andi r18, 0x7F ; 127
b68: 30 70 andi r19, 0x00 ; 0
b6a: e9 cf rjmp .-46 ; 0xb3e
}
/* execute command */
execute_command(&command[0], &response[0]);
b6c: 8e 01 movw r16, r28
b6e: 0f 5f subi r16, 0xFF ; 255
b70: 1e 4f sbci r17, 0xFE ; 254
b72: b8 01 movw r22, r16
b74: ce 01 movw r24, r28
b76: 01 96 adiw r24, 0x01 ; 1
b78: 0e 94 a6 04 call 0x94c
b7c: f8 01 movw r30, r16
b7e: 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -