📄 1100.lst
字号:
199 0xEA, // FSCAL3 Frequency synthesizer calibration.
200 0x2A, // FSCAL2 Frequency synthesizer calibration.
201 0x00, // FSCAL1 Frequency synthesizer calibration.
202 0x11, // FSCAL0 Frequency synthesizer calibration.
203 0x59, // FSTEST Frequency synthesizer calibration.
204 0x81, // TEST2 Various test settings.
205 0x35, // TEST1 Various test settings.
206 0x09, // TEST0 Various test settings.
207 0x0B, // IOCFG2 GDO2 output pin configuration.
208 0x06, // IOCFG0D GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed p
-seudo register explanation.
209
210 0x04, // PKTCTRL1 Packet automation control.
211 0x05, // PKTCTRL0 Packet automation control.
212 0x00, // ADDR Device address.
213 0x0c // PKTLEN Packet length.
214 };
215 //*****************************************************************************************
216 //函数名:delay(unsigned int s)
217 //输入:时间
218 //输出:无
219 //功能描述:普通廷时,内部用
220 //*****************************************************************************************
221 static void delay(unsigned int s)
222 {
223 1 unsigned int i;
224 1 for(i=0; i<s; i++);
225 1 for(i=0; i<s; i++);
226 1 }
227
228
229 void halWait(INT16U timeout) {
230 1 do {
231 2 _nop_();
232 2 _nop_();
233 2 _nop_();
234 2 _nop_();
235 2 _nop_();
236 2 _nop_();
237 2 _nop_();
238 2 _nop_();
239 2 _nop_();
C51 COMPILER V7.06 1100 12/18/2007 16:53:25 PAGE 5
240 2 _nop_();
241 2 _nop_();
242 2 _nop_();
243 2 _nop_();
244 2 _nop_();
245 2 _nop_();
246 2 } while (--timeout);
247 1 }
248
249
250 void SpiInit(void)
251 {
252 1 CSN=0;
253 1 SCK=0;
254 1 CSN=1;
255 1 }
256
257 /*****************************************************************************************
258 //函数名:CpuInit()
259 //输入:无
260 //输出:无
261 //功能描述:SPI初始化程序
262 /*****************************************************************************************/
263 void CpuInit(void)
264 {
265 1 SpiInit();
266 1 delay(5000);
267 1 }
268
269
270 //*****************************************************************************************
271 //函数名:SpisendByte(INT8U dat)
272 //输入:发送的数据
273 //输出:无
274 //功能描述:SPI发送一个字节
275 //*****************************************************************************************
276 INT8U SpiTxRxByte(INT8U dat)
277 {
278 1 INT8U i,temp;
279 1 temp = 0;
280 1
281 1 SCK = 0;
282 1 for(i=0; i<8; i++)
283 1 {
284 2 if(dat & 0x80)
285 2 {
286 3 MOSI = 1;
287 3 }
288 2 else MOSI = 0;
289 2 dat <<= 1;
290 2
291 2 SCK = 1;
292 2 _nop_();
293 2 _nop_();
294 2
295 2 temp <<= 1;
296 2 if(MISO)temp++;
297 2 SCK = 0;
298 2 _nop_();
299 2 _nop_();
300 2 }
301 1 return temp;
C51 COMPILER V7.06 1100 12/18/2007 16:53:25 PAGE 6
302 1 }
303
304 //*****************************************************************************************
305 //函数名:void RESET_CC1100(void)
306 //输入:无
307 //输出:无
308 //功能描述:复位CC1100
309 //*****************************************************************************************
310 void RESET_CC1100(void)
311 {
312 1 CSN = 0;
313 1 while (MISO);
314 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
315 1 while (MISO);
316 1 CSN = 1;
317 1 }
318
319 //*****************************************************************************************
320 //函数名:void POWER_UP_RESET_CC1100(void)
321 //输入:无
322 //输出:无
323 //功能描述:上电复位CC1100
324 //*****************************************************************************************
325 void POWER_UP_RESET_CC1100(void)
326 {
327 1 CSN = 1;
328 1 halWait(1);
329 1 CSN = 0;
330 1 halWait(1);
331 1 CSN = 1;
332 1 halWait(41);
333 1 RESET_CC1100(); //复位CC1100
334 1 }
335
336 //*****************************************************************************************
337 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
338 //输入:地址和配置字
339 //输出:无
340 //功能描述:SPI写寄存器
341 //*****************************************************************************************
342 void halSpiWriteReg(INT8U addr, INT8U value)
343 {
344 1 CSN = 0;
345 1 while (MISO);
346 1 SpiTxRxByte(addr); //写地址
347 1 SpiTxRxByte(value); //写入配置
348 1 CSN = 1;
349 1 }
350
351 //*****************************************************************************************
352 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
353 //输入:地址,写入缓冲区,写入个数
354 //输出:无
355 //功能描述:SPI连续写配置寄存器
356 //*****************************************************************************************
357 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
358 {
359 1 INT8U i, temp;
360 1 temp = addr | WRITE_BURST;
361 1 CSN = 0;
362 1 while (MISO);
363 1 SpiTxRxByte(temp);
C51 COMPILER V7.06 1100 12/18/2007 16:53:25 PAGE 7
364 1 for (i = 0; i < count; i++)
365 1 {
366 2 SpiTxRxByte(buffer[i]);
367 2 }
368 1 CSN = 1;
369 1 }
370
371 //*****************************************************************************************
372 //函数名:void halSpiStrobe(INT8U strobe)
373 //输入:命令
374 //输出:无
375 //功能描述:SPI写命令
376 //*****************************************************************************************
377 void halSpiStrobe(INT8U strobe)
378 {
379 1 CSN = 0;
380 1 while (MISO);
381 1 SpiTxRxByte(strobe); //写入命令
382 1 CSN = 1;
383 1 }
384
385
386
387
388
389 //*****************************************************************************************
390 //函数名:INT8U halSpiReadReg(INT8U addr)
391 //输入:地址
392 //输出:该寄存器的配置字
393 //功能描述:SPI读寄存器
394 //*****************************************************************************************
395 INT8U halSpiReadReg(INT8U addr)
396 {
397 1 INT8U temp, value;
398 1 temp = addr|READ_SINGLE;//读寄存器命令
399 1 CSN = 0;
400 1 while (MISO);
401 1 SpiTxRxByte(temp);
402 1 value = SpiTxRxByte(0);
403 1 CSN = 1;
404 1 return value;
405 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -