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

📄 main.s

📁 CC1000通信
💻 S
📖 第 1 页 / 共 2 页
字号:
; 		//原先是WriteToCC1000Register(addr, Configuration[addr - 0x40 + 0x1C]);
; /*
; //////////////////////////////添加小郭的程序////////////////////////////////////////////////////////////
; 
;  WriteToCC1000Register(CC1000_MAIN,0x3a);          //RXTX=0;F_REQ=0(RX:Register A ,TX:Register B);RX_PD=1;TX_PD=1;FS_PD=1;CORE_PD=0;BIAS_PD=1;REST_N=0
;  WriteToCC1000Register(CC1000_PA_POW,0x00); 
;  WriteToCC1000Register(CC1000_MAIN,0x3b);       
;  //cal_complete=ReadfromCC1000Register(CC1000_MAIN);
; // cal_complete=0;
; // WriteToCC1000Register(CC1000_MAIN,cal_complete);
;  delay(35);
; // WriteToCC1000Register(CC1000_MAIN,0x01);
; // writes 24-bit frequency value used for RX to 433.9164 MHz.
; // Check CC1000 data sheet for equations used to find
; // 0x582000.
;  WriteToCC1000Register(CC1000_FREQ_2A,0x58);       
;  WriteToCC1000Register(CC1000_FREQ_1A,0x20);
;  WriteToCC1000Register(CC1000_FREQ_0A,0x00);
; // writes 24-bit frequency value used for TX to 433.9164 MHz.
; // Check CC1000 data sheet for equations used to find
; // 0x448856.
;  WriteToCC1000Register(CC1000_FREQ_2B,0x42);       
;  WriteToCC1000Register(CC1000_FREQ_1B,0x14);
;  WriteToCC1000Register(CC1000_FREQ_0B,0x9C);
; // sets frequency separation between 0 value and 1 value
; //设定误码率
;  WriteToCC1000Register(CC1000_FSEP1,0x02);
;  WriteToCC1000Register(CC1000_FSEP0,0x80);
;  WriteToCC1000Register(CC1000_CURRENT,0x81);
; // sets some internal current levels, and enables RSSI output to pin
;  WriteToCC1000Register(CC1000_FRONT_END,0x12);
;  WriteToCC1000Register(CC1000_PA_POW,0xff);
; // sets the PLL reference divider to divide by 6
;  WriteToCC1000Register(CC1000_PLL,0x18);   
; // sets External LNA control lock indicator to output on the CHP_OUT pin                  
;  WriteToCC1000Register(CC1000_LOCK,0x10);
;  WriteToCC1000Register(CC1000_CAL,0x26);   
; // sets threshold level for peak detector (not used in this design) 
;  WriteToCC1000Register(CC1000_MODEM2,0x8E);    
; // sets the averaging filter to free-running and controlled by writes
; // to bit 4 of this register.
; // Sets averaging filter sensitivity to .6dB worst-case loss of sensitivity
;  WriteToCC1000Register(CC1000_MODEM1,0x6F); 
; // baud rate to 2.4 k, Manchester, and crystal freq. to 11.0592 MHz
;  WriteToCC1000Register(CC1000_MODEM0,0x2B);            
; // sets capacitor array values for RX and TX
;  WriteToCC1000Register(CC1000_MATCH,0x70); 
; // disables dithering and data shaping  
;  WriteToCC1000Register(CC1000_FSCTRL,0x01); 
; // sets prescaling to nominal values  
; 
;  WriteToCC1000Register(CC1000_FSHAPE7,0x1c);
;  WriteToCC1000Register(CC1000_FSHAPE6,0x16);
;  WriteToCC1000Register(CC1000_FSHAPE5,0x10);
;  WriteToCC1000Register(CC1000_FSHAPE4,0x0a);
;  WriteToCC1000Register(CC1000_FSHAPE3,0x06);
;  WriteToCC1000Register(CC1000_FSHAPE2,0x03);
;  WriteToCC1000Register(CC1000_FSHAPE1,0x01);
;  WriteToCC1000Register(CC1000_FSDELAY,0x1f);
;  
;  WriteToCC1000Register(CC1000_PRESCALER,0x00);
; 
;  WriteToCC1000Register(CC1000_TEST6,0x10);
;  WriteToCC1000Register(CC1000_TEST5,0x08);
;  WriteToCC1000Register(CC1000_TEST4,0x25);
;  WriteToCC1000Register(CC1000_TEST3,0x04);
;  WriteToCC1000Register(CC1000_TEST2,0x00);
;  WriteToCC1000Register(CC1000_TEST1,0x00);
;  WriteToCC1000Register(CC1000_TEST0,0x00);
;  //////////////////////////////////////////////////////////////////////////////////////////
; */
; 	
; 	WakeUpCC1000ToRX(0x44,0x60);
	ldi R18,96
	ldi R16,68
	xcall _WakeUpCC1000ToRX
L25:
	.dbline 278
L26:
	.dbline 278
; 	//设置DIO为输入
; 	//PORTE = 0x00;
;     //DDRE  = 0x00;
; 	while(!CalibrateCC1000());
	xcall _CalibrateCC1000
	tst R16
	breq L25
	.dbline 281
; 	//////////////////////
; 	
; 	WakeUpCC1000ToTX(0x81,0x48);     //PIC的程序与数据手册上的算法正好反了,先RX,再TX的
	ldi R18,72
	ldi R16,129
	xcall _WakeUpCC1000ToTX
L28:
	.dbline 286
L29:
	.dbline 286
; 	//设置DIO为输出
; 	// PORTE = 0x00;
;     // DDRE  = 0x40;
; 	
; 	while(!CalibrateCC1000());
	xcall _CalibrateCC1000
	tst R16
	breq L28
	.dbline 319
; 	/////////////////
; 	//SetupCC1000TX(0x44,0x60);
; 	
; 
; /*
; 	WriteToCC1000Register(CC1000_MAIN,0x3F);    // 
; 	WriteToCC1000Register(CC1000_PA_POW,0x00);  // Power down
; 
; 	MainValue=ReadFromCC1000Register(CC1000_MAIN);
; 	WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFB);         // CORE_PD=0
; 
; 	delay(38);
; 
; 	MainValue=ReadFromCC1000Register(CC1000_MAIN);
; 	WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFD);         // BLAS_PD=0
; 
; 	delay(12);
; 
; 	MainValue=ReadFromCC1000Register(CC1000_MAIN);
; 	WriteToCC1000Register(CC1000_MAIN,(MainValue & 0xE7) | 0xC0);         //RXTX=1,F_REG=1,TX_PD=0,FS_PD=0 
; 	WriteToCC1000Register(CC1000_PA_POW,0x00);
; 	WriteToCC1000Register(CC1000_CURRENT, 0x81);
; 	WriteToCC1000Register(CC1000_PLL, 0x48);
; 
; 	delay(12);
; 	WriteToCC1000Register(CC1000_PA_POW,0x80);
; 	delay(2);	
; 	*/
; 	
; 	//1-----------
; 	//  SetupCC1000RX(0x44,0x60);
; 	//2-------------------
; 	MainValue=ReadFromCC1000Register(CC1000_MAIN);
	clr R16
	xcall _ReadFromCC1000Register
	mov R20,R16
	.dbline 320
; 	WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFB);         // CORE_PD=0
	mov R18,R20
	andi R18,251
	clr R16
	xcall _WriteToCC1000Register
	.dbline 321
;     delay(38);
	ldi R16,38
	ldi R17,0
	xcall _delay
	.dbline 322
;     MainValue=ReadFromCC1000Register(CC1000_MAIN);
	clr R16
	xcall _ReadFromCC1000Register
	mov R20,R16
	.dbline 323
; 	WriteToCC1000Register(CC1000_MAIN,MainValue & 0xFD);         // BLAS_PD=0
	mov R18,R20
	andi R18,253
	clr R16
	xcall _WriteToCC1000Register
	.dbline 325
; 
; 	delay(12);
	ldi R16,12
	ldi R17,0
	xcall _delay
	.dbline -2
L13:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r MainValue 20 c
	.dbsym r addr 22 c
	.dbend
	.dbfunc e SoftUART_Send _SoftUART_Send fc
;              i -> R20,R21
;              j -> R22,R23
;           data -> R16
	.even
_SoftUART_Send::
	xcall push_gset2
	.dbline -1
	.dbline 333
; 		
; }
; 
; 
; //******************************************************//
; 
; unsigned char SoftUART_Send(unsigned char data)
; {
	.dbline 336
; 	///while (!CHECK_BIT(UCSR0A,1<<UDRE0));
; 	int i,j;
; 	UDR0 = data ;
	out 0xc,R16
	.dbline 337
; 	for(i=0;i<200;i++)
	clr R20
	clr R21
L32:
	.dbline 338
	clr R22
	clr R23
L36:
	.dbline 338
L37:
	.dbline 338
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 338
	cpi R22,200
	ldi R30,0
	cpc R23,R30
	brlt L36
L33:
	.dbline 337
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 337
	cpi R20,200
	ldi R30,0
	cpc R21,R30
	brlt L32
	.dbline 341
; 		for(j=0;j<200;j++);
; 	///while (!CHECK_BIT(UCSR0A, 1<<TXC0));
; 	
; 	return 0;
	clr R16
	.dbline -2
L31:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 I
	.dbsym r j 22 I
	.dbsym r data 16 c
	.dbend
	.dbfunc e SoftUART_Receive _SoftUART_Receive fc
	.even
_SoftUART_Receive::
	.dbline -1
	.dbline 345
; } 
; //****************************************************************
; unsigned char SoftUART_Receive(void)                                                       //USART0接收数据
; {
	xjmp L42
L41:
	.dbline 346
	in R16,0xc
	xjmp L40
L42:
	.dbline 346
;    while ((UCSR0A&(1<<RXC0))==(1<<RXC0)) return UDR0; 
	in R2,0xb
	clr R3
	sbrc R2,7
	rjmp L41
	.dbline 347
;    return 0; 
	clr R16
	.dbline -2
L40:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fI
;          rdata -> <dead>
;        endcode -> <dead>
;        precode -> R22
;         sycode -> R10
;        databuf -> y+0
;              i -> R20,R21
	.even
_main::
	sbiw R28,3
	.dbline -1
	.dbline 352
;        
; } 
; //********************************************************
; int main(void)
; {
	.dbline 359
;     unsigned char sycode,precode,endcode,rdata;
; 	unsigned char databuf[MAX];
; 	int i;
; 	//DDRB = 0x46 ;               
; 	//DDRA = 0x40 ;                 
; 	//DDRE = 0x40 ;
; 	 DDRD  = 0x3E;
	ldi R24,62
	out 0x11,R24
	.dbline 360
; 	init_usart();
	xcall _init_usart
	.dbline 361
;     Init();
	xcall _Init
	.dbline 364
; 	//CC1000_init();
; 	
; 	if(flag)
	xjmp L45
X0:
	.dbline 365
;     {
	.dbline 366
;        C1000_TX_MODE();
	xcall _C1000_TX_MODE
	xjmp L48
L47:
	.dbline 372
;       //SetupCC1000TX(0x81,0x48);	//切换到发射状态
; 	   //PORTE = 0x00;
;        //DDRE  = 0x40;
; 
; 	    while(1)
; 	   {
	.dbline 373
; 		SoftUART_Send(0x55);
	ldi R16,85
	xcall _SoftUART_Send
	.dbline 374
; 		SoftUART_Send(0xFF);
	ldi R16,255
	xcall _SoftUART_Send
	.dbline 375
; 		for(i=0;i<MAX;i++)
	clr R20
	clr R21
L50:
	.dbline 376
	.dbline 377
	ldi R16,51
	xcall _SoftUART_Send
	.dbline 378
L51:
	.dbline 375
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 375
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	brlt L50
	.dbline 379
L48:
	.dbline 371
	xjmp L47
X1:
	.dbline 381
; 		{
; 		SoftUART_Send(0x33);
; 		}
; 	   }
; 
; 	return 0;
	clr R16
	clr R17
	xjmp L44
L45:
	.dbline 384
;    }
; 	else
; 	{
	.dbline 385
; 	   C1000_RX_MODE();
	xcall _C1000_RX_MODE
	xjmp L55
L54:
	.dbline 393
; 	  // WakeUpCC1000ToRX(0x44,0x60);
; 	   //SetupCC1000RX(0x38,0x60);	//切换到接收状态
; 	   //SetupCC1000RX(0x44,0x60);	//切换到接收状态
; 	  //PORTE = 0x00;
;       //DDRE  = 0x00;
; 
; 	  while(1)
; 	 {
	.dbline 394
; 	    AverageFreeRunCC1000();
	xcall _AverageFreeRunCC1000
	.dbline 396
; 	  
; 	   sycode = SoftUART_Receive();
	xcall _SoftUART_Receive
	mov R10,R16
	.dbline 397
; 	   precode = SoftUART_Receive();
	xcall _SoftUART_Receive
	mov R22,R16
	.dbline 399
; 	   
; 	   if(sycode == 0x55)
	mov R24,R10
	cpi R24,85
	brne L57
	.dbline 400
; 	   { 
	.dbline 401
; 	   AverageManualLockCC1000();
	xcall _AverageManualLockCC1000
	.dbline 404
; 	  // if(precode == 0xFF)
; 	 // {		  
; 		  SoftUART_Send(sycode);
	mov R16,R10
	xcall _SoftUART_Send
	.dbline 405
; 		  SoftUART_Send(precode);
	mov R16,R22
	xcall _SoftUART_Send
	.dbline 406
; 		  for(i=0;i<MAX;i++)
	clr R20
	clr R21
L59:
	.dbline 407
	.dbline 408
	xcall _SoftUART_Receive
	movw R24,R28
	movw R30,R20
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 410
	movw R24,R28
	movw R30,R20
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	xcall _SoftUART_Send
	.dbline 411
L60:
	.dbline 406
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 406
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	brlt L59
	.dbline 413
; 		  {
; 		   databuf[i] = SoftUART_Receive();
; 		   
; 		   SoftUART_Send(databuf[i]);
; 		  }
; 	 // }
; 		}
L57:
	.dbline 416
L55:
	.dbline 392
	xjmp L54
X2:
	.dbline 417
; 		//endcode = SoftUART_Receive();
; 		
; 	 }
; 	 return 0;
	clr R16
	clr R17
	.dbline -2
L44:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbsym l rdata 1 c
	.dbsym l endcode 1 c
	.dbsym r precode 22 c
	.dbsym r sycode 10 c
	.dbsym l databuf 0 A[3:3]c
	.dbsym r i 20 I
	.dbend

⌨️ 快捷键说明

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