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

📄 +

📁 基于AT89S52单片机的nRF2401无线模块开发板
💻
📖 第 1 页 / 共 2 页
字号:
 234   1      }
 235          /*************************************nRF2401_ON END *******************************/
 236          /*************************************nRF2401_OFF START*****************************/
C51 COMPILER V7.06   NRF2401                                                               04/17/2007 19:36:47 PAGE 5   

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

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

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

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