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

📄 cc1100_tx.lst

📁 无线通信IC CC1100通过51控制数据发送
💻 LST
📖 第 1 页 / 共 2 页
字号:
 199          }
 200          */
 201          /****************************************************************
             -*************************
 202          //函数名:SendCh(ch)
 203          //输入:无
 204          //输出:无
 205          //功能描述:串口发送一个字符
 206          /****************************************************************
             -*************************/
 207          void SendCh(INT8U ch)
 208          {
 209   1              SBUF = ch;
 210   1              while(!TI);
 211   1              TI = 0;
 212   1      }
 213          
 214          
 215          /****************************************************************
             -*************************
 216          //函数名:void SendStr(INT8U *arr)
 217          //输入:发送的字符串
 218          //输出:无
 219          //功能描述:发送一个字符串
 220          /****************************************************************
             -*************************/
 221          void SendStr(INT8U *arr)
 222          {
 223   1              INT8U i;
C51 COMPILER V7.06   CC1100_TX                    03/30/2006 10:59:06 PAGE 5   

 224   1              
 225   1              i = 0;
 226   1              while(arr[i] != '\0')
 227   1              {
 228   2                      SendCh(arr[i]);
 229   2                      i++;
 230   2              }
 231   1      }
 232          
 233          //***************************************************************
             -**************************
 234          //函数名:SpisendByte(INT8U dat)
 235          //输入:发送的数据
 236          //输出:无
 237          //功能描述:SPI发送一个字节
 238          //***************************************************************
             -**************************
 239          INT8U SpiTxRxByte(INT8U dat)
 240          {
 241   1              INT8U i,temp;
 242   1              temp = 0;
 243   1              
 244   1              SCK = 0;
 245   1              for(i=0; i<8; i++)
 246   1              {
 247   2                      if(dat & 0x80)
 248   2                      {
 249   3                              MOSI = 1;
 250   3                      }
 251   2                      else MOSI = 0;
 252   2                      dat <<= 1;
 253   2      
 254   2                      SCK = 1; 
 255   2                      _nop_();
 256   2                      _nop_();
 257   2      
 258   2                      temp <<= 1;
 259   2                      if(MISO)temp++; 
 260   2                      SCK = 0;
 261   2                      _nop_();
 262   2                      _nop_();        
 263   2              }
 264   1              return temp;
 265   1      }
 266          
 267          //***************************************************************
             -**************************
 268          //函数名:void RESET_CC1100(void)
 269          //输入:无
 270          //输出:无
 271          //功能描述:复位CC1100
 272          //***************************************************************
             -**************************
 273          void RESET_CC1100(void) 
 274          {
 275   1              CSN = 0; 
 276   1              while (GDO1); 
 277   1              SpiTxRxByte(CCxxx0_SRES);               //写入复位命令
 278   1              while (GDO1); 
 279   1              CSN = 1; 
 280   1      }
 281          
 282          //***************************************************************
             -**************************
C51 COMPILER V7.06   CC1100_TX                    03/30/2006 10:59:06 PAGE 6   

 283          //函数名:void POWER_UP_RESET_CC1100(void) 
 284          //输入:无
 285          //输出:无
 286          //功能描述:上电复位CC1100
 287          //***************************************************************
             -**************************
 288          void POWER_UP_RESET_CC1100(void) 
 289          {
 290   1              CSN = 1; 
 291   1              halWait(1); 
 292   1              CSN = 0; 
 293   1              halWait(1); 
 294   1              CSN = 1; 
 295   1              halWait(41); 
 296   1              RESET_CC1100();                 //复位CC1100
 297   1      }
 298          
 299          //***************************************************************
             -**************************
 300          //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
 301          //输入:地址和配置字
 302          //输出:无
 303          //功能描述:SPI写寄存器
 304          //***************************************************************
             -**************************
 305          void halSpiWriteReg(INT8U addr, INT8U value) 
 306          {
 307   1          CSN = 0;
 308   1          while (GDO1);
 309   1          SpiTxRxByte(addr);          //写地址
 310   1          SpiTxRxByte(value);         //写入配置
 311   1          CSN = 1;
 312   1      }
 313          
 314          //***************************************************************
             -**************************
 315          //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT
             -8U count)
 316          //输入:地址,写入缓冲区,写入个数
 317          //输出:无
 318          //功能描述:SPI连续写配置寄存器
 319          //***************************************************************
             -**************************
 320          void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 321          {
 322   1          INT8U i, temp;
 323   1              temp = addr | WRITE_BURST;
 324   1          CSN = 0;
 325   1          while (GDO1);
 326   1          SpiTxRxByte(temp);
 327   1          for (i = 0; i < count; i++)
 328   1              {
 329   2              SpiTxRxByte(buffer[i]);
 330   2          }
 331   1          CSN = 1;
 332   1      }
 333          
 334          //***************************************************************
             -**************************
 335          //函数名:void halSpiStrobe(INT8U strobe)
 336          //输入:命令
 337          //输出:无
 338          //功能描述:SPI写命令
 339          //***************************************************************
C51 COMPILER V7.06   CC1100_TX                    03/30/2006 10:59:06 PAGE 7   

             -**************************
 340          void halSpiStrobe(INT8U strobe) 
 341          {
 342   1          CSN = 0;
 343   1          while (GDO1);
 344   1          SpiTxRxByte(strobe);                //写入命令
 345   1          CSN = 1;
 346   1      }
 347          
 348          
 349          
 350          
 351          
 352          //***************************************************************
             -**************************
 353          //函数名:INT8U halSpiReadReg(INT8U addr)
 354          //输入:地址
 355          //输出:该寄存器的配置字
 356          //功能描述:SPI读寄存器
 357          //***************************************************************
             -**************************
 358          INT8U halSpiReadReg(INT8U addr) 
 359          {
 360   1              INT8U temp, value;
 361   1          temp = addr|READ_SINGLE;//读寄存器命令
 362   1              CSN = 0;
 363   1              while (GDO1);
 364   1              SpiTxRxByte(temp);
 365   1              value = SpiTxRxByte(0);
 366   1              CSN = 1;
 367   1              return value;
 368   1      }
 369          
 370          
 371          //***************************************************************
             -**************************
 372          //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8
             -U count)
 373          //输入:地址,读出数据后暂存的缓冲区,读出配置个数
 374          //输出:无
 375          //功能描述:SPI连续写配置寄存器
 376          //***************************************************************
             -**************************
 377          void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count) 
 378          {
 379   1          INT8U i,temp;
 380   1              temp = addr | READ_BURST;               //写入要读的配置寄存器地址和读命令
 381   1          CSN = 0;
 382   1          while (GDO1);
 383   1              SpiTxRxByte(temp);   
 384   1          for (i = 0; i < count; i++) 
 385   1              {
 386   2              buffer[i] = SpiTxRxByte(0);
 387   2          }
 388   1          CSN = 1;
 389   1      }
 390          
 391          
 392          //***************************************************************
             -**************************
 393          //函数名:INT8U halSpiReadReg(INT8U addr)
 394          //输入:地址
 395          //输出:该状态寄存器当前值
 396          //功能描述:SPI读状态寄存器
C51 COMPILER V7.06   CC1100_TX                    03/30/2006 10:59:06 PAGE 8   

 397          //***************************************************************
             -**************************
 398          INT8U halSpiReadStatus(INT8U addr) 
 399          {
 400   1          INT8U value,temp;
 401   1              temp = addr | READ_BURST;               //写入要读的状态寄存器的地址同时写入

⌨️ 快捷键说明

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