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

📄 receive.lst

📁 cc1100和STC单片机的无限接收器
💻 LST
📖 第 1 页 / 共 3 页
字号:
 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 + -