📄 receive.lst
字号:
428 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL2);//自已加的
429 1 // Write register settings
430 1 halSpiWriteReg(CCxxx0_FSCTRL1, rfSettings.FSCTRL1);
431 1 halSpiWriteReg(CCxxx0_FSCTRL0, rfSettings.FSCTRL0);
432 1 halSpiWriteReg(CCxxx0_FREQ2, rfSettings.FREQ2);
433 1 halSpiWriteReg(CCxxx0_FREQ1, rfSettings.FREQ1);
434 1 halSpiWriteReg(CCxxx0_FREQ0, rfSettings.FREQ0);
435 1 halSpiWriteReg(CCxxx0_MDMCFG4, rfSettings.MDMCFG4);
436 1 halSpiWriteReg(CCxxx0_MDMCFG3, rfSettings.MDMCFG3);
437 1 halSpiWriteReg(CCxxx0_MDMCFG2, rfSettings.MDMCFG2);
438 1 halSpiWriteReg(CCxxx0_MDMCFG1, rfSettings.MDMCFG1);
439 1 halSpiWriteReg(CCxxx0_MDMCFG0, rfSettings.MDMCFG0);
440 1 halSpiWriteReg(CCxxx0_CHANNR, rfSettings.CHANNR);
441 1 halSpiWriteReg(CCxxx0_DEVIATN, rfSettings.DEVIATN);
442 1 halSpiWriteReg(CCxxx0_FREND1, rfSettings.FREND1);
443 1 halSpiWriteReg(CCxxx0_FREND0, rfSettings.FREND0);
444 1 halSpiWriteReg(CCxxx0_MCSM0 , rfSettings.MCSM0 );
445 1 halSpiWriteReg(CCxxx0_FOCCFG, rfSettings.FOCCFG);
446 1 halSpiWriteReg(CCxxx0_BSCFG, rfSettings.BSCFG);
447 1 halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
448 1 halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
449 1 halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
450 1 halSpiWriteReg(CCxxx0_FSCAL3, rfSettings.FSCAL3);
451 1 halSpiWriteReg(CCxxx0_FSCAL2, rfSettings.FSCAL2);
452 1 halSpiWriteReg(CCxxx0_FSCAL1, rfSettings.FSCAL1);
453 1 halSpiWriteReg(CCxxx0_FSCAL0, rfSettings.FSCAL0);
454 1 halSpiWriteReg(CCxxx0_FSTEST, rfSettings.FSTEST);
455 1 halSpiWriteReg(CCxxx0_TEST2, rfSettings.TEST2);
456 1 halSpiWriteReg(CCxxx0_TEST1, rfSettings.TEST1);
457 1 halSpiWriteReg(CCxxx0_TEST0, rfSettings.TEST0);
458 1 halSpiWriteReg(CCxxx0_IOCFG2, rfSettings.IOCFG2);
459 1 halSpiWriteReg(CCxxx0_IOCFG0, rfSettings.IOCFG0);
460 1 halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
461 1 halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
462 1 halSpiWriteReg(CCxxx0_ADDR, rfSettings.ADDR);
463 1 halSpiWriteReg(CCxxx0_PKTLEN, rfSettings.PKTLEN);
464 1 }
465
466
467
468
469
470
471 //*****************************************************************************************
472 //函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size)
473 //输入:发送的缓冲区,发送数据个数
474 //输出:无
475 //功能描述:CC1100发送一组数据
476 //*****************************************************************************************
477 void halRfSendPacket(INT8U *txBuffer, INT8U size)
478 {
479 1 halSpiWriteReg(CCxxx0_TXFIFO, size);
480 1 halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据
481 1
482 1 halSpiStrobe(CCxxx0_STX); //进入发送模式发送数据
483 1
484 1 // Wait for MISO to be set -> sync transmitted
485 1 while (!GDO0);//发送起始位时为1,结束时为0
486 1
487 1 // Wait for MISO to be cleared -> end of packet
488 1 while (GDO0);
489 1 halSpiStrobe(CCxxx0_SFTX);//清洗
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 9
490 1 //halSpiStrobe(CCxxx0_SIDLE);
491 1 }
492
493
494
495 INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length)
496 {
497 1 // INT8U arrRx[67]=0;
498 1 // INT8U i;
499 1 // INT8U leng;
500 1 INT8U status[2];
501 1 INT8U packetLength;
502 1
503 1 halSpiStrobe(CCxxx0_SRX); //进入接收状态
504 1 while (!GDO0);//接收到起始位为1,接收完为0
505 1 while (GDO0);
506 1 if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
507 1 {
508 2 packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
509 2 if (packetLength <= *length) //如果所要的有效数据长度小于等于接收到的数据包的长度
510 2 {
511 3 halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
512 3 *length = packetLength; //把接收数据长度的修改为当前数据的长度
513 3
514 3 // Read the 2 appended status bytes (status[0] = RSSI, status[1] = LQI)
515 3 halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2); //读出CRC校验位
516 3 return (status[1] & CRC_OK); //如果校验成功返回接收成功
517 3 }
518 2 else
519 2 {
520 3 *length = packetLength;
521 3 halSpiStrobe(CCxxx0_SFRX); //清洗接收缓冲区
522 3 return 0;
523 3 }
524 2 }
525 1 else
526 1 return 0;
527 1 }
528
529 /******************************************************************************************
530 *******************************************************************************************
531 ************************************中断服务程序*********************************************
532 *******************************************************************************************
533 ******************************************************************************************/
534 /*void Timer0ISR(void) interrupt 1
535 {
536 EA = 0;
537 TH0+=TIMER0H;
538 TL0+=TIMER0L;
539 TimerCount++;
540 timer[0]++;
541 timer[1]++;
542 EA = 1;
543 }
544 */
545 //void delay1ms(int t)
546 //{
547 // int i,j;
548 // for(i=0;i<t;i++)
549 // for(j=0;j<120;j++)
550 //;
551 //}
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 10
552
553
554
555 /******************************************************************************************
556 *******************************************************************************************
557 ******************************************主程序*******************************************
558 *******************************************************************************************
559 ******************************************************************************************/
560 main(void)
561 {
562 1
563 1 //INT8U code arrTx[60]="where there is a will,there is a way,trust me,I will be ";
564 1
565 1 CpuInit();
566 1 POWER_UP_RESET_CC1100();
567 1
568 1 halRfWriteRfSettings();
569 1 halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
570 1 LED1 = 0;
571 1 delay(60000);
572 1 LED1 = 1;
573 1 delay(30000);
574 1 leng=sizeof arrRx;//判断接收数据的长度
575 1 IT0=1;//falling edge
576 1 EX0=1;
577 1 EA=1;// START INTERUPTER 0
578 1 GDO0=1;//
579 1 while(1);
580 1
581 1 //if(halRfReceivePacket(arrRx,&leng))
582 1 //{
583 1
584 1
585 1
586 1 // LED2 = 0;
587 1 // delay(1000);
588 1 // LED2 = 1;
589 1 // halSpiStrobe(CCxxx0_SFRX);//冲洗rx缓冲
590 1 //for(i=0;i<leng;i++)
591 1 // {
592 1 // SendCh(arrRx[i]);//串口显示
593 1 // }
594 1
595 1 //if(GDO0==1)
596 1 // {
597 1 // EA=1;
598 1 // GDO0=0;//产生下降沿,触发接收中断
599 1 // delay(1000);
600 1 //}
601 1
602 1
603 1
604 1 }
605
606
607
608
609 void Ext0INT() interrupt 0 //interrupt receive data
610 {
611 1
612 1 if(halRfReceivePacket(arrRx,&leng))
613 1 {
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 11
614 2
615 2
616 2
617 2 LED2 = 0;
618 2 delay(1000);
619 2 LED2 = 1;
620 2 halSpiStrobe(CCxxx0_SFRX);//冲洗rx缓冲
621 2 for(i=0;i<leng;i++)
622 2 {
623 3 SendCh(arrRx[i]);//串口显示
624 3 }
625 2
626 2
627 2 }
628 1
629 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1066 ----
CONSTANT SIZE = 8 ----
XDATA SIZE = 104 20
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -