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

📄 fasong.lst

📁 由NRF905和单片机组成的不停车收费接收模块的发送数据端程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   FASONG                                                                08/09/2008 15:37:27 PAGE 4   

 180          ////////初始化寄存器
 181          void Config905(void)
 182          {
 183   1              uchar i;
 184   1              CSN=0;                                          // Spi enable for write a spi command
 185   1              //SpiWrite(WC);                         // Write config command写放配置命令
 186   1              for (i=0;i<11;i++)      // Write configration words  写放配置字
 187   1              {
 188   2                 SpiWrite(RFConf[i]);
 189   2              }
 190   1              CSN=1;                                  // Disable Spi
 191   1      }
 192          /////////////初始化
 193          void Inituart(void)
 194          {
 195   1              TMOD = 0x20;                            //timer1 working mode 1
 196   1              TL1  = 0xfd;                                    //f7=9600 for 16mhz Fosc,and ...
 197   1              TH1  = 0xfd;                                    //...fd=19200 for 11.0592mhz Fosc
 198   1              SCON = 0xd8;                            //uart mode 3,ren==1
 199   1              PCON = 0x80;                            //smod=1
 200   1              TR1  = 1;                                       //start timer1
 201   1      }
 202          /////////////发送数据///////////////////////////////////////////////////////////////////
 203          void TxPacket(void)
 204          {
 205   1              uchar i;
 206   1              //Config905();
 207   1              CSN=0;
 208   1              SpiWrite(WTP);                          // Write payload command
 209   1              for (i=0;i<32;i++)
 210   1              {
 211   2                      SpiWrite(TxRxBuffer0[i]);               // Write 32 bytes Tx data
 212   2              }// Spi enable for write a spi command
 213   1              CSN=1;
 214   1              Delay(1);                                               // Spi disable
 215   1              CSN=0;                                          // Spi enable for write a spi command
 216   1              SpiWrite(WTA);                          // Write address command
 217   1              for (i=0;i<4;i++)                       // Write 4 bytes address
 218   1              {
 219   2                      SpiWrite(TxAddress[i]);
 220   2              }
 221   1              CSN=1;                                          // Spi disable
 222   1              TRX_CE=1;                                       // Set TRX_CE high,start Tx data transmission
 223   1              Delay(1);                                       // while (DR!=1);
 224   1              TRX_CE=0;                                       // Set TRX_CE low
 225   1      }
 226          ////////////////////////////////////////////////////
 227          void SetTxMode(void)
 228          {
 229   1              TRX_CE=0;
 230   1              TXEN=1;
 231   1              Delay(1);                                       // delay for mode change(>=650us)
 232   1      }
 233          unsigned char CheckCD(void)             //Pin->检查是否已存在 同频率载波
 234          {
 235   1              if (CD==1)
 236   1              {
 237   2                      return 1;
 238   2              }
 239   1              else
 240   1              {
 241   2                      return 0;
C51 COMPILER V8.02   FASONG                                                                08/09/2008 15:37:27 PAGE 5   

 242   2              }
 243   1      }
 244          void TX(void)
 245          {
 246   1                     SetTxMode();// Set nRF905 in Tx mode
 247   1                                 TxPacket();// Send data by nRF905
 248   1      
 249   1      
 250   1       CheckCD();     // 返回CD的当前电平
 251   1      
 252   1              // SetRF_PA_PWR(unsigned char i);       //设置发射功率
 253   1      }
 254          ////////////////////////接收数据///////////////////////////////
 255          void SetRxMode(void)
 256          {
 257   1              TXEN=0;
 258   1              TRX_CE=1;
 259   1              Delay(1);                                       // delay for mode change(>=650us)
 260   1      }
 261          
 262          unsigned char CheckDR(void)             //检查是否有新数据传入 Data Ready
 263          {
 264   1              if (DR=1&&TRX_CE==1 && TXEN==0)
 265   1              {
 266   2             // Delay(50)  ;
 267   2                      return 1;
 268   2              }
 269   1              else
 270   1              {
 271   2                      return 0;
 272   2              }
 273   1      }
 274          void RxPacket(void)                                                     //读数据
 275          {
 276   1              uchar i;
 277   1          Delay(1);
 278   1      //      TRX_CE=0;                                       // Set nRF905 in standby mode
 279   1          Delay(100);
 280   1          TRX_CE=0;
 281   1              CSN=0;                                          // Spi enable for write a spi command
 282   1          Delay(1);
 283   1              SpiWrite(RRP);
 284   1        // Delay(10000);
 285   1         // Delay(10000);                     // Read payload command
 286   1              for (i = 0 ;i < 32 ;i++)
 287   1              {      // Delay(10000);
 288   2                //   Delay(10000);
 289   2                //   Delay(10000);
 290   2               //    Delay(10000); 
 291   2                      TxRxBuffer2[i]=SpiRead();               // Read data and save to buffer
 292   2                 // Delay(10000);
 293   2                  //    Delay(10000);
 294   2                  //    Delay(10000);         
 295   2              }
 296   1              CSN=1;
 297   1                Delay(10);
 298   1                      // Delay(10);
 299   1              TRX_CE=1;                                                       
 300   1      }
 301          ////////////////
 302          void  RX(void)
 303          {
C51 COMPILER V8.02   FASONG                                                                08/09/2008 15:37:27 PAGE 6   

 304   1                SetRxMode();                  // Set nRF905 in Rx mode
 305   1                        //Delay(10000);
 306   1                while (CheckDR()==0);
 307   1               //Delay(10000);
 308   1                      Delay(10);
 309   1                        RxPacket();
 310   1               //Delay(10000);                        // Recive data by nRF905
 311   1                       Delay(10);
 312   1      }
 313          /////////////////////////////////////////////////////////////////////////////////
 314          void main(void)
 315          {               char i,k;
 316   1              initLCD();
 317   1              Inituart();
 318   1              nRF905Init();
 319   1              Config905();
 320   1                      Delay(1);
 321   1        
 322   1                      for(k=0;k<5;k++)        
 323   1                    { TX();}
 324   1                                 Delay(100);
 325   1      
 326   1              while(1)
 327   1              {
 328   2                                 RX();
 329   2                                 Delay(10);
 330   2                      for(i=0;i<5;i++)
 331   2                      {
 332   3                      Delay(10);
 333   3                      P0=TxRxBuffer2[i];
 334   3                      LCDwdata();
 335   3                      }
 336   2                      P0=0xc5;
 337   2                      enable();
 338   2                      LCD_write('S');
 339   2                      LCD_write('U');
 340   2                      LCD_write('C');
 341   2                      LCD_write('C');
 342   2                      LCD_write('E');
 343   2                      LCD_write('S');
 344   2                      LCD_write('S');
 345   2                      P0=0x82;
 346   2                      enable();
 347   2              }                  
 348   1                      
 349   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    527    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     65    ----
   IDATA SIZE       =     11    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -