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

📄 cc2420db_library.lss

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