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

📄 nrf2401.lst

📁 NRF2401 模块的C8051收发程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 216   2                              CLK1 = 1;               //*P_IOB_Buffer |= CLK1;
 217   2                              Delay_Us(1);
 218   2                              CLK1 = 0;               //*P_IOB_Buffer &=~CLK1;
 219   2                              uiData = uiData<<1;
 220   2              }
 221   1      }
 222          
 223          //=============================================================
 224          // 语法格式:   void nRF2401_SendByte(unsigned int TxData)
 225          // 实现功能:   将目标地址+字节数据写入nRF2401A
 226          // 参数:               unsigned int TxData: 待发送字节数据
 227          // 返回值:             无
 228          //=============================================================
 229          void nRF2401_SendByte(unsigned int TxData)
 230          {
 231   1              unsigned int i;
 232   1              
 233   1                                      //      *P_IOB_Dir |= DATA;
 234   1              CE = 1;         //*P_IOB_Buffer |= CE;
 235   1                          //Delay_Us(1);                                      //
 236   1              for(i=0; i<AddrByteCnt; i++)
 237   1              {
 238   2                      nRF2401_WriteByte(AddrBuffer[i]);
 239   2              }
 240   1              nRF2401_WriteByte(TxData);
 241   1              CE = 0;         //*P_IOB_Buffer &= ~CE;
C51 COMPILER V8.17   NRF2401                                                               02/02/2009 22:23:53 PAGE 5   

 242   1              DATA = 0;               //*P_IOB_Buffer &= ~DATA;
 243   1              Delay_Us(10);
 244   1      }
 245          
 246          //=============================================================
 247          // 语法格式:   void nRF2401_SendWord(unsigned int TxData)
 248          // 实现功能:   将目标地址+字数据写入nRF2401A
 249          // 参数:               unsigned int TxData: 待发送字数据
 250          // 返回值:             无
 251          //=============================================================
 252          void nRF2401_SendWord(unsigned int TxData)
 253          {
 254   1              unsigned int i;
 255   1              
 256   1                                      //      *P_IOB_Dir |= DATA;
 257   1              CE = 1;         //*P_IOB_Buffer |= CE;
 258   1              Delay_Us(10);                                   //
 259   1              for(i=0; i<AddrByteCnt; i++)
 260   1              {
 261   2                      nRF2401_WriteByte(AddrBuffer[i]);
 262   2              }
 263   1              nRF2401_WriteWord(TxData);
 264   1              CE = 0;         //*P_IOB_Buffer &= ~CE;
 265   1              DATA = 0;       //*P_IOB_Buffer &= ~DATA;
 266   1              Delay_Us(20);
 267   1      }
 268          
 269          //=============================================================
 270          // 语法格式:   void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
 271          // 实现功能:   向nRF2401A发送一个数组的数据(字节方式)
 272          // 参数:               unsigned int *TxData: 待发送数组
 273          //                              unsigned int DataByte:数组的长度                                        
 274          // 返回值:             无
 275          //=============================================================
 276          void nRF2401_SendBuffer_Byte(unsigned int *TxData,unsigned int DataByte)
 277          {
 278   1              unsigned int i;
 279   1              
 280   1                                      //      *P_IOB_Dir |= DATA;
 281   1              CE = 1;         //*P_IOB_Buffer |= CE;
 282   1              Delay_Us(10);                                   //
 283   1              for(i=0; i<AddrByteCnt; i++)
 284   1              {
 285   2                      nRF2401_WriteByte(AddrBuffer[i]);
 286   2              }
 287   1              for(i=0; i<DataByte; i++)
 288   1              {
 289   2                      nRF2401_WriteByte(TxData[i]);
 290   2              }
 291   1              CE = 0;              //*P_IOB_Buffer &= ~CE;
 292   1              DATA = 0;               //*P_IOB_Buffer &= ~DATA;
 293   1              Delay_Us(20);
 294   1      }
 295          
 296          //=============================================================
 297          // 语法格式:   void nRF2401_SendBuffer_Word(unsigned int *TxData,unsigned int DataWord)
 298          // 实现功能:   向nRF2401A发送一个数组的数据(字方式)
 299          // 参数:               unsigned int *TxData: 待发送数组
 300          //                              unsigned int DataWord:数组的长度                                        
 301          // 返回值:             无
 302          //=============================================================
 303          void nRF2401_SendBuffer_Word(unsigned int *TxData,unsigned int DataWord)
C51 COMPILER V8.17   NRF2401                                                               02/02/2009 22:23:53 PAGE 6   

 304          {
 305   1              unsigned int i;
 306   1              
 307   1                                      //      *P_IOB_Dir |= DATA;
 308   1              CE = 1;         //*P_IOB_Buffer |= CE;
 309   1              Delay_Us(10);                                   //
 310   1              for(i=0; i<AddrByteCnt; i++)
 311   1              {
 312   2                      nRF2401_WriteByte(AddrBuffer[i]);
 313   2              }
 314   1              for(i=0; i<DataWord; i++)
 315   1              {
 316   2                      nRF2401_WriteWord(TxData[i]);
 317   2              }
 318   1              CE = 0;         //*P_IOB_Buffer &= ~CE;
 319   1              DATA = 0;               //*P_IOB_Buffer &= ~DATA;
 320   1              Delay_Us(20);
 321   1      }
 322          
 323          //=============================================================
 324          // 语法格式:   unsigned int nRF2401_RxStatus()
 325          // 实现功能:   判断nRF2401A的接收状态
 326          // 参数:               无
 327          // 返回值:             0:      没有接收到数据
 328          //                              1:      已经接收到数据,等待读出
 329          //=============================================================
 330          unsigned int nRF2401_RxStatus()
 331          {
 332   1        //  CE=1;
 333   1               if ( DR1 == 0 )                //if((*P_IOB_Data&DR1) == 0)
 334   1                      return(0);
 335   1              else
 336   1                      return(1);
 337   1      }
 338          
 339          //=============================================================
 340          // 语法格式:   void nRF2401_ReceiveByte(unsigned int *RxData)
 341          // 实现功能:   从nRF2401A读出一个字节的数据
 342          // 参数:               unsigned int *RxData:读出的数据
 343          // 返回值:             无
 344          //=============================================================
 345          void nRF2401_ReceiveByte(unsigned int *RxData)
 346          {
 347   1              unsigned int i = 0,j = 0;
 348   1              unsigned int dat = 0;
 349   1      
 350   1                                              //*P_IOB_Dir &= ~DATA;                  // 输入
 351   1              while(DR1==1)           //while(*P_IOB_Data&DR1)
 352   1              {
 353   2                      dat <<= 1;
 354   2                      CLK1 = 0;               //*P_IOB_Buffer &= ~CLK1;
 355   2              
 356   2                      if(DATA==1)             //if(*P_IOB_Data&DATA)
 357   2                              dat |= 0x01;
 358   2                      i++;
 359   2                      CLK1 = 1;               //*P_IOB_Buffer |= CLK1;
 360   2                  Delay_Us(1);
 361   2                      if(i>7)
 362   2                      {
 363   3                              i = 0;
 364   3                              RxData[j] = dat;
 365   3                              dat = 0;
C51 COMPILER V8.17   NRF2401                                                               02/02/2009 22:23:53 PAGE 7   

 366   3                              j++;
 367   3                      }
 368   2                      CLK1 = 0;               //*P_IOB_Buffer &= ~CLK1;
 369   2              }
 370   1                                                      //*P_IOB_Dir |= DATA;                   // 输出
 371   1      }
 372          
 373          //=============================================================
 374          // 语法格式:   void nRF2401_ReceiveWord(unsigned int *RxData)
 375          // 实现功能:   从nRF2401A读出一个字的数据
 376          // 参数:               unsigned int *RxData:读出的数据
 377          // 返回值:             无
 378          //=============================================================
 379          void nRF2401_ReceiveWord(unsigned int *RxData)
 380          {
 381   1              unsigned int i = 0,j = 0;
 382   1              unsigned int dat = 0;
 383   1      
 384   1              DATA = 0;               //*P_IOB_Dir &= ~DATA;                  // 输入
 385   1          while(DR1 == 1)                     //while(*P_IOB_Data&DR1)
 386   1              {
 387   2                      dat <<= 1;
 388   2                      CLK1 = 0;               //*P_IOB_Buffer &= ~CLK1;
 389   2                      if(DATA==1)        //if(*P_IOB_Data&DATA)
 390   2                              dat |= 0x01;
 391   2                      i++;
 392   2                      CLK1 = 1;               //*P_IOB_Buffer |= CLK1;
 393   2                      Delay_Us(1);
 394   2                      if(i>15)
 395   2                      {
 396   3                              i = 0;
 397   3                              RxData[j] = dat;
 398   3                              dat = 0;
 399   3                              j++;
 400   3                      }
 401   2                      CLK1 = 0;               //*P_IOB_Buffer &= ~CLK1;
 402   2              }
 403   1                                                      //*P_IOB_Dir |= DATA;                   // 输出
 404   1      }
 405          
 406          //=============================================================
 407          // 语法格式:   void Delay_Us(unsigned int TimeCnt)
 408          // 实现功能:   延时(uS)
 409          // 参数:               unsigned int TimeCnt:延时的us数
 410          // 返回值:             无
 411          //=============================================================
 412          void Delay_Us(unsigned int TimeCnt)
 413          {
 414   1              int i;
 415   1                                      //*P_SystemClock = 0x98;
 416   1              for(i = 0; i < TimeCnt; i++);
 417   1          
 418   1              
 419   1      }
 420          
 421          
 422          //******************************** END *************************************


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1045    ----
   CONSTANT SIZE    =     30    ----
C51 COMPILER V8.17   NRF2401                                                               02/02/2009 22:23:53 PAGE 8   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      56
   IDATA SIZE       =     10    ----
   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 + -