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

📄 nrf2401.lst

📁 nrf2401在51上的驱动程序 提供发送与接收函数
💻 LST
📖 第 1 页 / 共 2 页
字号:
 229          //      PWR_UP=0;                       // Set Power_Up low     
 230          //}
 231          /*************************************nRF2401_OFF END ******************************/
 232          /*************************************RXEN_HIGH START ******************************/
 233          void RXEN_HIGH()
 234          {
 235   1              CE=0;                           //Set CE LOW            
 236   1              CS=1;                           //Set CS HIGH--confige mode
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 5   

 237   1              Data=1;                         //Set Data HIGH
 238   1              DoSPIClock();           //Make one SPIClock cycle
 239   1              CS=0;                           //Set CS LOW            
 240   1              CE=1;                           //Set CE HIGH--active mode
 241   1      }
 242          /*************************************RXEN_HIGH  END *******************************/
 243          /*************************************TXEN_LOW  START ******************************/           
 244          void TXEN_LOW()
 245          {
 246   1              CE=0;                           //Set CE LOW                    
 247   1              CS=1;                           //Set CS HIGH--confige mode
 248   1              Data=0;                         //Set Data LOW
 249   1              DoSPIClock();           //Make one SPIClock cycle
 250   1              CS=0;                           //Set CS LOW            
 251   1              CE=1;                           //Set CE HIGH--active mode
 252   1      }
 253          
 254          /*************************************TXEN_LOW   END *******************************/
 255          /*************************************delay_n   START *****************************/    
 256          void delay_n(uchar n)
 257          {
 258   1              uchar  x;
 259   1              uchar  y;
 260   1              for(x=0;x<n;x++)
 261   1                      {
 262   2                      //for(y=0;y<100;y++)
 263   2                      for(y=0;y<130;y++)/////jia
 264   2                      _nop_();
 265   2                      }
 266   1      }
 267          /*************************************delay_n   END *******************************/
 268          /*************************************ShockBurst START *****************************/
 269          void BuildShockWord(Data1)
 270          {
 271   1              TXData[0]=0xcc;         //MSB    ;RX receiver 1 address   High byte
 272   1              TXData[1]=0xcc;         //MSB-1  ;RX receiver 1 address   High byte
 273   1              TXData[2]=0xcc;         //MSB-2  ;RX receiver 1 address   Low byte
 274   1              TXData[3]=0xcc;         //MSB-3  ;RX receiver 1 address   Low  byte
 275   1              TXData[4]=Data1;        //MSB-4  ;Data byte 9
 276   1              TXData[5]=0x02;         //MSB-5  ;Data byte 8
 277   1              TXData[6]=0x03;         //MSB-6  ;Data byte 7
 278   1              TXData[7]=0x04;         //MSB-7  ;Data byte 6
 279   1              TXData[8]=0x05;         //MSB-8  ;Data byte 5
 280   1              TXData[9]=0x06;         //MSB-9  ;Data byte 4
 281   1              TXData[10]=0x07;        //MSB-10 ;Data byte 3
 282   1              TXData[11]=0x08;        //MSB-11 ;Data byte 2
 283   1              TXData[12]=0x09;        //MSB-12 ;Data byte 1
 284   1              TXData[13]=0x10;        //MSB-13 ;Data byte 0   
 285   1      }
 286          /************************************* BuildShockWord END *******************************/
 287          /************************************* ShockBurst   START *******************************/
 288          void ShockBurst()
 289          {
 290   1              CS=0;                                   //Pull CS low
 291   1              CE=1;                                   //Enable CE     active mode
 292   1              for (ByteCnt=0;ByteCnt<14;ByteCnt++)
 293   1              {
 294   2                      tempi=TXData[ByteCnt];
 295   2                      for (BitCnt=0;BitCnt<8;BitCnt++)
 296   2                      {
 297   3                              if (bflag==1)   //Check if first bit is HIGH
 298   3                                      Data=1;         //Set Data high
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 6   

 299   3                              else
 300   3                                      Data=0;         //Set Data low
 301   3                              tempi=tempi<<1; //Left Shift to get next bit
 302   3                              DoSPIClock();
 303   3                              //SendData();   //Call SendData
 304   3                      }
 305   2              }
 306   1              CE=0;                                   //Disable CE (TX Starts!)--standby mode
 307   1              Data=0;                                 //Set Data low
 308   1      }
 309          /************************************* ShockBurst END ***********************************/
 310          /************************************* SendData     START *******************************
 311                          
 312          void SendData()
 313          {
 314                  for (BitCnt=0;BitCnt<8;BitCnt++)
 315                          {
 316                          if (bflag==1)           //Check if first bit is HIGH
 317                                  Data=1;                 //Set Data high
 318                          else
 319                                  Data=0;                 //Set Data low
 320                          tempi=tempi<<1;         //Left Shift to get next bit
 321                          DoSPIClock();           //Call "DoClock" to generate a clock pulse
 322                          }
 323          }
 324          
 325          ************************************** SendData END *************************************/
 326          /************************************* CheckButtons START *******************************/      
 327          /*
 328          void CheckButtons_jia()
 329          {
 330                  uchar xx;
 331                  P0=0xff;
 332                  Temp=P0&0x0f;                   //read key value from port P0
 333                  if (Temp!=0x0f)
 334                  {
 335                          delay_n(10);
 336                          Temp=P0&0x0f;                   //read key value from port P0
 337                          if (Temp!=0x0f)
 338                          {
 339                                  xx=Temp;
 340                                  Temp=Temp<<4;
 341                                  Data1=Temp;             //put the button Data in dada package
 342                                  P0=Data1;               //Turn On the LED
 343                                  TXEN_LOW();             //set TX mode
 344                                  BuildShockWord(Data1);
 345                                  ShockBurst();
 346                                  TxData(xx);
 347                                  delay_n(500);
 348                                  P0=0xff;                //close LED display
 349                                  RXEN_HIGH();
 350          
 351                                  while((P0&0x0f)!=0x0f);
 352                           }
 353                   }
 354          }
 355          */
 356          void CheckButtons()
 357          {
 358   1              uchar xx;
 359   1              P0=0xff;
 360   1              Temp=P0&0xaa;                   //read key value from port P0
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 7   

 361   1              if (Temp!=0xaa)
 362   1              {
 363   2                      delay_n(10);
 364   2                      Temp=P0&0xaa;                   //read key value from port P0
 365   2                      if (Temp!=0xaa)
 366   2                      {
 367   3                              xx=Temp;
 368   3                              Temp=Temp>>1;
 369   3                              Data1=Temp;             //put the button Data in dada package
 370   3                              P0=Data1;               //Turn On the LED
 371   3                              TXEN_LOW();             //set TX mode
 372   3                              BuildShockWord(Data1);
 373   3                              ShockBurst();
 374   3                              TxData(xx);
 375   3                              delay_n(500);
 376   3                              P0=0xff;                //close LED display
 377   3                              RXEN_HIGH();
 378   3      
 379   3                              while((P0&0xaa)!=0xaa);
 380   3                       }
 381   2               }
 382   1      }
 383          /************************************* CheckButtons END *********************************/
 384          /************************************* ReceiveShock START *******************************/
 385          /*
 386          void ReceiveShock_jia()
 387          {
 388                  uchar xx;
 389                  Data=1;                                 //Set Data tri state
 390                  Temp=0;
 391                  for (ByteCnt=0;ByteCnt<10;ByteCnt++)
 392                  {
 393                          for(BitCnt=0;BitCnt<8;BitCnt++)
 394                          {
 395                                  Temp=Temp<<1;   //shift left to receive next bit
 396                                  CLK1=1;                 //set clock high
 397                                  _nop_();        
 398                                  _nop_();                //wait one clk cycle
 399                                  Data=1;
 400                                  if(Data==1)             //check if Data=high            
 401                                          Temp|=0x01;     //yes - set bit high
 402                                  CLK1=0;                 //set clock low
 403                                  _nop_();                //wait one clk cycle
 404                          }
 405                          _nop_();
 406                          RXData[ByteCnt]=Temp;
 407                          DR1=1;
 408                          if(DR1!=1)                      //check if DR1 is not still high
 409                          {               
 410                                  _nop_();
 411                                  P0=RXData[0];   //Turn On the LED
 412                                  xx=(RXData[0]>>4)&0x0f;
 413                                  TxData(xx);
 414                                  delay_n(500);
 415                          P0=0xff;
 416                          }
 417                   }
 418          }
 419          */
 420          void ReceiveShock()
 421          {
 422   1              uchar xx;
C51 COMPILER V7.50   NRF2401                                                               12/08/2007 12:04:07 PAGE 8   

 423   1              Data=1;                                 //Set Data tri state
 424   1              Temp=0;
 425   1              for (ByteCnt=0;ByteCnt<10;ByteCnt++)
 426   1              {
 427   2                      for(BitCnt=0;BitCnt<8;BitCnt++)
 428   2                      {
 429   3                              Temp=Temp<<1;   //shift left to receive next bit
 430   3                              CLK1=1;                 //set clock high
 431   3                              _nop_();        
 432   3                              _nop_();                //wait one clk cycle
 433   3                              Data=1;
 434   3                              if(Data==1)             //check if Data=high            
 435   3                                      Temp|=0x01;     //yes - set bit high
 436   3                              CLK1=0;                 //set clock low
 437   3                              _nop_();                //wait one clk cycle
 438   3                      }
 439   2                      _nop_();
 440   2                      RXData[ByteCnt]=Temp;
 441   2                      DR1=1;
 442   2                      if(DR1!=1)                      //check if DR1 is not still high
 443   2                      {               
 444   3                              _nop_();
 445   3                              P0=RXData[0];   //Turn On the LED
 446   3                              xx=RXData[0]<<1;//
 447   3                              TxData(xx);
 448   3                              delay_n(500);
 449   3                      P0=0xff;
 450   3                      }
 451   2               }
 452   1      }
 453          /************************************* ReceiveShock END *********************************/      


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    588    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     52    ----
   IDATA SIZE       =   ----    ----
   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 + -