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

📄 nrf2401.lst

📁 nrf2401无线收发芯片的例程
💻 LST
📖 第 1 页 / 共 2 页
字号:
 185          /*************************************nRF2401_OFF START*****************************/
 186          //void nRF2401_OFF()
 187          //{
 188          //      PWR_UP=0;                       // Set Power_Up low     
 189          //}
 190          /*************************************nRF2401_OFF END ******************************/
 191          /*************************************RXEN_HIGH START ******************************/
 192          void RXEN_HIGH()
 193          {
 194   1              CE=0;                           //Set CE LOW            
 195   1              CS=1;                           //Set CS HIGH--confige mode
 196   1              Data=1;                         //Set Data HIGH
 197   1              DoSPIClock();           //Make one SPIClock cycle
 198   1              CS=0;                           //Set CS LOW            
 199   1              CE=1;                           //Set CE HIGH--active mode
 200   1      }
 201          /*************************************RXEN_HIGH  END *******************************/
 202          /*************************************TXEN_LOW  START ******************************/           
 203          void TXEN_LOW()
 204          {
 205   1              CE=0;                           //Set CE LOW                    
 206   1              CS=1;                           //Set CS HIGH--confige mode
 207   1              Data=0;                         //Set Data LOW
 208   1              DoSPIClock();           //Make one SPIClock cycle
 209   1              CS=0;                           //Set CS LOW            
 210   1              CE=1;                           //Set CE HIGH--active mode
 211   1      }
 212          
 213          /*************************************TXEN_LOW   END *******************************/
 214          /*************************************delay10   START ******************************/
 215          void Delay10()
 216          {
 217   1              uchar  x;
 218   1              uchar  y;
 219   1              for(x=0;x<10;x++)
 220   1                      {
 221   2                      for(y=0;y<100;y++)
 222   2                      _nop_();
 223   2                      }
 224   1      }
 225          /*************************************delay10    END *******************************/
 226          /*************************************delay100   START *****************************/   
 227          void delay100()
 228          {
 229   1              uchar  x;
 230   1              uchar  y;
 231   1              for(x=0;x<100;x++)
 232   1                      {
 233   2                      for(y=0;y<100;y++)
 234   2                      _nop_();
 235   2                      }
 236   1      }
 237          /*************************************delay100   END *******************************/
C51 COMPILER V7.06   NRF2401                                                               03/15/2008 09:15:11 PAGE 5   

 238          /*************************************ShockBurst START *****************************/
 239          void BuildShockWord()
 240          {
 241   1              TXData[0]=0xcc;         //MSB    ;RX receiver 1 address   High byte
 242   1              TXData[1]=0xcc;         //MSB-1  ;RX receiver 1 address   High byte
 243   1              TXData[2]=0xcc;         //MSB-2  ;RX receiver 1 address   Low byte
 244   1              TXData[3]=0xcc;         //MSB-3  ;RX receiver 1 address   Low  byte
 245   1              TXData[4]=Data1;        //MSB-4  ;Data byte 9
 246   1              TXData[5]=0x02;         //MSB-5  ;Data byte 8
 247   1              TXData[6]=0x03;         //MSB-6  ;Data byte 7
 248   1              TXData[7]=0x04;         //MSB-7  ;Data byte 6
 249   1              TXData[8]=0x05;         //MSB-8  ;Data byte 5
 250   1              TXData[9]=0x06;         //MSB-9  ;Data byte 4
 251   1              TXData[10]=0x07;        //MSB-10 ;Data byte 3
 252   1              TXData[11]=0x08;        //MSB-11 ;Data byte 2
 253   1              TXData[12]=0x09;        //MSB-12 ;Data byte 1
 254   1              TXData[13]=0x10;        //MSB-13 ;Data byte 0   
 255   1      }
 256          /************************************* BuildShockWord END *******************************/
 257          /************************************* ShockBurst   START *******************************/
 258          void ShockBurst()
 259          {
 260   1              CS=0;                                   //Pull CS low
 261   1              CE=1;                                   //Enable CE     active mode
 262   1              for (ByteCnt=0;ByteCnt<14;ByteCnt++)
 263   1              {
 264   2                      tempi=TXData[ByteCnt];
 265   2                      for (BitCnt=0;BitCnt<8;BitCnt++)
 266   2                      {
 267   3                              if (bflag==1)   //Check if first bit is HIGH
 268   3                                      Data=1;         //Set Data high
 269   3                              else
 270   3                                      Data=0;         //Set Data low
 271   3                              tempi=tempi<<1; //Left Shift to get next bit
 272   3                              DoSPIClock();
 273   3                              //SendData();   //Call SendData
 274   3                      }
 275   2              }
 276   1              CE=0;                                   //Disable CE (TX Starts!)--standby mode
 277   1              Data=0;                                 //Set Data low
 278   1      }
 279          /************************************* ShockBurst END ***********************************/
 280          /************************************* SendData     START *******************************
 281                          
 282          void SendData()
 283          {
 284                  for (BitCnt=0;BitCnt<8;BitCnt++)
 285                          {
 286                          if (bflag==1)           //Check if first bit is HIGH
 287                                  Data=1;                 //Set Data high
 288                          else
 289                                  Data=0;                 //Set Data low
 290                          tempi=tempi<<1;         //Left Shift to get next bit
 291                          DoSPIClock();           //Call "DoClock" to generate a clock pulse
 292                          }
 293          }
 294          
 295          ************************************** SendData END *************************************/
 296          /************************************* CheckButtons START *******************************/      
 297          void CheckButtons()
 298          {
 299   1              P0=0xff;
C51 COMPILER V7.06   NRF2401                                                               03/15/2008 09:15:11 PAGE 6   

 300   1              Temp=P0&0x0f;                   //read key value from port P0
 301   1              if (Temp!=0x0f)
 302   1                      {
 303   2                              Temp=Temp<<4;
 304   2                              Data1=Temp;             //put the button Data in dada package
 305   2                              P0=Data1;               //Turn On the LED
 306   2                              TXEN_LOW();             //set TX mode
 307   2                              BuildShockWord();
 308   2                              ShockBurst();
 309   2                              delay100();             //delay for LED light
 310   2                              RXEN_HIGH();
 311   2                              P0=0xff;                //close LED display
 312   2                              
 313   2                       }
 314   1      }
 315          /************************************* CheckButtons END *********************************/
 316          /************************************* ReceiveShock START *******************************/
 317          void ReceiveShock()
 318          {
 319   1              Data=1;                                 //Set Data tri state
 320   1              Temp=0;
 321   1              for (ByteCnt=0;ByteCnt<10;ByteCnt++)
 322   1              {
 323   2                      for(BitCnt=0;BitCnt<8;BitCnt++)
 324   2                      {
 325   3                              Temp=Temp<<1;   //shift left to receive next bit
 326   3                              CLK1=1;                 //set clock high
 327   3                              _nop_();        
 328   3                              _nop_();                //wait one clk cycle
 329   3                              Data=1;
 330   3                              if(Data==1)             //check if Data=high            
 331   3                                      Temp|=0x01;     //yes - set bit high
 332   3                              CLK1=0;                 //set clock low
 333   3                              _nop_();                //wait one clk cycle
 334   3                      }
 335   2                      _nop_();
 336   2                      RXData[ByteCnt]=Temp;
 337   2                      DR1=1;
 338   2                      if(DR1!=1)                      //check if DR1 is not still high
 339   2                      {               
 340   3                              _nop_();
 341   3                              P0=RXData[0];   //Turn On the LED
 342   3                              delay100();
 343   3                      P0=0xff;
 344   3                      }
 345   2               }
 346   1      }
 347          
 348          /************************************* ReceiveShock END *********************************/
 349          void  Serialport()
 350          {
 351   1           TMOD=0X20;
 352   1          SCON=0X50;
 353   1          TCON=0X40;
 354   1          TH1=0XE8;
 355   1          TL1=0XE8;
 356   1          //TI=1;
 357   1          TR1=1;
 358   1      for(j=0;j<40;j++)
 359   1      {for(i=0;i<14;i++)
 360   2         { 
 361   3      SBUF=TXData[i];
C51 COMPILER V7.06   NRF2401                                                               03/15/2008 09:15:11 PAGE 7   

 362   3           while(TI==0);
 363   3           TI=0;
 364   3      }
 365   2      }
 366   1      }       


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    605    ----
   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 + -