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

📄 main.lss

📁 adhoc汇聚节点程序源代码(点对多点)——for atmega128
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     7da:	15 1f       	adc	r17, r21

      diff = Channel - desiredFreq;
     7dc:	d8 01       	movw	r26, r16
     7de:	c7 01       	movw	r24, r14
     7e0:	29 81       	ldd	r18, Y+1	; 0x01
     7e2:	3a 81       	ldd	r19, Y+2	; 0x02
     7e4:	4b 81       	ldd	r20, Y+3	; 0x03
     7e6:	5c 81       	ldd	r21, Y+4	; 0x04
     7e8:	82 1b       	sub	r24, r18
     7ea:	93 0b       	sbc	r25, r19
     7ec:	a4 0b       	sbc	r26, r20
     7ee:	b5 0b       	sbc	r27, r21
      if (diff < 0) {
     7f0:	b7 ff       	sbrs	r27, 7
     7f2:	07 c0       	rjmp	.+14     	; 0x802
        diff = 0 - diff;
     7f4:	b0 95       	com	r27
     7f6:	a0 95       	com	r26
     7f8:	90 95       	com	r25
     7fa:	81 95       	neg	r24
     7fc:	9f 4f       	sbci	r25, 0xFF	; 255
     7fe:	af 4f       	sbci	r26, 0xFF	; 255
     800:	bf 4f       	sbci	r27, 0xFF	; 255
        }
      if (diff < Offset) {
     802:	29 89       	ldd	r18, Y+17	; 0x11
     804:	3a 89       	ldd	r19, Y+18	; 0x12
     806:	4b 89       	ldd	r20, Y+19	; 0x13
     808:	5c 89       	ldd	r21, Y+20	; 0x14
     80a:	82 17       	cp	r24, r18
     80c:	93 07       	cpc	r25, r19
     80e:	a4 07       	cpc	r26, r20
     810:	b5 07       	cpc	r27, r21
     812:	e4 f4       	brge	.+56     	; 0x84c
          RXFreq = RXCalc;
     814:	29 86       	std	Y+9, r2	; 0x09
     816:	3a 86       	std	Y+10, r3	; 0x0a
     818:	4b 86       	std	Y+11, r4	; 0x0b
     81a:	5c 86       	std	Y+12, r5	; 0x0c
          TXFreq = TXCalc;
     81c:	6d 86       	std	Y+13, r6	; 0x0d
     81e:	7e 86       	std	Y+14, r7	; 0x0e
     820:	8f 86       	std	Y+15, r8	; 0x0f
     822:	98 8a       	std	Y+16, r9	; 0x10
          ActualChannel = Channel;
     824:	ed 82       	std	Y+5, r14	; 0x05
     826:	fe 82       	std	Y+6, r15	; 0x06
     828:	0f 83       	std	Y+7, r16	; 0x07
     82a:	18 87       	std	Y+8, r17	; 0x08
          FSep = CC1000ControlM_FSepTbl[i];
     82c:	2b 8d       	ldd	r18, Y+27	; 0x1b
     82e:	3c 8d       	ldd	r19, Y+28	; 0x1c
     830:	20 50       	subi	r18, 0x00	; 0
     832:	3f 4f       	sbci	r19, 0xFF	; 255
     834:	f9 01       	movw	r30, r18
     836:	20 81       	ld	r18, Z
     838:	31 81       	ldd	r19, Z+1	; 0x01
     83a:	2d 8f       	std	Y+29, r18	; 0x1d
     83c:	3e 8f       	std	Y+30, r19	; 0x1e
          RefDiv = i + 6;
     83e:	fe 89       	ldd	r31, Y+22	; 0x16
     840:	fa 5f       	subi	r31, 0xFA	; 250
     842:	fd 8b       	std	Y+21, r31	; 0x15
          Offset = diff;
     844:	89 8b       	std	Y+17, r24	; 0x11
     846:	9a 8b       	std	Y+18, r25	; 0x12
     848:	ab 8b       	std	Y+19, r26	; 0x13
     84a:	bc 8b       	std	Y+20, r27	; 0x14
     84c:	2e 89       	ldd	r18, Y+22	; 0x16
     84e:	2f 5f       	subi	r18, 0xFF	; 255
     850:	2e 8b       	std	Y+22, r18	; 0x16
     852:	4b 8d       	ldd	r20, Y+27	; 0x1b
     854:	5c 8d       	ldd	r21, Y+28	; 0x1c
     856:	4e 5f       	subi	r20, 0xFE	; 254
     858:	5f 4f       	sbci	r21, 0xFF	; 255
     85a:	4b 8f       	std	Y+27, r20	; 0x1b
     85c:	5c 8f       	std	Y+28, r21	; 0x1c
     85e:	89 8d       	ldd	r24, Y+25	; 0x19
     860:	9a 8d       	ldd	r25, Y+26	; 0x1a
     862:	02 96       	adiw	r24, 0x02	; 2
     864:	89 8f       	std	Y+25, r24	; 0x19
     866:	9a 8f       	std	Y+26, r25	; 0x1a
     868:	29 30       	cpi	r18, 0x09	; 9
     86a:	08 f4       	brcc	.+2      	; 0x86e
     86c:	1f cf       	rjmp	.-450    	; 0x6ac
        }
    }

  if (RefDiv != 0) {
     86e:	9d 89       	ldd	r25, Y+21	; 0x15
     870:	99 23       	and	r25, r25
     872:	09 f4       	brne	.+2      	; 0x876
     874:	60 c0       	rjmp	.+192    	; 0x936

      CC1000ControlM_gCurrentParameters[0x3] = (uint8_t )(RXFreq & 0xFF);
     876:	a9 85       	ldd	r26, Y+9	; 0x09
     878:	a0 93 cf 01 	sts	0x01CF, r26
      CC1000ControlM_gCurrentParameters[0x2] = (uint8_t )((RXFreq >> 8) & 0xFF);
     87c:	29 85       	ldd	r18, Y+9	; 0x09
     87e:	3a 85       	ldd	r19, Y+10	; 0x0a
     880:	4b 85       	ldd	r20, Y+11	; 0x0b
     882:	5c 85       	ldd	r21, Y+12	; 0x0c
     884:	bb 27       	eor	r27, r27
     886:	a5 2f       	mov	r26, r21
     888:	94 2f       	mov	r25, r20
     88a:	83 2f       	mov	r24, r19
     88c:	80 93 ce 01 	sts	0x01CE, r24
      CC1000ControlM_gCurrentParameters[0x1] = (uint8_t )((RXFreq >> 16) & 0xFF);
     890:	ca 01       	movw	r24, r20
     892:	aa 27       	eor	r26, r26
     894:	bb 27       	eor	r27, r27
     896:	80 93 cd 01 	sts	0x01CD, r24

      CC1000ControlM_gCurrentParameters[0x6] = (uint8_t )(TXFreq & 0xFF);
     89a:	3d 85       	ldd	r19, Y+13	; 0x0d
     89c:	30 93 d2 01 	sts	0x01D2, r19
      CC1000ControlM_gCurrentParameters[0x5] = (uint8_t )((TXFreq >> 8) & 0xFF);
     8a0:	2d 85       	ldd	r18, Y+13	; 0x0d
     8a2:	3e 85       	ldd	r19, Y+14	; 0x0e
     8a4:	4f 85       	ldd	r20, Y+15	; 0x0f
     8a6:	58 89       	ldd	r21, Y+16	; 0x10
     8a8:	bb 27       	eor	r27, r27
     8aa:	a5 2f       	mov	r26, r21
     8ac:	94 2f       	mov	r25, r20
     8ae:	83 2f       	mov	r24, r19
     8b0:	80 93 d1 01 	sts	0x01D1, r24
      CC1000ControlM_gCurrentParameters[0x4] = (uint8_t )((TXFreq >> 16) & 0xFF);
     8b4:	ca 01       	movw	r24, r20
     8b6:	aa 27       	eor	r26, r26
     8b8:	bb 27       	eor	r27, r27
     8ba:	80 93 d0 01 	sts	0x01D0, r24

      CC1000ControlM_gCurrentParameters[0x8] = (uint8_t )(FSep & 0xFF);
     8be:	3d 8d       	ldd	r19, Y+29	; 0x1d
     8c0:	30 93 d4 01 	sts	0x01D4, r19
      CC1000ControlM_gCurrentParameters[0x7] = (uint8_t )((FSep >> 8) & 0xFF);
     8c4:	4d 8d       	ldd	r20, Y+29	; 0x1d
     8c6:	5e 8d       	ldd	r21, Y+30	; 0x1e
     8c8:	85 2f       	mov	r24, r21
     8ca:	99 27       	eor	r25, r25
     8cc:	80 93 d3 01 	sts	0x01D3, r24

      if (ActualChannel < 500000000) {
     8d0:	8d 81       	ldd	r24, Y+5	; 0x05
     8d2:	9e 81       	ldd	r25, Y+6	; 0x06
     8d4:	af 81       	ldd	r26, Y+7	; 0x07
     8d6:	b8 85       	ldd	r27, Y+8	; 0x08
     8d8:	80 30       	cpi	r24, 0x00	; 0
     8da:	e5 e6       	ldi	r30, 0x65	; 101
     8dc:	9e 07       	cpc	r25, r30
     8de:	ed ec       	ldi	r30, 0xCD	; 205
     8e0:	ae 07       	cpc	r26, r30
     8e2:	ed e1       	ldi	r30, 0x1D	; 29
     8e4:	be 07       	cpc	r27, r30
     8e6:	a8 f4       	brcc	.+42     	; 0x912
          if (ActualChannel < 400000000) {
     8e8:	80 50       	subi	r24, 0x00	; 0
     8ea:	94 48       	sbci	r25, 0x84	; 132
     8ec:	a7 4d       	sbci	r26, 0xD7	; 215
     8ee:	b7 41       	sbci	r27, 0x17	; 23
     8f0:	28 f4       	brcc	.+10     	; 0x8fc
              CC1000ControlM_gCurrentParameters[0x9] = (8 << 4) | (1 << 2);
     8f2:	84 e8       	ldi	r24, 0x84	; 132
     8f4:	80 93 d5 01 	sts	0x01D5, r24
              CC1000ControlM_gCurrentParameters[0x1d] = (9 << 4) | (1 << 0);
     8f8:	81 e9       	ldi	r24, 0x91	; 145
     8fa:	04 c0       	rjmp	.+8      	; 0x904
            }
          else {
              CC1000ControlM_gCurrentParameters[0x9] = (4 << 4) | (1 << 2);
     8fc:	84 e4       	ldi	r24, 0x44	; 68
     8fe:	80 93 d5 01 	sts	0x01D5, r24
              CC1000ControlM_gCurrentParameters[0x1d] = (8 << 4) | (1 << 0);
     902:	81 e8       	ldi	r24, 0x81	; 129
     904:	80 93 e9 01 	sts	0x01E9, r24
            }
          CC1000ControlM_gCurrentParameters[0xa] = 1 << 1;
     908:	82 e0       	ldi	r24, 0x02	; 2
     90a:	80 93 d6 01 	sts	0x01D6, r24
          CC1000ControlM_gCurrentParameters[0x12] = 7 << 4;
     90e:	80 e7       	ldi	r24, 0x70	; 112
     910:	0a c0       	rjmp	.+20     	; 0x926
        }
      else {
          CC1000ControlM_gCurrentParameters[0x9] = (8 << 4) | (3 << 2);
     912:	8c e8       	ldi	r24, 0x8C	; 140
     914:	80 93 d5 01 	sts	0x01D5, r24
          CC1000ControlM_gCurrentParameters[0x1d] = (15 << 4) | (3 << 0);
     918:	83 ef       	ldi	r24, 0xF3	; 243
     91a:	80 93 e9 01 	sts	0x01E9, r24
          CC1000ControlM_gCurrentParameters[0xa] = ((1 << 5) | (2 << 3)) | (
     91e:	82 e3       	ldi	r24, 0x32	; 50
     920:	80 93 d6 01 	sts	0x01D6, r24
          1 << 1);
          CC1000ControlM_gCurrentParameters[0x12] = 2 << 4;
     924:	80 e2       	ldi	r24, 0x20	; 32
     926:	80 93 de 01 	sts	0x01DE, r24
        }
      CC1000ControlM_gCurrentParameters[0xc] = RefDiv << 3;
     92a:	2d 89       	ldd	r18, Y+21	; 0x15
     92c:	22 0f       	add	r18, r18
     92e:	22 0f       	add	r18, r18
     930:	22 0f       	add	r18, r18
     932:	20 93 d8 01 	sts	0x01D8, r18
    }
  CC1000ControlM_gCurrentChannel = ActualChannel;
     936:	8d 81       	ldd	r24, Y+5	; 0x05
     938:	9e 81       	ldd	r25, Y+6	; 0x06
     93a:	af 81       	ldd	r26, Y+7	; 0x07
     93c:	b8 85       	ldd	r27, Y+8	; 0x08
     93e:	80 93 eb 01 	sts	0x01EB, r24
     942:	90 93 ec 01 	sts	0x01EC, r25
     946:	a0 93 ed 01 	sts	0x01ED, r26
     94a:	b0 93 ee 01 	sts	0x01EE, r27
  return ActualChannel;
}
     94e:	bc 01       	movw	r22, r24
     950:	cd 01       	movw	r24, r26
     952:	6e 96       	adiw	r28, 0x1e	; 30
     954:	0f b6       	in	r0, 0x3f	; 63
     956:	f8 94       	cli
     958:	de bf       	out	0x3e, r29	; 62
     95a:	0f be       	out	0x3f, r0	; 63
     95c:	cd bf       	out	0x3d, r28	; 61
     95e:	df 91       	pop	r29
     960:	cf 91       	pop	r28
     962:	1f 91       	pop	r17
     964:	0f 91       	pop	r16
     966:	ff 90       	pop	r15
     968:	ef 90       	pop	r14
     96a:	df 90       	pop	r13
     96c:	cf 90       	pop	r12
     96e:	bf 90       	pop	r11
     970:	af 90       	pop	r10
     972:	9f 90       	pop	r9
     974:	8f 90       	pop	r8
     976:	7f 90       	pop	r7
     978:	6f 90       	pop	r6
     97a:	5f 90       	pop	r5
     97c:	4f 90       	pop	r4
     97e:	3f 90       	pop	r3
     980:	2f 90       	pop	r2
     982:	08 95       	ret

00000984 <CC1000HPLInit>:

uint32_t CC1000ControlTuneManual(uint32_t DesiredFreq)
{
	uint32_t actualFreq;
	
	actualFreq = CC1000ControlComputeFreq(DesiredFreq);
	
	CC1000ControlCC1000SetFreq();
	
	return actualFreq;
}

void CC1000ControlCC1000SetModem(void)
{
	CC1000HPLWrite(0x0F, CC1000ControlM_gCurrentParameters[0x0f]);
	CC1000HPLWrite(0x10, CC1000ControlM_gCurrentParameters[0x10]);
	CC1000HPLWrite(0x11, CC1000ControlM_gCurrentParameters[0x11]);
	return;
}

result_t CC1000HPLInit(void)
{
	OSH_MAKE_CC_CHP_OUT_INPUT();
     984:	0e 94 97 06 	call	0xd2e
	OSH_MAKE_CC_PALE_OUTPUT();
     988:	0e 94 85 06 	call	0xd0a
	OSH_MAKE_CC_PCLK_OUTPUT();
     98c:	0e 94 81 06 	call	0xd02
	OSH_MAKE_CC_PDATA_OUTPUT();
     990:	0e 94 83 06 	call	0xd06
	OSH_SET_CC_PALE_PIN();
     994:	0e 94 d2 06 	call	0xda4
	OSH_SET_CC_PDATA_PIN();
     998:	0e 94 d0 06 	call	0xda0
	OSH_SET_CC_PCLK_PIN();
     99c:	0e 94 ce 06 	call	0xd9c
	return SUCCESS;
}
     9a0:	81 e0       	ldi	r24, 0x01	; 1
     9a2:	90 e0       	ldi	r25, 0x00	; 0
     9a4:	08 95       	ret

000009a6 <CC1000HPLWrite>:

result_t CC1000ControlStdControlInit(void)
{
	CC1000HPLInit();
	CC1000HPLWrite(0x00, (((
		1 << 5) | (1 << 4)) | (
		1 << 3)) | (1 << 1));
	CC1000HPLWrite(0x00, ((((
		1 << 5) | (1 << 4)) | (
		1 << 3)) | (1 << 1)) | (
		1 << 0));
	OSH_uwait(2000);
	
	//  CC1000ControlM_gCurrentParameters[0xb] = (8 << 4) | (0 << 0);
	CC1000ControlM_gCurrentParameters[0xb] = 0xF0;
	CC1000HPLWrite(0x0B, CC1000ControlM_gCurrentParameters[0xb]);
	
	CC1000ControlM_gCurrentParameters[0xd] = 9 << 4;
	CC1000HPLWrite(4, CC1000ControlM_gCurrentParameters[0xd]);
	
	CC1000ControlM_gCurrentParameters[0xf] = 0;
	
	CC1000ControlM_gCurrentParameters[0x10] = (((3 << 5) | (1 << 3)) | (
		3 << 1)) | (1 << 0);
	
	CC1000ControlM_gCurrentParameters[0x11] = ((5 << 4) | (1 << 2)) | (
		1 << 0);
	
	CC1000ControlCC1000SetModem();
	
	CC1000ControlM_gCurrentParameters[0x13] = 1 << 0;
	CC1000HPLWrite(0x13, CC1000ControlM_gCurrentParameters[0x13]);
	
	CC1000ControlM_gCurrentParameters[0x1e] = TRUE;
	
	CC1000ControlTuneManual(433300000);//914998000
	
	return SUCCESS;
}


result_t CC1000ControlBIASOn(void)
{
	CC1000HPLWrite(0x00, (((
		1 << 5) | (1 << 4)) | (
		1 << 3)) | (
		1 << 0));
	
	OSH_uwait(200);
	return SUCCESS;
}

result_t CC1000ControlStdControlStart(void)
{
	
	CC1000HPLWrite(0x00, ((((
		1 << 5) | (1 << 4)) | (
		1 << 3)) | (1 << 1)) | (
		1 << 0));
	
	OSH_uwait(2000);
	return SUCCESS;
}

result_t CC1000ControlTxMode(void)
{
	CC1000HPLWrite(0x00, (((
		1 << 7) | (1 << 6)) | (1 << 5)) | (
		1 << 0));
	
	CC1000HPLWrite(0x09, CC1000ControlM_gCurrentParameters[29]);
	OSH_uwait(250);
	CC1000HPLWrite(0x0B, CC1000ControlM_gCurrentParameters[0xb]);
	OSH_uwait(20);
	return SUCCESS;
}

result_t CC1000ControlRxMode(void)
{
	CC1000HPLWrite(0x00, (
		1 << 4) | (1 << 0));
	
	CC1000HPLWrite(0x09, CC1000ControlM_gCurrentParameters[0x09]);
	CC1000HPLWrite(0x0B, 0x00);
	OSH_uwait(250);
	return SUCCESS;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -