📄 cc1000avr.lis
字号:
02B6 ; RXCurrent -> R22
.even
02B6 _WakeUpCC1000ToRX::
02B6 0E940000 xcall push_gset2
02BA 422F mov R20,R18
02BC 602F mov R22,R16
02BE .dbline -1
02BE .dbline 528
02BE ; }
02BE ;
02BE ; /****************************************************************************/
02BE ; /* This routine wakes the CC1000 up from PD mode to RX mode, call */
02BE ; /* SetupCC1000RX after this routine is finished. */
02BE ; /****************************************************************************/
02BE ;
02BE ; void WakeUpCC1000ToRX(char RXCurrent,char RXPLL)
02BE ; {
02BE .dbline 532
02BE ; int i;
02BE ;
02BE ;
02BE ; WriteToCC1000Register(CC1000_MAIN,0x3B); // Turn on xtal oscillator core
02BE 2BE3 ldi R18,59
02C0 0027 clr R16
02C2 ECDE xcall _WriteToCC1000Register
02C4 .dbline 533
02C4 ; WriteToCC1000Register(CC1000_CURRENT,RXCurrent); // Program VCO current for RX
02C4 262F mov R18,R22
02C6 09E0 ldi R16,9
02C8 E9DE xcall _WriteToCC1000Register
02CA .dbline 534
02CA ; WriteToCC1000Register(CC1000_PLL,RXPLL); // Use RX refdiv setting
02CA 242F mov R18,R20
02CC 0CE0 ldi R16,12
02CE E6DE xcall _WriteToCC1000Register
02D0 .dbline 538
02D0 ;
02D0 ; // Insert wait routine here, must wait for xtal oscillator to stabilise,
02D0 ; // typically takes 2-5ms.
02D0 ; delaycc(38); //35 is 2ms
02D0 06E2 ldi R16,38
02D2 10E0 ldi R17,0
02D4 95DE xcall _delaycc
02D6 .dbline 540
02D6 ;
02D6 ; WriteToCC1000Register(CC1000_MAIN,0x39); // Turn on bias generator
02D6 29E3 ldi R18,57
02D8 0027 clr R16
02DA E0DE xcall _WriteToCC1000Register
02DC .dbline 542
02DC ; // Wait for 250us, insert wait loop here
02DC ; delaycc(12);
02DC 0CE0 ldi R16,12
02DE 10E0 ldi R17,0
02E0 8FDE xcall _delaycc
02E2 .dbline 543
02E2 ; WriteToCC1000Register(CC1000_MAIN,0x31); // Turn on frequency synthesiser
02E2 21E3 ldi R18,49
02E4 0027 clr R16
02E6 DADE xcall _WriteToCC1000Register
02E8 .dbline -2
02E8 L77:
02E8 0E940000 xcall pop_gset2
02EC .dbline 0 ; func end
02EC 0895 ret
02EE .dbsym l i 1 I
02EE .dbsym r RXPLL 20 c
02EE .dbsym r RXCurrent 22 c
02EE .dbend
02EE .dbfunc e WakeUpCC1000ToTX _WakeUpCC1000ToTX fV
02EE ; i -> <dead>
02EE ; TXPLL -> R20
02EE ; TXCurrent -> R22
.even
02EE _WakeUpCC1000ToTX::
02EE 0E940000 xcall push_gset2
02F2 422F mov R20,R18
02F4 602F mov R22,R16
02F6 .dbline -1
02F6 .dbline 552
02F6 ; }
02F6 ;
02F6 ; /****************************************************************************/
02F6 ; /* This routine wakes the CC1000 up from PD mode to TX mode, call */
02F6 ; /* SetupCC1000TX after this routine is finished. */
02F6 ; /****************************************************************************/
02F6 ;
02F6 ; void WakeUpCC1000ToTX(char TXCurrent,char TXPLL)
02F6 ; {
02F6 .dbline 556
02F6 ; int i;
02F6 ;
02F6 ;
02F6 ; WriteToCC1000Register(CC1000_MAIN,0xFB); // Turn on xtal oscillator core
02F6 2BEF ldi R18,251
02F8 0027 clr R16
02FA D0DE xcall _WriteToCC1000Register
02FC .dbline 557
02FC ; WriteToCC1000Register(CC1000_CURRENT,TXCurrent); // Program VCO current for TX
02FC 262F mov R18,R22
02FE 09E0 ldi R16,9
0300 CDDE xcall _WriteToCC1000Register
0302 .dbline 558
0302 ; WriteToCC1000Register(CC1000_PLL,TXPLL); // Use TX refdiv setting
0302 242F mov R18,R20
0304 0CE0 ldi R16,12
0306 CADE xcall _WriteToCC1000Register
0308 .dbline 562
0308 ;
0308 ; // Insert wait routine here, must wait for xtal oscillator to stabilise,
0308 ; // typically takes 2-5ms.
0308 ; delaycc(38); //35 is 2ms
0308 06E2 ldi R16,38
030A 10E0 ldi R17,0
030C 79DE xcall _delaycc
030E .dbline 564
030E ;
030E ; WriteToCC1000Register(CC1000_MAIN,0xF9); // Turn on bias generator
030E 29EF ldi R18,249
0310 0027 clr R16
0312 C4DE xcall _WriteToCC1000Register
0314 .dbline 566
0314 ; // Wait for 250us, insert wait loop here
0314 ; delaycc(12);
0314 0CE0 ldi R16,12
0316 10E0 ldi R17,0
0318 73DE xcall _delaycc
031A .dbline 567
031A ; WriteToCC1000Register(CC1000_PA_POW,PA_VALUE); // Turn on PA
031A 20EF ldi R18,240
031C 0BE0 ldi R16,11
031E BEDE xcall _WriteToCC1000Register
0320 .dbline 568
0320 ; WriteToCC1000Register(CC1000_MAIN,0xF1); // Turn on frequency synthesiser
0320 21EF ldi R18,241
0322 0027 clr R16
0324 BBDE xcall _WriteToCC1000Register
0326 .dbline -2
0326 L78:
0326 0E940000 xcall pop_gset2
032A .dbline 0 ; func end
032A 0895 ret
032C .dbsym l i 1 I
032C .dbsym r TXPLL 20 c
032C .dbsym r TXCurrent 22 c
032C .dbend
032C .dbfunc e AverageManualLockCC1000 _AverageManualLockCC1000 fV
.even
032C _AverageManualLockCC1000::
032C .dbline -1
032C .dbline 576
032C ; }
032C ;
032C ; /****************************************************************************/
032C ; /* This routine locks the averaging filter of the CC1000 */
032C ; /****************************************************************************/
032C ;
032C ; void AverageManualLockCC1000(void)
032C ; {
032C .dbline 577
032C ; WriteToCC1000Register(CC1000_MODEM1,0x1D);//0x19
032C 2DE1 ldi R18,29
032E 00E1 ldi R16,16
0330 B5DE xcall _WriteToCC1000Register
0332 .dbline -2
0332 L79:
0332 .dbline 0 ; func end
0332 0895 ret
0334 .dbend
0334 .dbfunc e AverageFreeRunCC1000 _AverageFreeRunCC1000 fV
.even
0334 _AverageFreeRunCC1000::
0334 .dbline -1
0334 .dbline 585
0334 ; }
0334 ;
0334 ; /****************************************************************************/
0334 ; /* This routine unlocks the averaging filter of the CC1000 */
0334 ; /****************************************************************************/
0334 ;
0334 ; void AverageFreeRunCC1000(void)
0334 ; {
0334 .dbline 586
0334 ; WriteToCC1000Register(CC1000_MODEM1,0x09);
0334 29E0 ldi R18,9
0336 00E1 ldi R16,16
0338 B1DE xcall _WriteToCC1000Register
033A .dbline -2
033A L80:
033A .dbline 0 ; func end
033A 0895 ret
033C .dbend
033C .dbfunc e AverageAutoLockCC1000 _AverageAutoLockCC1000 fV
.even
033C _AverageAutoLockCC1000::
033C .dbline -1
033C .dbline 595
033C ; }
033C ;
033C ; /****************************************************************************/
033C ; /* This routine sets up the averaging filter of the CC1000 for automatic */
033C ; /* lock. This can be used in polled receivers. */
033C ; /****************************************************************************/
033C ;
033C ; void AverageAutoLockCC1000(void)
033C ; {
033C .dbline 596
033C ; WriteToCC1000Register(CC1000_MODEM1,0x01);
033C 21E0 ldi R18,1
033E 00E1 ldi R16,16
0340 ADDE xcall _WriteToCC1000Register
0342 .dbline -2
0342 L81:
0342 .dbline 0 ; func end
0342 0895 ret
0344 .dbend
0344 .dbfunc e ReadCurrentCalibration _ReadCurrentCalibration fV
0344 ; val2 -> R20,R21
0344 ; val1 -> R22,R23
.even
0344 _ReadCurrentCalibration::
0344 0E940000 xcall push_gset2
0348 A901 movw R20,R18
034A B801 movw R22,R16
034C .dbline -1
034C .dbline 604
034C ; }
034C ;
034C ; /****************************************************************************/
034C ; /* This routine reads the current calibration values from the CC1000 */
034C ; /****************************************************************************/
034C ;
034C ; void ReadCurrentCalibration(char *val1, char *val2)
034C ; {
034C .dbline 605
034C ; *val1=ReadFromCC1000Register(CC1000_TEST0);
034C 06E4 ldi R16,70
034E C9DE xcall _ReadFromCC1000Register
0350 FB01 movw R30,R22
0352 0083 std z+0,R16
0354 .dbline 606
0354 ; *val2=ReadFromCC1000Register(CC1000_TEST2);
0354 04E4 ldi R16,68
0356 C5DE xcall _ReadFromCC1000Register
0358 FA01 movw R30,R20
035A 0083 std z+0,R16
035C .dbline -2
035C L82:
035C 0E940000 xcall pop_gset2
0360 .dbline 0 ; func end
0360 0895 ret
0362 .dbsym r val2 20 pc
0362 .dbsym r val1 22 pc
0362 .dbend
0362 .dbfunc e OverrideCurrentCalibration _OverrideCurrentCalibration fV
0362 ; val2 -> R20
0362 ; val1 -> R22
.even
0362 _OverrideCurrentCalibration::
0362 0E940000 xcall push_gset2
0366 422F mov R20,R18
0368 602F mov R22,R16
036A .dbline -1
036A .dbline 614
036A ; }
036A ;
036A ; /****************************************************************************/
036A ; /* This routine overrides the current calibration of the CC1000 */
036A ; /****************************************************************************/
036A ;
036A ; void OverrideCurrentCalibration(char val1, char val2)
036A ; {
036A .dbline 615
036A ; WriteToCC1000Register(CC1000_TEST5,(val1&0x0F)|0x10);
036A 262F mov R18,R22
036C 2F70 andi R18,15
036E 2061 ori R18,16
0370 01E4 ldi R16,65
0372 94DE xcall _WriteToCC1000Register
0374 .dbline 616
0374 ; WriteToCC1000Register(CC1000_TEST6,(val2&0x1F)|0x20);
0374 242F mov R18,R20
0376 2F71 andi R18,31
0378 2062 ori R18,32
037A 00E4 ldi R16,64
037C 8FDE xcall _WriteToCC1000Register
037E .dbline -2
037E L83:
037E 0E940000 xcall pop_gset2
0382 .dbline 0 ; func end
0382 0895 ret
0384 .dbsym r val2 20 c
0384 .dbsym r val1 22 c
0384 .dbend
0384 .dbfunc e StopOverridingCalibration _StopOverridingCalibration fV
.even
0384 _StopOverridingCalibration::
0384 .dbline -1
0384 .dbline 624
0384 ; }
0384 ;
0384 ; /****************************************************************************/
0384
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -