⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cc2420db_library.lss

📁 MatLab图像传感器网络仿真平台WiSNAP
💻 LSS
📖 第 1 页 / 共 5 页
字号:
		/* 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 + -