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

📄 nrf905e.lst

📁 这是一个基于PTR8000无线数据传输的C语言程序,是完整的源代码.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 207   3                          SetTxMode();                                // Set Tx Mode
 208   3                          TxPacket();                                 // Transmit Tx buffer data
 209   3                              TxBuf[0] = 0xff;
 210   3                              SetRxMode();                            // Set nRF905 in Rx mode
 211   3                              tf=0;
 212   3                              Delay(500);
 213   3                              //P0=0xff;
 214   3                              WXW=1;
 215   3                       }
 216   2                 
 217   2               
 218   2       
 219   2               //=====================等待NRF905接收
 220   2                 if (DR)                      // If recive data ready... 
 221   2                 RxPacket();                  // ... recive data
 222   2               //=====================从串口接收到数据
 223   2               if (rsbrf!=0)
 224   2                {
 225   3                       switch(rsbrf)
 226   3                         {
 227   4                           case '0':P0=0x3f;TxBuf[0]=0x3f;delayf=1;break;
 228   4                               case '1':P0=0x06;TxBuf[0]=0x06;delayf=1;break;
 229   4                               case '2':P0=0x5b;TxBuf[0]=0x5b;delayf=1;break;
 230   4                               case '3':P0=0x4f;TxBuf[0]=0x4f;delayf=1;break;
 231   4                               case '4':P0=0x66;TxBuf[0]=0x66;delayf=1;break;
 232   4                               case '5':P0=0x6d;TxBuf[0]=0x6d;delayf=1;break;
 233   4                               case '6':P0=0x7d;TxBuf[0]=0x7d;delayf=1;break;
 234   4                               case '7':P0=0x07;TxBuf[0]=0x07;delayf=1;break;
 235   4                   case '8':P0=0x7f;TxBuf[0]=0x7f;delayf=1;break;
 236   4                               case '9':P0=0x6f;TxBuf[0]=0x6f;delayf=1;break;
 237   4                               case 'A':P0=0x77;TxBuf[0]=0x77;delayf=1;break;
 238   4                               case 'B':P0=0x7c;TxBuf[0]=0x7c;delayf=1;break;
 239   4                               //default:P0=0xff;TxBuf[0]=0xff; 
 240   4                              }
 241   3                //====================NRF905发送串口接收到的相应的字符 
C51 COMPILER V7.06   NRF905E                                                               04/21/2007 14:54:04 PAGE 5   

 242   3                 if(TxBuf[0]!=0xff)
 243   3                   if(TxBuf[0]!=0x00)
 244   3                        {
 245   4                          SetTxMode();                                // Set Tx Mode
 246   4                          TxPacket();                                 // Transmit Tx buffer data
 247   4                              TxBuf[0] = 0xff;
 248   4                              SetRxMode();                            // Set nRF905 in Rx mode
 249   4                        }                                             
 250   3               //=====================
 251   3                       if(delayf==1)
 252   3                         {
 253   4                           Delay(500);
 254   4                               delayf = 0;
 255   4                               P0 = 0x00;
 256   4                         }
 257   3                 }
 258   2               //=====================
 259   2               if(rsbrf!=0)
 260   2                 {
 261   3                   TxData(rsbrf);
 262   3                       rsbrf = 0 ;
 263   3                 }
 264   2               //=====================
 265   2              }
 266   1      }
 267          
 268          /*******************************************************************************************/
 269          /*******************************************************************************************/
 270          //function Config905();
 271          /*******************************************************************************************/
 272          void Config905(void)
 273          {
 274   1              uchar i;                                        
 275   1              CSN=0;                                          // Spi enable for write a spi command
 276   1              SpiWrite(WC);                           // Write config command写放配置命令
 277   1              for (i=0;i<RxTxConf.n;i++)      // Write configration words  写放配置字
 278   1              {
 279   2                      SpiWrite(RxTxConf.buf[i]);
 280   2              }
 281   1              CSN=1;                                          // Disable Spi
 282   1      }
 283          /*******************************************************************************************/
 284          //function SpiWrite();
 285          /*******************************************************************************************/
 286          void SpiWrite(uchar  byte)
 287          {
 288   1              uchar i;        
 289   1              DATA_BUF=byte;                          // Put function's parameter into a bdata variable               
 290   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 291   1              {       
 292   2                      
 293   2                      if (flag)                               // Put DATA_BUF.7 on data line
 294   2                              MOSI=1;
 295   2                      else
 296   2                              MOSI=0;
 297   2                      SCK=1;                                  // Set clock line high
 298   2                      DATA_BUF=DATA_BUF<<1;   // Shift DATA_BUF
 299   2                      SCK=0;                                  // Set clock line low 
 300   2              }       
 301   1      }
 302          /*******************************************************************************************/
 303          //function SpiRead();
C51 COMPILER V7.06   NRF905E                                                               04/21/2007 14:54:04 PAGE 6   

 304          /*******************************************************************************************/
 305          uchar SpiRead(void)
 306          {
 307   1              uchar i;        
 308   1              for (i=0;i<8;i++)                       // Setup byte circulation bits
 309   1              {       
 310   2                      DATA_BUF=DATA_BUF<<1;   // Right shift DATA_BUF
 311   2                      SCK=1;                                  // Set clock line high
 312   2                      if (MISO)
 313   2                              flag1=1;                        // Read data
 314   2                      else
 315   2                              flag1=0;
 316   2                                                              
 317   2                      
 318   2                      SCK=0;                                  // Set clock line low
 319   2              }
 320   1              return DATA_BUF;                        // Return function parameter
 321   1      }
 322          /*******************************************************************************************/
 323          //function TxPacket();
 324          /*******************************************************************************************/
 325          void TxPacket(void)
 326          {
 327   1              uchar i;
 328   1              //Config905();                          
 329   1              CSN=0;                                          // Spi enable for write a spi command   
 330   1              SpiWrite(WTP);                          // Write payload command
 331   1              for (i=0;i<32;i++)
 332   1              {
 333   2                      SpiWrite(TxBuf[i]);             // Write 32 bytes Tx data
 334   2              }
 335   1              CSN=1;                                          // Spi disable                                          
 336   1              Delay(1);
 337   1              CSN=0;                                          // Spi enable for write a spi command   
 338   1              SpiWrite(WTA);                          // Write address command
 339   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 340   1              {
 341   2                      SpiWrite(RxTxConf.buf[i+5]);
 342   2              }       
 343   1              CSN=1;                                          // Spi disable
 344   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 345   1              Delay(1);                                       // while (DR!=1);
 346   1              TRX_CE=0;                                       // Set TRX_CE low
 347   1      }
 348          /*******************************************************************************************/
 349          //function RxPacket();
 350          /*******************************************************************************************/
 351          void RxPacket(void)
 352          {
 353   1              uchar i;        
 354   1              TRX_CE=0;                                       // Set nRF905 in standby mode   
 355   1              CSN=0;                                          // Spi enable for write a spi command
 356   1              SpiWrite(RRP);                          // Read payload command 
 357   1              for (i=0;i<32;i++)
 358   1              {
 359   2                      RxBuf[i]=SpiRead();             // Read data and save to buffer         
 360   2              }
 361   1              CSN=1;                                          // Disable spi
 362   1              while(DR||AM);  
 363   1              P0=     RxBuf[0];                               // Buffer[0] output from P0 port...
 364   1              TRX_CE=1;
 365   1              //xx=(RxBuf[0]>>4)&0x0f;
C51 COMPILER V7.06   NRF905E                                                               04/21/2007 14:54:04 PAGE 7   

 366   1              //TxData(xx);
 367   1               //=====================
 368   1                        switch(P0)
 369   1                  {
 370   2                            case 0x3f:TxData('0');;break;
 371   2                                    case 0x06:TxData('1');;break;
 372   2                                    case 0x5b:TxData('2');;break;
 373   2                                    case 0x4f:TxData('3');;break;
 374   2                                        case 0x66:TxData('4');;break;
 375   2                                    case 0x6d:TxData('5');;break;
 376   2                                    case 0x7d:TxData('6');;break;
 377   2                                    case 0x07:TxData('7');;break;
 378   2                                        case 0x7f:TxData('8');;break;
 379   2                                    case 0x6f:TxData('9');;break;
 380   2                                    case 0x77:TxData('A');;break;
 381   2                                    case 0x7c:TxData('B');;break;
 382   2                        //default:P0=0xff;TxBuf[0]=0xff; 
 383   2                       } 
 384   1               //=====================
 385   1                
 386   1              Delay(500);                                     // ...light led
 387   1              P0=0xff;                                        // Close led                                                            
 388   1      }
 389          /*******************************************************************************************/
 390          //function SetTxMode();
 391          /*******************************************************************************************/
 392          void SetTxMode(void)                            
 393          {       
 394   1              TX_EN=1;
 395   1              TRX_CE=0;
 396   1              Delay(1);                                       // delay for mode change(>=650us)
 397   1      }                               
 398          /*******************************************************************************************/
 399          //function SetRxMode();
 400          /*******************************************************************************************/
 401          void SetRxMode(void)
 402          {
 403   1              TX_EN=0;
 404   1              TRX_CE=1;
 405   1              Delay(1);                                       // delay for mode change(>=650us)                               
 406   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    954    ----
   CONSTANT SIZE    =     11    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     70       5
   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 + -