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

📄 nrf2401.lst

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

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

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

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


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1036    ----
   CONSTANT SIZE    =     30    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      56
   IDATA SIZE       =     12    ----
C51 COMPILER V8.17   NRF2401                                                               02/02/2009 22:22:01 PAGE 8   

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