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

📄 main.lst

📁 cc1100模块51单片机参考程序,个人觉得挺好用.
💻 LST
📖 第 1 页 / 共 3 页
字号:
 216   2              }
 217   1      }
 218          
 219          //*****************************************************************************************
 220          //函数名:SpisendByte(INT8U dat)
 221          //输入:发送的数据
 222          //输出:无
 223          //功能描述:SPI发送一个字节
 224          //*****************************************************************************************
 225          INT8U SpiTxRxByte(INT8U dat)
 226          {
 227   1              INT8U i,temp;
 228   1              temp = 0;
 229   1              
 230   1              SCK = 0;
 231   1              for(i=0; i<8; i++)
 232   1              {
 233   2                      if(dat & 0x80)
 234   2                      {
 235   3                              MOSI = 1;
 236   3                      }
 237   2                      else MOSI = 0;
 238   2                      dat <<= 1;
 239   2      
C51 COMPILER V7.50   MAIN                                                                  11/26/2006 22:02:37 PAGE 5   

 240   2                      SCK = 1; 
 241   2                      _nop_();
 242   2                      _nop_();
 243   2      
 244   2                      temp <<= 1;
 245   2                      if(MISO)temp++; 
 246   2                      SCK = 0;
 247   2                      _nop_();
 248   2                      _nop_();        
 249   2              }
 250   1              return temp;
 251   1      }
 252          
 253          //*****************************************************************************************
 254          //函数名:void RESET_CC1100(void)
 255          //输入:无
 256          //输出:无
 257          //功能描述:复位CC1100
 258          //*****************************************************************************************
 259          void RESET_CC1100(void) 
 260          {
 261   1              CSN = 0; 
 262   1              while (GDO1); 
 263   1              SpiTxRxByte(CCxxx0_SRES);               //写入复位命令
 264   1              while (GDO1); 
 265   1              CSN = 1; 
 266   1      }
 267          
 268          //*****************************************************************************************
 269          //函数名:void POWER_UP_RESET_CC1100(void) 
 270          //输入:无
 271          //输出:无
 272          //功能描述:上电复位CC1100
 273          //*****************************************************************************************
 274          void POWER_UP_RESET_CC1100(void) 
 275          {
 276   1              CSN = 1; 
 277   1              halWait(1); 
 278   1              CSN = 0; 
 279   1              halWait(1); 
 280   1              CSN = 1; 
 281   1              halWait(41); 
 282   1              RESET_CC1100();                 //复位CC1100
 283   1      }
 284          
 285          //*****************************************************************************************
 286          //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 287          //输入:地址和配置字
 288          //输出:无
 289          //功能描述:SPI写寄存器
 290          //*****************************************************************************************
 291          void halSpiWriteReg(INT8U addr, INT8U value) 
 292          {
 293   1          CSN = 0;
 294   1          while (GDO1);
 295   1          SpiTxRxByte(addr);          //写地址
 296   1          SpiTxRxByte(value);         //写入配置
 297   1          CSN = 1;
 298   1      }
 299          
 300          //*****************************************************************************************
 301          //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
C51 COMPILER V7.50   MAIN                                                                  11/26/2006 22:02:37 PAGE 6   

 302          //输入:地址,写入缓冲区,写入个数
 303          //输出:无
 304          //功能描述:SPI连续写配置寄存器
 305          //*****************************************************************************************
 306          void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 307          {
 308   1          INT8U i, temp;
 309   1              temp = addr | WRITE_BURST;
 310   1          CSN = 0;
 311   1          while (GDO1);
 312   1          SpiTxRxByte(temp);
 313   1          for (i = 0; i < count; i++)
 314   1              {
 315   2              SpiTxRxByte(buffer[i]);
 316   2          }
 317   1          CSN = 1;
 318   1      }
 319          
 320          //*****************************************************************************************
 321          //函数名:void halSpiStrobe(INT8U strobe)
 322          //输入:命令
 323          //输出:无
 324          //功能描述:SPI写命令
 325          //*****************************************************************************************
 326          void halSpiStrobe(INT8U strobe) 
 327          {
 328   1          CSN = 0;
 329   1          while (GDO1);
 330   1          SpiTxRxByte(strobe);                //写入命令
 331   1          CSN = 1;
 332   1      }
 333          
 334          
 335          
 336          
 337          
 338          //*****************************************************************************************
 339          //函数名:INT8U halSpiReadReg(INT8U addr)
 340          //输入:地址
 341          //输出:该寄存器的配置字
 342          //功能描述:SPI读寄存器
 343          //*****************************************************************************************
 344          INT8U halSpiReadReg(INT8U addr) 
 345          {
 346   1              INT8U temp, value;
 347   1          temp = addr|READ_SINGLE;//读寄存器命令
 348   1              CSN = 0;
 349   1              while (GDO1);
 350   1              SpiTxRxByte(temp);
 351   1              value = SpiTxRxByte(0);
 352   1              CSN = 1;
 353   1              return value;
 354   1      }
 355          
 356          
 357          //*****************************************************************************************
 358          //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 359          //输入:地址,读出数据后暂存的缓冲区,读出配置个数
 360          //输出:无
 361          //功能描述:SPI连续写配置寄存器
 362          //*****************************************************************************************
 363          void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
C51 COMPILER V7.50   MAIN                                                                  11/26/2006 22:02:37 PAGE 7   

 364          {
 365   1          INT8U i,temp;
 366   1              temp = addr | READ_BURST;               //写入要读的配置寄存器地址和读命令
 367   1          CSN = 0;
 368   1          while (GDO1);
 369   1              SpiTxRxByte(temp);   
 370   1          for (i = 0; i < count; i++) 
 371   1              {
 372   2              buffer[i] = SpiTxRxByte(0);
 373   2          }
 374   1          CSN = 1;
 375   1      }
 376          
 377          
 378          //*****************************************************************************************
 379          //函数名:INT8U halSpiReadReg(INT8U addr)
 380          //输入:地址
 381          //输出:该状态寄存器当前值
 382          //功能描述:SPI读状态寄存器
 383          //*****************************************************************************************
 384          INT8U halSpiReadStatus(INT8U addr) 
 385          {
 386   1          INT8U value,temp;
 387   1              temp = addr | READ_BURST;               //写入要读的状态寄存器的地址同时写入读命令
 388   1          CSN = 0;
 389   1          while (GDO1);
 390   1          SpiTxRxByte(temp);
 391   1              value = SpiTxRxByte(0);
 392   1              CSN = 1;
 393   1              return value;
 394   1      }
 395          
 396          
 397          //*****************************************************************************************
 398          //函数名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
 399          //输入:无
 400          //输出:无
 401          //功能描述:配置CC1100的寄存器
 402          //*****************************************************************************************
 403          void halRfWriteRfSettings(void) 
 404          {
 405   1              halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL2);//自已加的
 406   1          // Write register settings
 407   1          halSpiWriteReg(CCxxx0_FSCTRL1,  rfSettings.FSCTRL1);
 408   1          halSpiWriteReg(CCxxx0_FSCTRL0,  rfSettings.FSCTRL0);
 409   1          halSpiWriteReg(CCxxx0_FREQ2,    rfSettings.FREQ2);
 410   1          halSpiWriteReg(CCxxx0_FREQ1,    rfSettings.FREQ1);
 411   1          halSpiWriteReg(CCxxx0_FREQ0,    rfSettings.FREQ0);
 412   1          halSpiWriteReg(CCxxx0_MDMCFG4,  rfSettings.MDMCFG4);
 413   1          halSpiWriteReg(CCxxx0_MDMCFG3,  rfSettings.MDMCFG3);
 414   1          halSpiWriteReg(CCxxx0_MDMCFG2,  rfSettings.MDMCFG2);
 415   1          halSpiWriteReg(CCxxx0_MDMCFG1,  rfSettings.MDMCFG1);
 416   1          halSpiWriteReg(CCxxx0_MDMCFG0,  rfSettings.MDMCFG0);
 417   1          halSpiWriteReg(CCxxx0_CHANNR,   rfSettings.CHANNR);
 418   1          halSpiWriteReg(CCxxx0_DEVIATN,  rfSettings.DEVIATN);
 419   1          halSpiWriteReg(CCxxx0_FREND1,   rfSettings.FREND1);
 420   1          halSpiWriteReg(CCxxx0_FREND0,   rfSettings.FREND0);
 421   1          halSpiWriteReg(CCxxx0_MCSM0 ,   rfSettings.MCSM0 );
 422   1          halSpiWriteReg(CCxxx0_FOCCFG,   rfSettings.FOCCFG);
 423   1          halSpiWriteReg(CCxxx0_BSCFG,    rfSettings.BSCFG);
 424   1          halSpiWriteReg(CCxxx0_AGCCTRL2, rfSettings.AGCCTRL2);
 425   1              halSpiWriteReg(CCxxx0_AGCCTRL1, rfSettings.AGCCTRL1);
C51 COMPILER V7.50   MAIN                                                                  11/26/2006 22:02:37 PAGE 8   

 426   1          halSpiWriteReg(CCxxx0_AGCCTRL0, rfSettings.AGCCTRL0);
 427   1          halSpiWriteReg(CCxxx0_FSCAL3,   rfSettings.FSCAL3);
 428   1              halSpiWriteReg(CCxxx0_FSCAL2,   rfSettings.FSCAL2);
 429   1              halSpiWriteReg(CCxxx0_FSCAL1,   rfSettings.FSCAL1);
 430   1          halSpiWriteReg(CCxxx0_FSCAL0,   rfSettings.FSCAL0);
 431   1          halSpiWriteReg(CCxxx0_FSTEST,   rfSettings.FSTEST);
 432   1          halSpiWriteReg(CCxxx0_TEST2,    rfSettings.TEST2);
 433   1          halSpiWriteReg(CCxxx0_TEST1,    rfSettings.TEST1);
 434   1          halSpiWriteReg(CCxxx0_TEST0,    rfSettings.TEST0);
 435   1          halSpiWriteReg(CCxxx0_IOCFG2,   rfSettings.IOCFG2);
 436   1          halSpiWriteReg(CCxxx0_IOCFG0,   rfSettings.IOCFG0);    
 437   1          halSpiWriteReg(CCxxx0_PKTCTRL1, rfSettings.PKTCTRL1);
 438   1          halSpiWriteReg(CCxxx0_PKTCTRL0, rfSettings.PKTCTRL0);
 439   1          halSpiWriteReg(CCxxx0_ADDR,     rfSettings.ADDR);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -