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

📄 1100.lst

📁 无线模块cc1101学习资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
 412          //*****************************************************************************************
 413          //函数名:INT8U halSpiReadReg(INT8U addr)
 414          //输入:地址
 415          //输出:该状态寄存器当前值
 416          //功能描述:SPI读状态寄存器
 417          //*****************************************************************************************
 418          INT8U halSpiReadStatus(INT8U addr) 
 419          {
 420   1          INT8U value,temp;
 421   1              temp = addr | READ_BURST;               //写入要读的状态寄存器的地址同时写入读命令
 422   1          CSN = 0;
 423   1          while (MISO);
 424   1          SpiTxRxByte(temp);
 425   1              value = SpiTxRxByte(0);
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:47:21 PAGE 8   

 426   1              CSN = 1;
 427   1              return value;
 428   1      }
 429          //*****************************************************************************************
 430          //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
 431          //输入:无
 432          //输出:无
 433          //功能描述:配置CC1100的寄存器
 434          //*****************************************************************************************
 435          void halRfWriteRfSettings(void) 
 436          {
 437   1      
 438   1              halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
 439   1          // Write register settings
 440   1          halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
 441   1          halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
 442   1          halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
 443   1          halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
 444   1          halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
 445   1          halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
 446   1          halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
 447   1          halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
 448   1          halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
 449   1          halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
 450   1          halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
 451   1          halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
 452   1          halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
 453   1          halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
 454   1          halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
 455   1          halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
 456   1          halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
 457   1          halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
 458   1              halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
 459   1          halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
 460   1          halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
 461   1              halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
 462   1              halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
 463   1          halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
 464   1          halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
 465   1          halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
 466   1          halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
 467   1          halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
 468   1          halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
 469   1          halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);    
 470   1          halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
 471   1          halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
 472   1          halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);
 473   1          halSpiWriteReg(CCxxx0_PKTLEN,   rfSettings.PKTLEN);
 474   1      }
 475          //*****************************************************************************************
 476          //函数名:void halRfSendPacket(INT8U *txBuffer, INT8U size)
 477          //输入:发送的缓冲区,发送数据个数
 478          //输出:无
 479          //功能描述:CC1100发送一组数据
 480          //*****************************************************************************************
 481          
 482          void halRfSendPacket(INT8U *txBuffer, INT8U size) 
 483          {
 484   1              halSpiWriteReg(CCxxx0_TXFIFO, size);
 485   1          halSpiWriteBurstReg(CCxxx0_TXFIFO, txBuffer, size); //写入要发送的数据
 486   1      
 487   1          halSpiStrobe(CCxxx0_STX);           //进入发送模式发送数据
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:47:21 PAGE 9   

 488   1      
 489   1          // Wait for GDO0 to be set -> sync transmitted
 490   1          while (!GDO0);
 491   1          // Wait for GDO0 to be cleared -> end of packet
 492   1          while (GDO0);
 493   1              halSpiStrobe(CCxxx0_SFTX);
 494   1      }
 495          //*****************************************************************************************
 496          void setRxMode(void)
 497          {
 498   1          halSpiStrobe(CCxxx0_SRX);           //进入接收状态
 499   1      }
 500          //*****************************************************************************************
 501          INT8U halRfReceivePacket(INT8U *rxBuffer, INT8U *length) 
 502          {
 503   1          INT8U status[2];
 504   1          INT8U packetLength;
 505   1              INT8U i=(*length)*4;  // 具体多少要根据datarate和length来决定
 506   1      
 507   1          halSpiStrobe(CCxxx0_SRX);           //进入接收状态
 508   1              delay(2);
 509   1              while (GDO0)
 510   1              {
 511   2                      delay(2);
 512   2                      --i;
 513   2                      if(i<1)
 514   2                         return 0;        
 515   2              }        
 516   1          if ((halSpiReadStatus(CCxxx0_RXBYTES) & BYTES_IN_RXFIFO)) //如果接的字节数不为0
 517   1              {
 518   2              packetLength = halSpiReadReg(CCxxx0_RXFIFO);//读出第一个字节,此字节为该帧数据长度
 519   2              if (packetLength <= *length)            //如果所要的有效数据长度小于等于接收到的数据包的长度
 520   2                      {
 521   3                  halSpiReadBurstReg(CCxxx0_RXFIFO, rxBuffer, packetLength); //读出所有接收到的数据
 522   3                  *length = packetLength;                             //把接收数据长度的修改为当前数据的长度
 523   3                  halSpiReadBurstReg(CCxxx0_RXFIFO, status, 2);       //读出CRC校验位
 524   3                              halSpiStrobe(CCxxx0_SFRX);              //清洗接收缓冲区
 525   3                  return (status[1] & CRC_OK);                        //如果校验成功返回接收成功
 526   3              }
 527   2                       else 
 528   2                      {
 529   3                  *length = packetLength;
 530   3                  halSpiStrobe(CCxxx0_SFRX);          //清洗接收缓冲区
 531   3                  return 0;
 532   3              }
 533   2          } 
 534   1              else
 535   1              return 0;
 536   1      }
 537          //*****************************************************************************************
 538          void disdignit()
 539          {
 540   1                              P0=seg[qian];
 541   1                              led3=0;
 542   1                              delay(80);
 543   1                              led3=1;
 544   1      //-------------------------------------------------------------
 545   1                              P0=seg[ge];
 546   1                              led0=0;
 547   1                              delay(80);
 548   1                              led0=1;
 549   1      //-----------------------------------------------------------
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:47:21 PAGE 10  

 550   1                              P0=seg[shi];
 551   1                              led1=0;
 552   1                              delay(80);
 553   1                              led1=1;
 554   1      //-----------------------------------------------
 555   1                              P0=seg[bai];
 556   1                              led2=0;
 557   1                              delay(80);
 558   1                              led2=1;
 559   1      }
 560          //*****************************************************************************************
 561          void main(void)
 562          {
 563   1              INT8U leng =8;
 564   1              INT8U tf =0;
 565   1              INT8U TxBuf[8]={0};                      // 8字节, 如果需要更长的数据包,请正确设置
 566   1              INT8U RxBuf[8]={0};     
 567   1              CpuInit();
 568   1              POWER_UP_RESET_CC1100();        //1100复位
 569   1              halRfWriteRfSettings();         //寄存其配置
 570   1              halSpiWriteBurstReg(CCxxx0_PATABLE, PaTabel, 8);
 571   1              led1 = 1;
 572   1              led2 = 1;
 573   1              led3 = 1;
 574   1              TxBuf[1] = 1 ;
 575   1              TxBuf[2] = 1 ;
 576   1              halRfSendPacket(TxBuf,8);       // Transmit Tx buffer data
 577   1              delay(6000);
 578   1              while(1)
 579   1              {
 580   2                      if(halRfReceivePacket(RxBuf,&leng))
 581   2                      {
 582   3                                                      
 583   3                              if(     RxBuf[0]==0x01)
 584   3                              {               
 585   4                              count0=count0+2;
 586   4                              }
 587   3                              if(     RxBuf[0]==0x11)
 588   3                              {
 589   4                              count1=count1+3;
 590   4                              }
 591   3                      qian=count0/10;
 592   3                      bai=count0%10;
 593   3                      shi=count1/10;
 594   3                      ge=count1%10;
 595   3                      if(count0>=99)count0=0;
 596   3                      delay(1000);
 597   3                      }
 598   2      disdignit();
 599   2              }
 600   1              
 601   1      }
 602          
 603          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1076    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     65      38
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:47:21 PAGE 11  

   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 + -