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

📄 hello.lst

📁 CC1000通信
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -