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

📄 nrf2401.lst

📁 nRF2401驱动程序 nRF2401无线射频芯片
💻 LST
📖 第 1 页 / 共 2 页
字号:

 176          {
 177                  CE=0;
 178          }
 179          *************************************CE_Low     END ********************************/
 180          /*************************************nRF2401_ON START******************************/
 181          void nRF2401_ON()
 182          {
 183   1              PWR_UP=1;
 184   1      }
 185          /*************************************nRF2401_ON END *******************************/
 186          /*************************************nRF2401_OFF START*****************************/
 187          //void nRF2401_OFF()
 188          //{
 189          //      PWR_UP=0;                       // Set Power_Up low     
 190          //}
 191          /*************************************nRF2401_OFF END ******************************/
 192          /*************************************RXEN_HIGH START ******************************/
 193          void RXEN_HIGH()
 194          {
 195   1              CE=0;                           //Set CE LOW
 196   1              CS=1;                           //Set CS HIGH--confige mode
 197   1              Data=1;                         //Set Data HIGH, Set RX mode
 198   1              DoSPIClock();           //Make one SPIClock cycle
 199   1              CS=0;                           //Set CS LOW            
 200   1              CE=1;                           //Set CE HIGH--active mode
 201   1      }
 202          /*************************************RXEN_HIGH  END *******************************/
 203          /*************************************TXEN_LOW  START ******************************/           
 204          void TXEN_LOW()
 205          {
 206   1              CE=0;                           //Set CE LOW                    
 207   1              CS=1;                           //Set CS HIGH--confige mode
 208   1              Data=0;                         //Set Data LOW
 209   1              DoSPIClock();           //Make one SPIClock cycle
 210   1              CS=0;                           //Set CS LOW            
 211   1              CE=1;                           //Set CE HIGH--active mode
 212   1      }
 213          
 214          /*************************************TXEN_LOW   END *******************************/
 215          /*************************************delay10   START ******************************/
 216          void Delay10()
 217          {
 218   1              uchar  x;
 219   1              uchar  y;
 220   1              for(x=0;x<10;x++)
 221   1                      {
 222   2                      for(y=0;y<100;y++)
 223   2                      _nop_();
 224   2                      }
 225   1      }
 226          /*************************************delay10    END *******************************/
 227          /*************************************delay100   START *****************************/   
 228          void delay100()
 229          {
 230   1              uchar  x;
 231   1              uchar  y;
 232   1              for(x=0;x<100;x++)
 233   1                      {
 234   2                      for(y=0;y<100;y++)
 235   2                      _nop_();
 236   2                      }
 237   1      }
C51 COMPILER V8.02   NRF2401                                                               04/26/2007 20:50:59 PAGE 5   

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

 300   1              P0=0xff;
 301   1              Temp=P0&0x0f;                   //read key value from port P0
 302   1              if (Temp!=0x0f)
 303   1              {
 304   2                      Temp=Temp<<4;
 305   2                      Data1=Temp;             //put the button Data in dada package
 306   2                      P0=Data1;               //Turn On the LED
 307   2                      TXEN_LOW();             //set TX mode
 308   2                      BuildShockWord();
 309   2                      ShockBurst();
 310   2                      delay100();             //delay for LED light
 311   2                      RXEN_HIGH();
 312   2                      P0=0xff;                //close LED display             
 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 *********************************/      


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