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

📄 uart.lst

📁 cc1020 串口通讯
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0387 9380008B  STS	xx1,R24
    0389 9B5D      SBIS	0x0B,5
    038A CFFE      RJMP	0x0389
    038B 9020008C  LDS	R2,xx0
(0550)    WriteToCC1020Register(CC1020_VGA2,0xbf);    //disable agc LNA2gain maximun
(0551)    WriteToCC1020Register(CC1020_VGA3,0x20);   //vga_setting=0
    038D B82C      OUT	0x0C,R2
(0552)    
    038E 9B5D      SBIS	0x0B,5
    038F CFFE      RJMP	0x038E
    0390 9508      RET
_ReadFromCC1020Register:
    0391 D353      RCALL	push_gset4
    0392 2EA0      MOV	R10,R16
(0553)    //test rssi
    0393 E380      LDI	R24,0x30
    0394 BB81      OUT	0x11,R24
    0395 E083      LDI	R24,3
    0396 BB87      OUT	0x17,R24
    0397 E00A      LDI	R16,0xA
(0554) /*   for(int i=0x0300;i>0;i--);
    0398 E010      LDI	R17,0
    0399 E020      LDI	R18,0
(0555)    RSSI1=ReadRSSIlevelCC1020()*4;
    039A E030      LDI	R19,0
    039B DE04      RCALL	_delay
    039C 9895      CBI	0x12,5
(0556)    for( vga=0;vga<31;vga++)
    039D 2D8A      MOV	R24,R10
    039E 778F      ANDI	R24,0x7F
    039F 2EC8      MOV	R12,R24
(0557)    {
(0558)      //WriteToCC1020Register(CC1020_VGA3,(0x20+vga));   //vga_setting=vga
(0559)      RSSI2=ReadRSSIlevelCC1020();
(0560)      if(RSSI2>RSSI1) break;     
(0561)    } */
_phafrerepol:
    03A0 0CCC      LSL	R12
(0562)    
(0563)    //vga_setting=vga
(0564)    WriteToCC1020Register(CC1020_VGA3,(0x20+15));   
(0565)    //enable agc
(0566)    WriteToCC1020Register(CC1020_VGA2,0x55);
(0567)    //set cs_level
_puvalrepol:
    03A1 E088      LDI	R24,0x8
(0568)    WriteToCC1020Register(CC1020_VGA4,0x20+25); 
(0569) //   _NOP();
(0570) }
(0571) 
_pulsefunrepol:
    03A2 2EA8      MOV	R10,R24
(0572)  /****************************************************************************/
(0573) /*  This routine wakes the CC1020 up from PD mode to RX mode                */
(0574) /****************************************************************************/
(0575) 
(0576) void WakeUpCC1020ToRX(unsigned char RXANALOG)
(0577) {
_staterepol:
    03A3 C015      RJMP	0x03B9
(0578)   volatile int i;
(0579) 
(0580)   // Turn on xtal oscillator core
(0581)   WriteToCC1020Register(CC1020_MAIN,0x1B);
(0582) 
(0583)   // Setup bias current adjustment
_checkcommrepol:
    03A4 98C1      CBI	0x18,1
(0584)   WriteToCC1020Register(CC1020_ANALOG,RXANALOG);
(0585) 
(0586)   // Insert wait routine here, must wait for xtal oscillator to stabilise, 
(0587)   // typically takes 2-5ms.
(0588)   for (i=0x4260; i > 0; i--);
(0589) 
(0590)   // Turn on bias generator
(0591)   WriteToCC1020Register(CC1020_MAIN,0x19);
(0592) 
    03A5 2D8C      MOV	R24,R12
    03A6 7880      ANDI	R24,0x80
    03A7 3880      CPI	R24,0x80
(0593)   // Wait for 150 usec
    03A8 F411      BNE	0x03AB
    03A9 9AC0      SBI	0x18,0
(0594)   for (i=0x0210; i > 0; i--);
    03AA C001      RJMP	0x03AC
    03AB 98C0      CBI	0x18,0
(0595) 
    03AC E00A      LDI	R16,0xA
    03AD E010      LDI	R17,0
    03AE E020      LDI	R18,0
    03AF E030      LDI	R19,0
    03B0 DDEF      RCALL	_delay
    03B1 9AC1      SBI	0x18,1
(0596)   // Turn on frequency synthesiser
    03B2 E00A      LDI	R16,0xA
    03B3 E010      LDI	R17,0
    03B4 E020      LDI	R18,0
    03B5 E030      LDI	R19,0
(0597)   WriteToCC1020Register(CC1020_MAIN,0x11);
    03B6 DDE9      RCALL	_delay
    03B7 0CCC      LSL	R12
    03B8 94AA      DEC	R10
    03B9 2422      CLR	R2
(0598)  
    03BA 142A      CP	R2,R10
    03BB F340      BCS	0x03A4
    03BC 24CC      CLR	R12
    03BD 9AC0      SBI	0x18,0
(0599) }
(0600) 
    03BE E082      LDI	R24,2
(0601) /****************************************************************************/
    03BF BB87      OUT	0x17,R24
(0602) /*  This routine wakes the CC1020 up from PD mode to TX mode                */
    03C0 E088      LDI	R24,0x8
(0603) /****************************************************************************/
(0604) 
(0605) void WakeUpCC1020ToTX(unsigned char TXANALOG)
(0606) {
(0607)   volatile int i;
    03C1 2EA8      MOV	R10,R24
(0608) 
    03C2 C014      RJMP	0x03D7
(0609)   // Turn on xtal oscillator core
(0610)   WriteToCC1020Register(CC1020_MAIN,0xDB);
    03C3 0CCC      LSL	R12
(0611) 
(0612)   // Setup bias current adjustment
    03C4 98C1      CBI	0x18,1
(0613)   WriteToCC1020Register(CC1020_ANALOG,TXANALOG);
(0614) 
    03C5 E00A      LDI	R16,0xA
    03C6 E010      LDI	R17,0
    03C7 E020      LDI	R18,0
    03C8 E030      LDI	R19,0
(0615)   // Insert wait routine here, must wait for xtal oscillator to stabilise, 
(0616)   // typically takes 2-5ms. 
(0617)   for (i=0x42600; i > 0; i--);
    03C9 DDD6      RCALL	_delay
    03CA B388      IN	R24,0x18
    03CB 7081      ANDI	R24,1
    03CC BB88      OUT	0x18,R24
    03CD 3081      CPI	R24,1
(0618) 
(0619)   // Turn on bias generator
(0620)   WriteToCC1020Register(CC1020_MAIN,0xD9);
    03CE F409      BNE	0x03D0
(0621) 
    03CF 94C3      INC	R12
    03D0 9AC1      SBI	0x18,1
    03D1 E00A      LDI	R16,0xA
    03D2 E010      LDI	R17,0
(0622)   // Wait for 150 usec
    03D3 E020      LDI	R18,0
(0623)   for (i=0x02100; i > 0; i--);
    03D4 E030      LDI	R19,0
(0624) 
    03D5 DDCA      RCALL	_delay
    03D6 94AA      DEC	R10
    03D7 2422      CLR	R2
    03D8 142A      CP	R2,R10
(0625)   // Turn on frequency synthesiser
    03D9 F348      BCS	0x03C3
(0626)   WriteToCC1020Register(CC1020_MAIN,0xD1);
    03DA 98C1      CBI	0x18,1
(0627) 
    03DB 9A95      SBI	0x12,5
    03DC E380      LDI	R24,0x30
    03DD BB81      OUT	0x11,R24
    03DE E083      LDI	R24,3
(0628) }
    03DF BB87      OUT	0x17,R24
(0629)  
    03E0 2D0C      MOV	R16,R12
(0630) /****************************************************************************/
    03E1 D2FD      RCALL	pop_gset4
    03E2 9508      RET
_WriteToCC1020Register:
    03E3 D2F2      RCALL	push_arg4
    03E4 D2FE      RCALL	push_gset5
(0631) /*  This routine calibrates the CC1020                                      */
    03E5 2EE2      MOV	R14,R18
(0632) /*  Returns 0 if calibration fails, non-zero otherwise. Checks the LOCK     */
    03E6 24CC      CLR	R12
(0633) /*  to check for success.                                                   */
    03E7 24AA      CLR	R10
    03E8 E380      LDI	R24,0x30
    03E9 BB81      OUT	0x11,R24
    03EA E083      LDI	R24,3
(0634) /****************************************************************************/
    03EB BB87      OUT	0x17,R24
(0635) 
    03EC E00A      LDI	R16,0xA
(0636) char CalibrateCC1020(unsigned char PA_POWER)
    03ED E010      LDI	R17,0
    03EE E020      LDI	R18,0
    03EF E030      LDI	R19,0
    03F0 DDAF      RCALL	_delay
(0637) {
    03F1 9895      CBI	0x12,5
(0638)   volatile int TimeOutCounter;
    03F2 858A      LDD	R24,Y+10
(0639)   volatile int nCalAttempt;
    03F3 778F      ANDI	R24,0x7F
    03F4 2EC8      MOV	R12,R24
    03F5 0CCC      LSL	R12
    03F6 94C3      INC	R12
(0640) 
    03F7 E088      LDI	R24,0x8
(0641)   // Turn off PA to avoid spurs during calibration in TX mode
    03F8 2EA8      MOV	R10,R24
(0642)   WriteToCC1020Register(CC1020_PA_POWER,0x00);
    03F9 C015      RJMP	0x040F
    03FA 98C1      CBI	0x18,1
    03FB 2D8C      MOV	R24,R12
    03FC 7880      ANDI	R24,0x80
(0643) 
    03FD 3880      CPI	R24,0x80
(0644)   // Calibrate, and re-calibrate if necessary:
(0645)   for (nCalAttempt = CAL_ATTEMPT_MAX; nCalAttempt>0; nCalAttempt--) 
(0646)   {
(0647) 
    03FE F411      BNE	0x0401
    03FF 9AC0      SBI	0x18,0
    0400 C001      RJMP	0x0402
(0648)     // Start calibration
    0401 98C0      CBI	0x18,0
    0402 E00A      LDI	R16,0xA
(0649)     WriteToCC1020Register(CC1020_CALIBRATE,0xB4);
    0403 E010      LDI	R17,0
    0404 E020      LDI	R18,0
(0650) 
    0405 E030      LDI	R19,0
    0406 DD99      RCALL	_delay
(0651)     // Monitor actual calibration start (ref. Errata Note 04 - CC1020)
    0407 9AC1      SBI	0x18,1
    0408 E00A      LDI	R16,0xA
(0652)     for(TimeOutCounter=CAL_TIMEOUT; TimeOutCounter>0; TimeOutCounter--)
    0409 E010      LDI	R17,0
    040A E020      LDI	R18,0
(0653) 	{
    040B E030      LDI	R19,0
    040C DD93      RCALL	_delay
(0654) 		if((ReadFromCC1020Register(CC1020_STATUS)&0x80)==0x00) break;
    040D 0CCC      LSL	R12
    040E 94AA      DEC	R10
(0655) 	}
    040F 2422      CLR	R2
    0410 142A      CP	R2,R10
(0656)    
    0411 F340      BCS	0x03FA
(0657)     // Monitor calibration complete
(0658) //    for(TimeOutCounter=CAL_TIMEOUT; ((ReadFromCC1020Register(CC1020_STATUS)&0x80)==0x00)&&(TimeOutCounter>0); TimeOutCounter--);
    0412 2CCE      MOV	R12,R14
(0659) 	for(TimeOutCounter=CAL_TIMEOUT; TimeOutCounter>0; TimeOutCounter--)
    0413 E088      LDI	R24,0x8
    0414 2EA8      MOV	R10,R24
    0415 C015      RJMP	0x042B
    0416 98C1      CBI	0x18,1
(0660) 	{
(0661) 		if((ReadFromCC1020Register(CC1020_STATUS)&0x80)==0x80) break;
    0417 2D8C      MOV	R24,R12
    0418 7880      ANDI	R24,0x80
(0662) 	}
    0419 3880      CPI	R24,0x80
(0663)     // Monitor lock
    041A F411      BNE	0x041D
    041B 9AC0      SBI	0x18,0
    041C C001      RJMP	0x041E
(0664)     for(TimeOutCounter=LOCK_TIMEOUT; TimeOutCounter>0; TimeOutCounter--)
    041D 98C0      CBI	0x18,0
(0665) 	{
(0666) 		if((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0x10) break;
(0667) 	}
    041E E00A      LDI	R16,0xA
(0668) 	
(0669) 	if(TimeOutCounter>0) break;
(0670)     // Abort further recalibration attempts if successful LOCK
    041F E010      LDI	R17,0
    0420 E020      LDI	R18,0
    0421 E030      LDI	R19,0
    0422 DD7D      RCALL	_delay
    0423 9AC1      SBI	0x18,1
    0424 E00A      LDI	R16,0xA
    0425 E010      LDI	R17,0
    0426 E020      LDI	R18,0
    0427 E030      LDI	R19,0
    0428 DD77      RCALL	_delay
    0429 0CCC      LSL	R12
    042A 94AA      DEC	R10
    042B 2422      CLR	R2
    042C 142A      CP	R2,R10
    042D F340      BCS	0x0416
    042E 98C1      CBI	0x18,1
    042F 9A95      SBI	0x12,5
    0430 E380      LDI	R24,0x30
    0431 BB81      OUT	0x11,R24
    0432 E083      LDI	R24,3
    0433 BB87      OUT	0x17,R24
    0434 D2AC      RCALL	pop_gset5
(0671)  //   if((ReadFromCC1020Register(CC1020_STATUS)&0x10) == 0x10) {
(0672)  //     break;
    0435 9624      ADIW	R28,4
    0436 9508      RET
_SetupAGC:
    0437 EB2F      LDI	R18,0xBF
    0438 E102      LDI	R16,0x12
    0439 DFA9      RCALL	_WriteToCC1020Register
    043A E220      LDI	R18,0x20
    043B E103      LDI	R16,0x13
    043C DFA6      RCALL	_WriteToCC1020Register
    043D E22F      LDI	R18,0x2F
    043E E103      LDI	R16,0x13
    043F DFA3      RCALL	_WriteToCC1020Register
    0440 E525      LDI	R18,0x55
    0441 E102      LDI	R16,0x12
    0442 DFA0      RCALL	_WriteToCC1020Register
    0443 E329      LDI	R18,0x39
    0444 E104      LDI	R16,0x14
    0445 DF9D      RCALL	_WriteToCC1020Register
    0446 9508      RET
(0673)   //  }
(0674)   }
_WakeUpCC1020ToRX:
    0447 D2A3      RCALL	push_gset1
    0448 2F40      MOV	R20,R16
    0449 9722      SBIW	R28,2
    044A E12B      LDI	R18,0x1B
    044B 2700      CLR	R16
    044C DF96      RCALL	_WriteToCC1020Register
    044D 2F24      MOV	R18,R20
    044E E107      LDI	R16,0x17
(0675) 
    044F DF93      RCALL	_WriteToCC1020Register
    0450 E680      LDI	R24,0x60
    0451 E492      LDI	R25,0x42
    0452 8399      STD	Y+1,R25
    0453 8388      STD	Y+0,R24
    0454 8188      LDD	R24,Y+0
    0455 8199      LDD	R25,Y+1
    0456 9701      SBIW	R24,1
    0457 8399      STD	Y+1,R25
    0458 8388      STD	Y+0,R24
    0459 2422      CLR	R2
    045A 2433      CLR	R3
    045B 1628      CP	R2,R24
    045C 0639      CPC	R3,R25
    045D F3B4      BLT	0x0454
    045E E129      LDI	R18,0x19
    045F 2700      CLR	R16
    0460 DF82      RCALL	_WriteToCC1020Register
    0461 E180      LDI	R24,0x10
    0462 E092      LDI	R25,2
    0463 8399      STD	Y+1,R25
    0464 8388      STD	Y+0,R24
    0465 8188      LDD	R24,Y+0
    0466 8199      LDD	R25,Y+1
(0676)   // Restore PA setting
    0467 9701      SBIW	R24,1
    0468 8399      STD	Y+1,R25
    0469 8388      STD	Y+0,R24
    046A 2422      CLR	R2
    046B 2433      CLR	R3
    046C 1628      CP	R2,R24
    046D 0639      CPC	R3,R25
    046E F3B4      BLT	0x0465
    046F E121      LDI	R18,0x11
    0470 2700      CLR	R16
    0471 DF71      RCALL	_WriteToCC1020Register
    0472 9622      ADIW	R28,2
    0473 D27A      RCALL	pop_gset1
    0474 9508      RET
_WakeUpCC1020ToTX:
    0475 D271      RCALL	push_gset3
    0476 2EA0      MOV	R10,R16
    0477 9722      SBIW	R28,2
    0478 ED2B      LDI	R18,0xDB
    0479 2700      CLR	R16
    047A DF68      RCALL	_WriteToCC1020Register
    047B 2D2A      MOV	R18,R10
    047C E107      LDI	R16,0x17
    047D DF65      RCALL	_WriteToCC1020Register
    047E E040      LDI	R20,0
    047F E256      LDI	R21,0x26
    0480 E064      LDI	R22,4
    0481 E070      LDI	R23,0
(0677)   WriteToCC1020Register(CC1020_PA_POWER, PA_POWER);
    0482 011A      MOVW	R2,R20
    0483 8239      STD	Y+1,R3
    0484 8228      STD	Y+0,R2
(0678) //  if((ReadFromCC1020Register(CC1020_STATUS)&0x10)!=0x10) SMG=dpybuffer[3];
    0485 C005      RJMP	0x048B
(0679)   // Return state of LOCK_CONTINUOUS bit
    0486 8188      LDD	R24,Y+0
    0487 8199      LDD	R25,Y+1
    0488 9701      SBIW	R24,1
    0489 8399      STD	Y+1,R25
    048A 8388      STD	Y+0,R24
    048B 2422      CLR	R2
    048C 2433      CLR	R3
    048D 8048      LDD	R4,Y+0
    048E 8059      LDD	R5,Y+1
    048F 1424      CP	R2,R4
    0490 0435      CPC	R3,R5
    0491 F3A4      BLT	0x0486
    0492 ED29      LDI	R18,0xD9
    0493 2700      CLR	R16
    0494 DF4E      RCALL	_WriteToCC1020Register
    0495 E080      LDI	R24,0
    0496 E291      LDI	R25,0x21
    0497 8399      STD	Y+1,R25
(0680)   return ((ReadFromCC1020Register(CC1020_STATUS)&0x10)==0x10);
(0681) }
    0498 8388      STD	Y+0,R24
    0499 8188      LDD	R24,Y+0
    049A 8199      LDD	R25,Y+1
    049B 9701      SBIW	R24,1
    049C 8399      STD	Y+1,R25
    049D 8388      STD	Y+0,R24
    049E 2422      CLR	R2

⌨️ 快捷键说明

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