📄 hello.lst
字号:
(0591) /* lock. This can be used in polled receivers. */
(0592) /****************************************************************************/
(0593)
(0594) void AverageAutoLockCC1000(void)
(0595) {
(0596) WriteToCC1000Register(CC1000_MODEM1,0x01);
_AverageAutoLockCC1000:
0220 E021 LDI R18,1
0221 E100 LDI R16,0x10
0222 DEAD RCALL _WriteToCC1000Register
0223 9508 RET
_ReadCurrentCalibration:
val2 --> R20
val1 --> R22
0224 940E039D CALL push_gset2
0226 01A9 MOVW R20,R18
0227 01B8 MOVW R22,R16
(0597) }
(0598)
(0599) /****************************************************************************/
(0600) /* This routine reads the current calibration values from the CC1000 */
(0601) /****************************************************************************/
(0602)
(0603) void ReadCurrentCalibration(char *val1, char *val2)
(0604) {
(0605) *val1=ReadFromCC1000Register(CC1000_TEST0);
0228 E406 LDI R16,0x46
0229 DEC9 RCALL _ReadFromCC1000Register
022A 01FB MOVW R30,R22
022B 8300 STD Z+0,R16
(0606) *val2=ReadFromCC1000Register(CC1000_TEST2);
022C E404 LDI R16,0x44
022D DEC5 RCALL _ReadFromCC1000Register
022E 01FA MOVW R30,R20
022F 8300 STD Z+0,R16
0230 940E0391 CALL pop_gset2
0232 9508 RET
_OverrideCurrentCalibration:
val2 --> R20
val1 --> R22
0233 940E039D CALL push_gset2
0235 2F42 MOV R20,R18
0236 2F60 MOV R22,R16
(0607) }
(0608)
(0609) /****************************************************************************/
(0610) /* This routine overrides the current calibration of the CC1000 */
(0611) /****************************************************************************/
(0612)
(0613) void OverrideCurrentCalibration(char val1, char val2)
(0614) {
(0615) WriteToCC1000Register(CC1000_TEST5,(val1&0x0F)|0x10);
0237 2F26 MOV R18,R22
0238 702F ANDI R18,0xF
0239 6120 ORI R18,0x10
023A E401 LDI R16,0x41
023B DE94 RCALL _WriteToCC1000Register
(0616) WriteToCC1000Register(CC1000_TEST6,(val2&0x1F)|0x20);
023C 2F24 MOV R18,R20
023D 712F ANDI R18,0x1F
023E 6220 ORI R18,0x20
023F E400 LDI R16,0x40
0240 DE8F RCALL _WriteToCC1000Register
0241 940E0391 CALL pop_gset2
0243 9508 RET
(0617) }
(0618)
(0619) /****************************************************************************/
(0620) /* This routine stops override of the CC1000 calibration values */
(0621) /****************************************************************************/
(0622)
(0623) void StopOverridingCalibration(void)
(0624) {
(0625) WriteToCC1000Register(CC1000_TEST5,0x00);
_StopOverridingCalibration:
0244 2722 CLR R18
0245 E401 LDI R16,0x41
0246 DE89 RCALL _WriteToCC1000Register
(0626) WriteToCC1000Register(CC1000_TEST6,0x00);
0247 2722 CLR R18
0248 E400 LDI R16,0x40
0249 DE86 RCALL _WriteToCC1000Register
024A 9508 RET
_ResetFreqSynth:
modem1_value --> R20
024B 940E039F CALL push_gset1
(0627) }
(0628)
(0629)
(0630) /****************************************************************************/
(0631) /* This CC1000 frequency synthesizer */
(0632) /****************************************************************************/
(0633) void ResetFreqSynth(void)
(0634) {
(0635) char modem1_value;
(0636) modem1_value = ReadFromCC1000Register(CC1000_MODEM1)&~0x01;
024D E100 LDI R16,0x10
024E DEA4 RCALL _ReadFromCC1000Register
024F 2F40 MOV R20,R16
0250 7F4E ANDI R20,0xFE
(0637) WriteToCC1000Register(CC1000_MODEM1,modem1_value);
0251 2F24 MOV R18,R20
0252 E100 LDI R16,0x10
0253 DE7C RCALL _WriteToCC1000Register
(0638) WriteToCC1000Register(CC1000_MODEM1,modem1_value|0x01);
0254 2F24 MOV R18,R20
0255 6021 ORI R18,1
0256 E100 LDI R16,0x10
0257 DE78 RCALL _WriteToCC1000Register
0258 940E03A2 CALL pop_gset1
025A 9508 RET
_delay:
i --> R20
j --> R22
t --> R16
025B 940E039D CALL push_gset2
FILE: D:\FZCCC\main.c
(0001) #include "CC1000.h"
(0002) #include "iom128v.h"
(0003)
(0004) #define flag 0
(0005) #define MAX 3
(0006) //flag 1 is TX,0 is RX ;MAX is long of receive data buf
(0007) //=======================================================
(0008) // CC1000的参数
(0009) //=======================================================
(0010) /*const unsigned char Configuration[] =
(0011) {
(0012) 0x58, // 0x01, FREQ_2A
(0013) 0x20, // 0x02, FREQ_1A
(0014) 0x00, // 0x03, FREQ_0A
(0015) 0x58, //0x42, // 0x04, FREQ_2B
(0016) 0x06, //0x15, // 0x05, FREQ_1B
(0017) 0x25, //0x78, // 0x06, FREQ_0B
(0018)
(0019) 0x00, // 0x07, FSEP1
(0020) 0xc8, // 0x08, FSEP0
(0021) 0x63, //0x81, // 0x09, CURRENT
(0022)
(0023) 0x12, // 0x0A, FRONT_END
(0024) 0xFF, // 0x0B, PA_POW
(0025) 0x18, //0x48, // 0x0C, PLL
(0026) 0x10, // 0x0D, LOCK
(0027) 0x26, // 0x0E, CAL
(0028) 0x8e, // 0x0F, MODEM2
(0029) 0x6c, // 0x10, MODEM1
(0030) 0x2B, //0x27, // 0x11, MODEM0
(0031) 0x70, // 0x12, MATCH
(0032) 0x01, // 0x13, FSCTRL
(0033)
(0034) 0x00, // 0x1C, PRESCALER
(0035)
(0036) 0x10, // 40h test6
(0037) 0x08, // 41h test5
(0038) 0x25, // 42h, TEST4
(0039) 0x04, // 43h,test3
(0040) 0x00, // 44h,test2
(0041) 0x00, // 45h,test1
(0042) 0x00, // 46h,test0
(0043) };
(0044) */
(0045)
(0046) const unsigned char ConfigurationTX[] =
(0047) {
(0048) 0x58, // 0x01, FREQ_2A
(0049) 0x20, // 0x02, FREQ_1A
(0050) 0x00, // 0x03, FREQ_0A
(0051) 0x42, // 0x04, FREQ_2B
(0052) 0x14, //0x15, // 0x05, FREQ_1B
(0053) 0x9C, //0x78, // 0x06, FREQ_0B
(0054)
(0055) 0X02,//0x00, // 0x07, FSEP1
(0056) 0X80,//0xc8, // 0x08, FSEP0
(0057) 0x81, // 0x09, CURRENT
(0058)
(0059) 0X12,//0x10, // 0x0A, FRONT_END
(0060) 0X0F,//0xFF, // 0x0B, PA_POW
(0061) 0x48, // 0x0C, PLL
(0062) 0x10, // 0x0D, LOCK
(0063) 0x26, // 0x0E, CAL
(0064) 0x8C, // 0x0F, MODEM2
(0065) 0x7D, // 0x10, MODEM1 //Manchester
(0066) 0x2B, // 0x11, MODEM0 //Manchester is 0x27 UART is 0x2B NRZ is 0x23
(0067) 0x70, // 0x12, MATCH
(0068) 0x01, // 0x13, FSCTRL
(0069)
(0070) 0x00, // 0x1C, PRESCALER
(0071)
(0072) 0x10, // 40h test6
(0073) 0x08, // 41h test5
(0074) 0x25, // 42h, TEST4
(0075) 0x04, // 43h,test3
(0076) 0x00, // 44h,test2
(0077) 0x00, // 45h,test1
(0078) 0x00, // 46h,test0
(0079) };
(0080) const unsigned char ConfigurationRX[] =
(0081) {
(0082) 0x58, // 0x01, FREQ_2A
(0083) 0x20, // 0x02, FREQ_1A
(0084) 0x00, // 0x03, FREQ_0A
(0085) 0x42, // 0x04, FREQ_2B
(0086) 0x14, //0x15, // 0x05, FREQ_1B
(0087) 0x9C, //0x78, // 0x06, FREQ_0B
(0088)
(0089) 0X02,//0x00, // 0x07, FSEP1
(0090) 0X80,//0xc8, // 0x08, FSEP0
(0091) 0x44, // 0x09, CURRENT
(0092)
(0093) 0X12,//0x10, // 0x0A, FRONT_END
(0094) 0X0F,//0xFF, // 0x0B, PA_POW
(0095) 0x60, // 0x0C, PLL
(0096) 0x10, // 0x0D, LOCK
(0097) 0x26, // 0x0E, CAL
(0098) 0x8E, // 0x0F, MODEM2
(0099) 0x7D, // 0x10, MODEM1 //Manchester
(0100) 0x2B, // 0x11, MODEM0 //Manchester is 0x27 UART is 0x2B NRZ is 0x23
(0101) 0x70, // 0x12, MATCH
(0102) 0x01, // 0x13, FSCTRL
(0103)
(0104) 0x00, // 0x1C, PRESCALER
(0105)
(0106) 0x10, // 40h test6
(0107) 0x08, // 41h test5
(0108) 0x25, // 42h, TEST4
(0109) 0x04, // 43h,test3
(0110) 0x00, // 44h,test2
(0111) 0x00, // 45h,test1
(0112) 0x00, // 46h,test0
(0113) };
(0114) void delay(int t)
(0115) {
(0116) int i,j;
(0117) for(i = 0;i < t;i++)
025D 2744 CLR R20
025E 2755 CLR R21
025F C00A RJMP 0x026A
(0118) for(j = 0;j < t;j++);
0260 2766 CLR R22
0261 2777 CLR R23
0262 C002 RJMP 0x0265
0263 5F6F SUBI R22,0xFF
0264 4F7F SBCI R23,0xFF
0265 1760 CP R22,R16
0266 0771 CPC R23,R17
0267 F3DC BLT 0x0263
0268 5F4F SUBI R20,0xFF
0269 4F5F SBCI R21,0xFF
026A 1740 CP R20,R16
026B 0751 CPC R21,R17
026C F39C BLT 0x0260
026D 940E0391 CALL pop_gset2
026F 9508 RET
_C1000_TX_MODE:
MainValue --> R20
0270 940E039F CALL push_gset1
(0119) }
(0120)
(0121)
(0122) void C1000_TX_MODE(void)
(0123) {
(0124) /*WriteToCC1000Register(CC1000_MAIN,0xe1); // set to TX mode
(0125) //WriteToCC1000Register(CC1000_PA_POW,0xFF); // no output power needed
(0126) WriteToCC1000Register(CC1000_CURRENT,0x60); // set TX current level
(0127) WriteToCC1000Register(CC1000_PLL,0x18);
(0128) WriteToCC1000Register(CC1000_PA_POW,0xFF);
(0129) */
(0130) char MainValue;
(0131) MainValue=ReadFromCC1000Register(CC1000_MAIN);
0272 2700 CLR R16
0273 940E00F3 CALL _ReadFromCC1000Register
0275 2F40 MOV R20,R16
(0132) WriteToCC1000Register(CC1000_MAIN,(MainValue & 0xE1) | 0xC0); //RXTX=1,F_REG=1,TX_PD=0,FS_PD=0
0276 2F24 MOV R18,R20
0277 7E21 ANDI R18,0xE1
0278 6C20 ORI R18,0xC0
0279 2700 CLR R16
027A 940E00D0 CALL _WriteToCC1000Register
(0133) WriteToCC1000Register(CC1000_PA_POW,0x00);
027C 2722 CLR R18
027D E00B LDI R16,0xB
027E 940E00D0 CALL _WriteToCC1000Register
(0134) WriteToCC1000Register(CC1000_CURRENT, 0x81);//68
0280 E821 LDI R18,0x81
0281 E009 LDI R16,0x9
0282 940E00D0 CALL _WriteToCC1000Register
(0135) WriteToCC1000Register(CC1000_PLL, 0x48);
0284 E428 LDI R18,0x48
0285 E00C LDI R16,0xC
0286 940E00D0 CALL _WriteToCC1000Register
(0136)
(0137) delay(12);
0288 E00C LDI R16,0xC
0289 E010 LDI R17,0
028A DFD0 RCALL _delay
(0138) WriteToCC1000Register(CC1000_PA_POW,0x08);
028B E028 LDI R18,0x8
028C E00B LDI R16,0xB
028D 940E00D0 CALL _WriteToCC1000Register
(0139) delay(2);
028F E002 LDI R16,2
0290 E010 LDI R17,0
0291 DFC9 RCALL _delay
0292 940E03A2 CALL pop_gset1
0294 9508 RET
_C1000_RX_MODE:
MainValue --> R20
0295 940E039F CALL push_gset1
(0140)
(0141) }
(0142)
(0143)
(0144) void C1000_RX_MODE(void)
(0145) {
(0146) /*WriteToCC1000Register(CC1000_MAIN,0x17); // set to RX mode//原先是x11
(0147) //WriteToCC1000Register(CC1000_PA_POW,0xFF); // no output power needed
(0148) WriteToCC1000Register(CC1000_CURRENT,0x70); // set TX current level
(0149) WriteToCC1000Register(CC1000_PLL,0x18);
(0150) delay(12);
(0151) */
(0152) char MainValue;
(0153) MainValue=ReadFromCC1000Register(CC1000_MAIN);
0297 2700 CLR R16
0298 940E00F3 CALL _ReadFromCC1000Register
029A 2F40 MOV R20,R16
(0154) WriteToCC1000Register(CC1000_MAIN,(MainValue & 0x11) ); //RXTX=0,F_REG=0,RX_PD=0,FS_PD=0
029B 2F24 MOV R18,R20
029C 7121 ANDI R18,0x11
029D 2700 CLR R16
029E 940E00D0 CALL _WriteToCC1000Register
(0155) WriteToCC1000Register(CC1000_PA_POW,0x00);
02A0 2722 CLR R18
02A1 E00B LDI R16,0xB
02A2 940E00D0 CALL _WriteToCC1000Register
(0156) WriteToCC1000Register(CC1000_CURRENT, 0x44);//0x44
02A4 E424 LDI R18,0x44
02A5 E009 LDI R16,0x9
02A6 940E00D0 CALL _WriteToCC1000Register
(0157) WriteToCC1000Register(CC1000_PLL, 0x60);
02A8 E620 LDI R18,0x60
02A9 E00C LDI R16,0xC
02AA 940E00D0 CALL _WriteToCC1000Register
(0158)
(0159) delay(12);
02AC E00C LDI R16,0xC
02AD E010 LDI R17,0
02AE DFAC RCALL _delay
02AF 940E03A2 CALL pop_gset1
02B1 9508 RET
(0160)
(0161) }
(0162)
(0163) void init_usart(void)
(0164) {
(0165)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -