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

📄 1100.lst

📁 无线模块cc1101学习资料
💻 LST
📖 第 1 页 / 共 3 页
字号:
 217              0x06,   // IOCFG0D   GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed p
             -seudo register explanation.
 218          
 219              0x04,   // PKTCTRL1  Packet automation control.
 220              0x05,   // PKTCTRL0  Packet automation control.
 221              0x00,   // ADDR      Device address.
 222              0x0c    // PKTLEN    Packet length.
 223          };
 224          //*****************************************************************************************
 225          //函数名:delay(unsigned int s)
 226          //输入:时间
 227          //输出:无
 228          //功能描述:普通廷时,内部用
 229          //*****************************************************************************************             
 230          static void delay(unsigned int s)
 231          {
 232   1              unsigned int i;
 233   1              for(i=0; i<s; i++);
 234   1              for(i=0; i<s; i++);
 235   1      }
 236          
 237          //*****************************************************************************************
 238           void delay1(   INT16U i)
 239          {
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:50:10 PAGE 5   

 240   1              for(;i>0;i--);   
 241   1      }
 242          void halWait(INT16U timeout) {
 243   1          do {
 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                      _nop_();
 254   2                      _nop_();
 255   2                      _nop_();
 256   2                      _nop_();
 257   2                      _nop_();
 258   2                      _nop_(); 
 259   2          } while (--timeout);
 260   1      }
 261          
 262          
 263          void SpiInit(void)
 264          {
 265   1              CSN=0;
 266   1              SCK=0;
 267   1              CSN=1;
 268   1      }
 269          
 270          /*****************************************************************************************
 271          //函数名:CpuInit()
 272          //输入:无
 273          //输出:无
 274          //功能描述:SPI初始化程序
 275          /*****************************************************************************************/
 276          void CpuInit(void)
 277          {
 278   1              SpiInit();
 279   1              delay(5000);
 280   1      }
 281                  
 282          
 283          //*****************************************************************************************
 284          //函数名:SpisendByte(INT8U dat)
 285          //输入:发送的数据
 286          //输出:无
 287          //功能描述:SPI发送一个字节
 288          //*****************************************************************************************
 289          INT8U SpiTxRxByte(INT8U dat)
 290          {
 291   1              INT8U i,temp;
 292   1              temp = 0;
 293   1              
 294   1              SCK = 0;
 295   1              for(i=0; i<8; i++)
 296   1              {
 297   2                      if(dat & 0x80)
 298   2                      {
 299   3                              MOSI = 1;
 300   3                      }
 301   2                      else MOSI = 0;
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:50:10 PAGE 6   

 302   2                      dat <<= 1;
 303   2      
 304   2                      SCK = 1; 
 305   2                      _nop_();
 306   2                      _nop_();
 307   2      
 308   2                      temp <<= 1;
 309   2                      if(MISO)temp++; 
 310   2                      SCK = 0;
 311   2                      _nop_();
 312   2                      _nop_();        
 313   2              }
 314   1              return temp;
 315   1      }
 316          
 317          //*****************************************************************************************
 318          //函数名:void RESET_CC1100(void)
 319          //输入:无
 320          //输出:无
 321          //功能描述:复位CC1100
 322          //*****************************************************************************************
 323          void RESET_CC1100(void) 
 324          {
 325   1              CSN = 0; 
 326   1              while (MISO);
 327   1          SpiTxRxByte(CCxxx0_SRES);           //写入复位命令
 328   1              while (MISO); 
 329   1          CSN = 1; 
 330   1      }
 331          
 332          //*****************************************************************************************
 333          //函数名:void POWER_UP_RESET_CC1100(void) 
 334          //输入:无
 335          //输出:无
 336          //功能描述:上电复位CC1100
 337          //*****************************************************************************************
 338          void POWER_UP_RESET_CC1100(void) 
 339          {
 340   1              CSN = 1; 
 341   1              halWait(1); 
 342   1              CSN = 0; 
 343   1              halWait(1); 
 344   1              CSN = 1; 
 345   1              halWait(41); 
 346   1              RESET_CC1100();                 //复位CC1100
 347   1      }
 348          
 349          //*****************************************************************************************
 350          //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 351          //输入:地址和配置字
 352          //输出:无
 353          //功能描述:SPI写寄存器
 354          //*****************************************************************************************
 355          void halSpiWriteReg(INT8U addr, INT8U value) 
 356          {
 357   1          CSN = 0;
 358   1          while (MISO);
 359   1          SpiTxRxByte(addr);          //写地址
 360   1          SpiTxRxByte(value);         //写入配置
 361   1          CSN = 1;
 362   1      }
 363          
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:50:10 PAGE 7   

 364          //*****************************************************************************************
 365          //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 366          //输入:地址,写入缓冲区,写入个数
 367          //输出:无
 368          //功能描述:SPI连续写配置寄存器
 369          //*****************************************************************************************
 370          void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 371          {
 372   1          INT8U i, temp;
 373   1              temp = addr | WRITE_BURST;
 374   1          CSN = 0;
 375   1          while (MISO);
 376   1          SpiTxRxByte(temp);
 377   1          for (i = 0; i < count; i++)
 378   1              {
 379   2              SpiTxRxByte(buffer[i]);
 380   2          }
 381   1          CSN = 1;
 382   1      }
 383          
 384          //*****************************************************************************************
 385          //函数名:void halSpiStrobe(INT8U strobe)
 386          //输入:命令
 387          //输出:无
 388          //功能描述:SPI写命令
 389          //*****************************************************************************************
 390          void halSpiStrobe(INT8U strobe) 
 391          {
 392   1          CSN = 0;
 393   1          while (MISO);
 394   1          SpiTxRxByte(strobe);                //写入命令
 395   1          CSN = 1;
 396   1      }
 397          
 398          
 399          
 400          
 401          
 402          //*****************************************************************************************
 403          //函数名:INT8U halSpiReadReg(INT8U addr)
 404          //输入:地址
 405          //输出:该寄存器的配置字
 406          //功能描述:SPI读寄存器
 407          //*****************************************************************************************
 408          INT8U halSpiReadReg(INT8U addr) 
 409          {
 410   1              INT8U temp, value;
 411   1          temp = addr|READ_SINGLE;//读寄存器命令
 412   1              CSN = 0;
 413   1              while (MISO);
 414   1              SpiTxRxByte(temp);
 415   1              value = SpiTxRxByte(0);
 416   1              CSN = 1;
 417   1              return value;
 418   1      }
 419          
 420          
 421          //*****************************************************************************************
 422          //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
 423          //输入:地址,读出数据后暂存的缓冲区,读出配置个数
 424          //输出:无
 425          //功能描述:SPI连续写配置寄存器
C51 COMPILER V7.06   1100                                                                  12/20/2007 00:50:10 PAGE 8   

 426          //*****************************************************************************************
 427          void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 428          {
 429   1          INT8U i,temp;
 430   1              temp = addr | READ_BURST;               //写入要读的配置寄存器地址和读命令
 431   1          CSN = 0;
 432   1          while (MISO);
 433   1              SpiTxRxByte(temp);   
 434   1          for (i = 0; i < count; i++) 
 435   1              {
 436   2              buffer[i] = SpiTxRxByte(0);
 437   2          }
 438   1          CSN = 1;
 439   1      }

⌨️ 快捷键说明

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