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

📄 nrf2401.lst

📁 USB控制器CY7C68013控制无线收发芯片nRF2401进行无线收发的单片机程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 196   1              IOA|=BIT(CE);
 197   1      }
 198          /*************************************CE_High    END *******************************/
 199          /*************************************TXEN_LOW  START ******************************
 200          void CE_Low()
 201          {
 202                  CE=0;
 203          }
 204          *************************************CE_Low     END ********************************/
 205          /*************************************nRF2401_ON START******************************/
 206          void nRF2401_ON()
 207          {
 208   1              IOA|=BIT(PWR_UP);
 209   1      }
 210          /*************************************nRF2401_ON END *******************************/
 211          /*************************************nRF2401_OFF START*****************************/
 212          //void nRF2401_OFF()
 213          //{
 214          //      PWR_UP=0;                       // Set Power_Up low     
 215          //}
 216          /*************************************nRF2401_OFF END ******************************/
 217          /*************************************RXEN_HIGH START ******************************/
 218          void RXEN_HIGH()
 219          {
 220   1                      //Set CE LOW
 221   1              IOA&=NBIT(CE);  
 222   1              IOA|=BIT(CS);
 223   1              IOA|=BIT(DATA);                                                                                                                 
 224   1                      //Set CS HIGH--confige mode
 225   1                                      //Set Data HIGH
 226   1              DoSPIClock();           //Make one SPIClock cycle
 227   1                      //Set CS LOW            
 228   1                              //Set CE HIGH--active mode
 229   1              IOA&=NBIT(CS);
 230   1              IOA|=BIT(CE);
 231   1      }
 232          /*************************************RXEN_HIGH  END *******************************/
 233          /*************************************TXEN_LOW  START ******************************/           
 234          void TXEN_LOW()
 235          {
 236   1                              //Set CE LOW
 237   1              IOA&=NBIT(CE);  
C51 COMPILER V7.50   NRF2401                                                               08/06/2008 16:10:36 PAGE 5   

 238   1              IOA|=BIT(CS);
 239   1              IOA&=NBIT(DATA);                                                                                                                        
 240   1                      //Set CS HIGH--confige mode
 241   1                                      //Set Data LOW
 242   1              DoSPIClock();           //Make one SPIClock cycle
 243   1                      //Set CS LOW            
 244   1                              //Set CE HIGH--active mode
 245   1              IOA&=NBIT(CS);
 246   1              IOA|=BIT(CE);
 247   1      }
 248          
 249          /*************************************TXEN_LOW   END *******************************/
 250          /*************************************delay10   START ******************************/
 251          void Delay10()
 252          {
 253   1              uchar  x;
 254   1              uchar  y;
 255   1              for(x=0;x<10;x++)
 256   1                      {
 257   2                      for(y=0;y<100;y++)
 258   2                      _nop_();
 259   2                      _nop_();
 260   2                      _nop_();
 261   2                      }
 262   1      }
 263          /*************************************delay10    END *******************************/
 264          /*************************************delay100   START *****************************/   
 265          void delay100()
 266          {
 267   1              uchar  x;
 268   1              uchar  y;
 269   1              for(x=0;x<100;x++)
 270   1                      {
 271   2                      for(y=0;y<100;y++)
 272   2                      _nop_();
 273   2                      _nop_();
 274   2              _nop_();
 275   2                      }
 276   1      }
 277          /*************************************delay100   END *******************************/
 278          /*************************************ShockBurst START *****************************/
 279          void BuildShockWord()
 280          {
 281   1              int i;
 282   1              
 283   1              TXData[0]=0xcc;         //MSB    ;RX receiver 1 address   High byte
 284   1              TXData[1]=0xcc;         //MSB-1  ;RX receiver 1 address   High byte
 285   1              TXData[2]=0xcc;         //MSB-2  ;RX receiver 1 address   Low byte
 286   1              TXData[3]=0xcc;         //MSB-3  ;RX receiver 1 address   Low  byte
 287   1              TXData[4]=Data1;        //MSB-4  ;Data byte 9
 288   1              for(i=5;i<30;i++)
 289   1                      TXData[i]=i-3;  
 290   1      }
 291          /************************************* BuildShockWord END *******************************/
 292          /************************************* ShockBurst   START *******************************/
 293          void ShockBurst()
 294          {
 295   1                              //Pull CS low
 296   1              IOA&=NBIT(CS);
 297   1              IOA|=BIT(CE);                           //Enable CE     active mode
 298   1              for (ByteCnt=0;ByteCnt<30;ByteCnt++)
 299   1              {
C51 COMPILER V7.50   NRF2401                                                               08/06/2008 16:10:36 PAGE 6   

 300   2                      tempi=TXData[ByteCnt];
 301   2                      for (BitCnt=0;BitCnt<8;BitCnt++)
 302   2                      {
 303   3                              if (bflag==1)   //Check if first bit is HIGH
 304   3                                              //Set Data high
 305   3                                      IOA|=BIT(DATA);
 306   3                              else
 307   3                                      IOA&=NBIT(DATA);                //Set Data low
 308   3                              tempi=tempi<<1; //Left Shift to get next bit
 309   3                              DoSPIClock();
 310   3                              //SendData();   //Call SendData
 311   3                      }
 312   2              }
 313   1                              //Disable CE (TX Starts!)--standby mode
 314   1              IOA&=NBIT(CE);
 315   1                              //Set Data low
 316   1              IOA&=NBIT(DATA);
 317   1      }
 318          /************************************* ShockBurst END ***********************************/
 319          /************************************* SendData     START *******************************
 320                          
 321          void SendData()
 322          {
 323                  for (BitCnt=0;BitCnt<8;BitCnt++)
 324                          {
 325                          if (bflag==1)           //Check if first bit is HIGH
 326                                  Data=1;                 //Set Data high
 327                          else
 328                                  Data=0;                 //Set Data low
 329                          tempi=tempi<<1;         //Left Shift to get next bit
 330                          DoSPIClock();           //Call "DoClock" to generate a clock pulse
 331                          }
 332          }
 333          
 334          ************************************** SendData END *************************************/
 335          
 336          /************************************* ReceiveShock START *******************************
 337          void ReceiveShock()
 338          {
 339                                  //Set Data tri state
 340                  IOA|=BIT(DATA);                         
 341                  OEA&=NBIT(DATA);
 342                  Temp=0;
 343                  for (ByteCnt=0;ByteCnt<26;ByteCnt++)
 344                  {
 345                          for(BitCnt=0;BitCnt<8;BitCnt++)
 346                          {
 347                                  Temp=Temp<<1;   //shift left to receive next bit
 348                  //set clock high
 349                                  IOA|=BIT(CLK1);
 350                                  _nop_();        
 351                                  _nop_();                //wait one clk cycle
 352                                  _nop_();
 353                  _nop_();
 354                  _nop_();
 355                  _nop_();
 356                                  IOA|=BIT(DATA);
 357                                  if(IOA&BIT(DATA))               //check if Data=high            
 358                                          Temp|=0x01;     //yes - set bit high
 359                                  //set clock low
 360                                  IOA&=NBIT(CLK1);
 361                                  _nop_();                //wait one clk cycle
C51 COMPILER V7.50   NRF2401                                                               08/06/2008 16:10:36 PAGE 7   

 362                                  _nop_();
 363                  _nop_();
 364                  _nop_();
 365                  _nop_();
 366                          }
 367                          _nop_();
 368                          _nop_();
 369                  _nop_();
 370                          RXData[ByteCnt]=Temp;
 371           //       SBUF=Temp;
 372                  TI=0;
 373                          IOA|=BIT(DR1);
 374                          if((IOA&BIT(DR1))==0)                   //check if DR1 is not still high
 375                          {               
 376                                  _nop_();
 377                                  _nop_();
 378                  _nop_();
 379                                  write_leds(RXData[0]);
 380                                  delay100();
 381                                  write_leds(0xff);
 382                          }
 383                   }
 384          
 385                   OEA|=BIT(DATA);
 386          }
 387          ************************************* ReceiveShock END *******************************/ 


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