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

📄 nrf2401.lst

📁 Rf2401 receive/send c51 demo
💻 LST
📖 第 1 页 / 共 2 页
字号:

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

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

 300   1              if (Temp!=0x0f)
 301   1                      {
 302   2                              Temp=Temp<<4;
 303   2                              Data1=Temp;             //put the button Data in dada package
 304   2                              P0=Data1;               //Turn On the LED
 305   2                              TXEN_LOW();             //set TX mode
 306   2                              BuildShockWord();
 307   2                              ShockBurst();
 308   2                              delay100();             //delay for LED light
 309   2                              RXEN_HIGH();
 310   2                              P0=0xff;                //close LED display
 311   2                              
 312   2                       }
 313   1      }
 314          /************************************* CheckButtons END *********************************/
 315          /************************************* ReceiveShock START *******************************/
 316          void ReceiveShock()
 317          {
 318   1              Data=1;                                 //Set Data tri state
 319   1              Temp=0;
 320   1              for (ByteCnt=0;ByteCnt<10;ByteCnt++)
 321   1              {
 322   2                      for(BitCnt=0;BitCnt<8;BitCnt++)
 323   2                      {
 324   3                              Temp=Temp<<1;   //shift left to receive next bit
 325   3                              CLK1=1;                 //set clock high
 326   3                              _nop_();        
 327   3                              _nop_();                //wait one clk cycle
 328   3                              Data=1;
 329   3                              if(Data==1)             //check if Data=high            
 330   3                                      Temp|=0x01;     //yes - set bit high
 331   3                              CLK1=0;                 //set clock low
 332   3                              _nop_();                //wait one clk cycle
 333   3                      }
 334   2                      _nop_();
 335   2                      RXData[ByteCnt]=Temp;
 336   2                      DR1=1;
 337   2                      if(DR1!=1)                      //check if DR1 is not still high
 338   2                      {               
 339   3                              _nop_();
 340   3                              P0=RXData[0];   //Turn On the LED
 341   3                              delay100();
 342   3                      P0=0xff;
 343   3                      }
 344   2               }
 345   1      }
 346          
 347          /************************************* 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 + -