📄 1100.lst
字号:
241 2 _nop_();
242 2 _nop_();
243 2 _nop_();
244 2 _nop_();
245 2 _nop_();
246 2 _nop_();
247 2 _nop_();
248 2 _nop_();
249 2 _nop_();
250 2 _nop_();
251 2 _nop_();
252 2 _nop_();
253 2 } while (--timeout);
254 1 }
255
256
257 void SpiInit(void)
258 {
259 1 CSN=0;
260 1 SCK=0;
261 1 CSN=1;
262 1 }
263
264 /*****************************************************************************************
265 //函数名:CpuInit()
266 //输入:无
267 //输出:无
268 //功能描述:SPI初始化程序
269 /*****************************************************************************************/
270 void CpuInit(void)
271 {
272 1 SpiInit();
273 1 delay(5000);
274 1 }
275
276
277 //*****************************************************************************************
278 //函数名:SpisendByte(INT8U dat)
279 //输入:发送的数据
280 //输出:无
281 //功能描述:SPI发送一个字节
282 //*****************************************************************************************
283 INT8U SpiTxRxByte(INT8U dat)
284 {
285 1 INT8U i,temp;
286 1 temp = 0;
287 1
288 1 SCK = 0;
289 1 for(i=0; i<8; i++)
290 1 {
291 2 if(dat & 0x80)
292 2 {
293 3 MOSI = 1;
294 3 }
295 2 else MOSI = 0;
296 2 dat <<= 1;
297 2
298 2 SCK = 1;
299 2 _nop_();
300 2 _nop_();
301 2
C51 COMPILER V7.06 1100 12/20/2007 00:09:01 PAGE 6
302 2 temp <<= 1;
303 2 if(MISO)temp++;
304 2 SCK = 0;
305 2 _nop_();
306 2 _nop_();
307 2 }
308 1 return temp;
309 1 }
310
311 //*****************************************************************************************
312 //函数名:void RESET_CC1100(void)
313 //输入:无
314 //输出:无
315 //功能描述:复位CC1100
316 //*****************************************************************************************
317 void RESET_CC1100(void)
318 {
319 1 CSN = 0;
320 1 while (MISO);
321 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
322 1 while (MISO);
323 1 CSN = 1;
324 1 }
325
326 //*****************************************************************************************
327 //函数名:void POWER_UP_RESET_CC1100(void)
328 //输入:无
329 //输出:无
330 //功能描述:上电复位CC1100
331 //*****************************************************************************************
332 void POWER_UP_RESET_CC1100(void)
333 {
334 1 CSN = 1;
335 1 halWait(1);
336 1 CSN = 0;
337 1 halWait(1);
338 1 CSN = 1;
339 1 halWait(41);
340 1 RESET_CC1100(); //复位CC1100
341 1 }
342
343 //*****************************************************************************************
344 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
345 //输入:地址和配置字
346 //输出:无
347 //功能描述:SPI写寄存器
348 //*****************************************************************************************
349 void halSpiWriteReg(INT8U addr, INT8U value)
350 {
351 1 CSN = 0;
352 1 while (MISO);
353 1 SpiTxRxByte(addr); //写地址
354 1 SpiTxRxByte(value); //写入配置
355 1 CSN = 1;
356 1 }
357
358 //*****************************************************************************************
359 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
360 //输入:地址,写入缓冲区,写入个数
361 //输出:无
362 //功能描述:SPI连续写配置寄存器
363 //*****************************************************************************************
C51 COMPILER V7.06 1100 12/20/2007 00:09:01 PAGE 7
364 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
365 {
366 1 INT8U i, temp;
367 1 temp = addr | WRITE_BURST;
368 1 CSN = 0;
369 1 while (MISO);
370 1 SpiTxRxByte(temp);
371 1 for (i = 0; i < count; i++)
372 1 {
373 2 SpiTxRxByte(buffer[i]);
374 2 }
375 1 CSN = 1;
376 1 }
377
378 //*****************************************************************************************
379 //函数名:void halSpiStrobe(INT8U strobe)
380 //输入:命令
381 //输出:无
382 //功能描述:SPI写命令
383 //*****************************************************************************************
384 void halSpiStrobe(INT8U strobe)
385 {
386 1 CSN = 0;
387 1 while (MISO);
388 1 SpiTxRxByte(strobe); //写入命令
389 1 CSN = 1;
390 1 }
391
392
393
394
395
396 //*****************************************************************************************
397 //函数名:INT8U halSpiReadReg(INT8U addr)
398 //输入:地址
399 //输出:该寄存器的配置字
400 //功能描述:SPI读寄存器
401 //*****************************************************************************************
402 INT8U halSpiReadReg(INT8U addr)
403 {
404 1 INT8U temp, value;
405 1 temp = addr|READ_SINGLE;//读寄存器命令
406 1 CSN = 0;
407 1 while (MISO);
408 1 SpiTxRxByte(temp);
409 1 value = SpiTxRxByte(0);
410 1 CSN = 1;
411 1 return value;
412 1 }
413
414
415 //*****************************************************************************************
416 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
417 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
418 //输出:无
419 //功能描述:SPI连续写配置寄存器
420 //*****************************************************************************************
421 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
422 {
423 1 INT8U i,temp;
424 1 temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
425 1 CSN = 0;
C51 COMPILER V7.06 1100 12/20/2007 00:09:01 PAGE 8
426 1 while (MISO);
427 1 SpiTxRxByte(temp);
428 1 for (i = 0; i < count; i++)
429 1 {
430 2 buffer[i] = SpiTxRxByte(0);
431 2 }
432 1 CSN = 1;
433 1 }
434
435
436 //*****************************************************************************************
437 //函数名:INT8U halSpiReadReg(INT8U addr)
438 //输入:地址
439 //输出:该状态寄存器当前值
440 //功能描述:SPI读状态寄存器
441 //*****************************************************************************************
442 INT8U halSpiReadStatus(INT8U addr)
443 {
444 1 INT8U value,temp;
445 1 temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令
446 1 CSN = 0;
447 1 while (MISO);
448 1 SpiTxRxByte(temp);
449 1 value = SpiTxRxByte(0);
450 1 CSN = 1;
451 1 return value;
452 1 }
453 //*****************************************************************************************
454 //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
455 //输入:无
456 //输出:无
457 //功能描述:配置CC1100的寄存器
458 //*****************************************************************************************
459 void halRfWriteRfSettings(void)
460 {
461 1
462 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);//自已加的
463 1 // Write register settings
464 1 halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);
465 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0);
466 1 halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2);
467 1 halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1);
468 1 halSpiWriteReg(CCxxx0_FREQ0, rfSettings.FREQ0);
469 1 halSpiWriteReg(CCxxx0_MDMCFG4, rfSettings.MDMCFG4);
470 1 halSpiWriteReg(CCxxx0_MDMCFG3, rfSettings.MDMCFG3);
471 1 halSpiWriteReg(CCxxx0_MDMCFG2, rfSettings.MDMCFG2);
472 1 halSpiWriteReg(CCxxx0_MDMCFG1, rfSettings.MDMCFG1);
473 1 halSpiWriteReg(CCxxx0_MDMCFG0, rfSettings.MDMCFG0);
474 1 halSpiWriteReg(CCxxx0_CHANNR, rfSettings.CHANNR);
475 1 halSpiWriteReg(CCxxx0_DEVIATN, rfSettings.DEVIATN);
476 1 halSpiWriteReg(CCxxx0_FREND1, rfSettings.FREND1);
477 1 halSpiWriteReg(CCxxx0_FREND0, rfSettings.FREND0);
478 1 halSpiWriteReg(CCxxx0_MCSM0 , rfSettings.MCSM0 );
479 1 halSpiWriteReg(CCxxx0_FOCCFG, rfSettings.FOCCFG);
480 1 halSpiWriteReg(CCxxx0_BSCFG, rfSettings.BSCFG);
481 1 halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
482 1 halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
483 1 halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
484 1 halSpiWriteReg(CCxxx0_FSCAL3, rfSettings.FSCAL3);
485 1 halSpiWriteReg(CCxxx0_FSCAL2, rfSettings.FSCAL2);
486 1 halSpiWriteReg(CCxxx0_FSCAL1, rfSettings.FSCAL1);
487 1 halSpiWriteReg(CCxxx0_FSCAL0, rfSettings.FSCAL0);
C51 COMPILER V7.06 1100 12/20/2007 00:09:01 PAGE 9
488 1 halSpiWriteReg(CCxxx0_FSTEST, rfSettings.FSTEST);
489 1 halSpiWriteReg(CCxxx0_TEST2, rfSettings.TEST2);
490 1 halSpiWriteReg(CCxxx0_TEST1, rfSettings.TEST1);
491 1 halSpiWriteReg(CCxxx0_TEST0, rfSettings.TEST0);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -