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

📄 recv8000.lst

📁 基于89c2051开发的ptr8000一对多无线通信程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 212   3                       //mscom_byte(URT_rcv);                         
 213   3                      }
 214   2                      if(++comrbufp==COMRBUFLEN) comrbufp=0;
 215   2                      //mscom_byte(URT_rcv);                          
 216   2              }/* 串口接收程序结束 */
 217   1      }/* 串口中断程序结束 */
 218          
 219          
 220          /****************************************************************/
 221          //////////Timer0 interrupt//////
 222          
 223          void t0int() interrupt 1
 224          {
 225   1       temptl0=TL0;
 226   1       tempth0=TH0;
 227   1       TH0=THV+tempth0;
 228   1       TL0=TLV+temptl0+10;
 229   1       count++;
 230   1       if(count==HALFSECTICKS)
 231   1       {
 232   2        triggle=1;
 233   2        RLED=1;
 234   2       }
 235   1       if(count==SECTICKS)
 236   1       {
 237   2        count=0;
C51 COMPILER V7.06   RECV8000                                                              02/01/2007 11:10:31 PAGE 5   

 238   2        triggle=1;
 239   2        RLED=0;
 240   2       }
 241   1      }
 242          
 243          void Ptimer1(void) interrupt 3 using 1
 244          {
 245   1              TH1=(65536-46080)/256;  /* Fosc=733728MHz/4=1.8432MHz */
 246   1              TL1=(65536-46080)%256;  /* 50ms timer interrupt */
 247   1              TR1=1;
 248   1              if(++tim_cnt==20)
 249   1              {
 250   2                      tim_cnt=0;
 251   2                      Flag_scd=1;
 252   2                      if(tim_scd++==60)
 253   2                      {
 254   3                              tim_scd=0;
 255   3                              if(tim_mnt++==60)
 256   3                              {
 257   4                                      tim_mnt=0;
 258   4                                      if(tim_hur++==24) tim_hur=0;
 259   4                              }
 260   3                      }
 261   2              }
 262   1      }
 263          
 264          
 265          /************************************************************************************************/
 266          main()
 267          {       
 268   1              uchar i;//,j;
 269   1              for(i=0;i<4;i++) comsbuf[i]=TX_ADDRESS[0][i];
 270   1              comsbuf[4]=RX_ADDRESS_0;
 271   1              comsbuf[5]=RX_ADDRESS_1;
 272   1              comsbuf[6]=RX_ADDRESS_2;
 273   1              comsbuf[7]=RX_ADDRESS_3;
 274   1              comsbuf[8]=0xff;
 275   1              comsbuf[9]=0xd7;
 276   1              comsbuf[10]=0x06;
 277   1              comsbuf[11]='S';
 278   1              comsbuf[14]=0x00;
 279   1              comsbuf[15]='E';
 280   1      
 281   1              /*IO口模式设置00准双向;01推挽;10高阻输入;11开漏 */
 282   1              //P0M1=0x00;    /* P0M1: 00000000   键盘 双向*/
 283   1              //P0M2=0x0F;    /* P0M2: 00001111   LED  推挽*/
 284   1              //P1M1=0x2C;    /* P1M1: 00101100   P1.2/P1.3配置为开漏,外接上拉电阻;P1.5(RST)仅能为输入(高阻);*/
 285   1              //P1M2=0x0C;    /* P1M2: 00001100   中断1,串口为准双向;*/
 286   1              //P2M1=0x00;    /* P2M1: 00000000   */
 287   1              //P2M2=0x00;    /* P2M2: 00000000   */
 288   1              //P3M1=0x00;    /* IO口模式设置: 准双向口00,使用内部时钟 */
 289   1              //P3M2=0x00;
 290   1              
 291   1              //P0=0xFF;      /* 初化P0口 */
 292   1              //P1=0xFF;                      
 293   1              //P2=0xFF;      /*  */
 294   1              //P3=0xFF;      /*  */
 295   1                                                      
 296   1              //DIVM=2;       /* 降低工作频率,以便程序移植 */
 297   1              TR0   = 1;
 298   1          IE    = 0x82;          //Enable timer0.
 299   1      
C51 COMPILER V7.06   RECV8000                                                              02/01/2007 11:10:31 PAGE 6   

 300   1              uart_init();    /* 串口初始化9600BPS */
 301   1              Spi_init();                             /* 初始化SPI端口 */
 302   1      
 303   1              ChangeMode(Standby);    /* nRF905进入待机SPI通讯模式 */
 304   1              //Delayus(1000);
 305   1              Delayms(2); //1
 306   1              Config905();                    /* 配置nRF905 */
 307   1                                      
 308   1              //TMOD|=0x10;                           /* Timer1 mode set Mode1 */
 309   1              //TH1=(65536-46080)/256;        /* Fosc=1.8432MHz,50ms timer interrupt */
 310   1              //TL1=(65536-46080)%256;
 311   1              //ET1=1;TR1=1;
 312   1              //EA=1;
 313   1              
 314   1              //eeprom_read(E2ADRSYS,Databuf,16);     /* 读取本系统地址及参数 */
 315   1              //ADDRESS = BUFADR;
 316   1              //if(ADDRESS==0xFF)     /* 地址为0xFF时,初始化地址为1 */
 317   1              //{
 318   1              //      BUFADR = ADDRESS = 0x01;        /* 本系统地址存储为0x01 */
 319   1              //      for(i=1;i<16;i++)Databuf[i]=i;
 320   1              //      eeprom_write(E2ADRSYS,Databuf,16);      /* 存储本系统地址及参数 */
 321   1              //}
 322   1              mscom_snd(Databuf,16);
 323   1      
 324   1              RF905_Read(RC,Databuf);
 325   1              mscom_snd(Databuf,16);
 326   1              ChangeMode(RXMode);             /**/
 327   1      
 328   1              while(1)
 329   1              {       
 330   2                      while(RF_DR && RF_AM)
 331   2                      {
 332   3                              ChangeMode(Standby);
 333   3                              Delayms(2); //1
 334   3                              RF905_Read(RRP,Databuf);
 335   3                              ChangeMode(RXMode);     
 336   3                              //Delayus(300); //500
 337   3                              //Delayms(1);
 338   3                              mscom_snd(Databuf,16);
 339   3                      }
 340   2              if(triggle1)
 341   2              {
 342   3               triggle1=0;
 343   3                       ChangeMode(TXMode);    
 344   3               for(i=0;i<4;i++) comsbuf[i]=TX_ADDRESS[tx_realaddressp][i];
 345   3                       //Delayus(3100);
 346   3                       Delayms(5); //3
 347   3                       RF905_Write(WTA,TX_ADDRESS[tx_realaddressp]);
 348   3                       //if(++j==7) j=0;
 349   3                       //RF905_Write(WTP,Databuf);    
 350   3                       RF905_Write(WTP,comsbuf);      
 351   3                       ChangeMode(TXData);    
 352   3                       //mscom_snd(TX_ADDRESS,4);
 353   3                       //mscom_snd(Databuf,16);
 354   3                       //Delayus(650);                        // ensure nRF905 have began TX 
 355   3                       //Delayus(120);                        // ensure nRF905 have began TX 
 356   3                       //Delayms(1);
 357   3               while(!RF_DR);
 358   3                       ChangeMode(RXMode);                    
 359   3              }
 360   2                      /*
 361   2                      switch (URT_rcv)
C51 COMPILER V7.06   RECV8000                                                              02/01/2007 11:10:31 PAGE 7   

 362   2                      {
 363   2                       case 0x00:
 364   2                              for(i=0;i<16;i++) Databuf[i]=i;
 365   2                              //eeprom_write(E2ADRSYS,Databuf,16);
 366   2                              //eeprom_read(E2ADRSYS,Databuf,16);
 367   2                              //mscom_snd(Databuf,16);
 368   2                              URT_rcv =0x10;
 369   2                              break;
 370   2                       case 0x01:
 371   2                              ChangeMode(Standby);
 372   2                              Delayus(3100);
 373   2                              RF905_Read(RC,Databuf);
 374   2                              ChangeMode(RXMode);             
 375   2                              mscom_snd(Databuf,16);
 376   2                              URT_rcv =0x10;
 377   2                              break;
 378   2                       case 0x02:
 379   2                              ChangeMode(TXMode);     
 380   2                              Delayus(3100);
 381   2                              RF905_Write(WTA,TX_ADDRESS);
 382   2                              RF905_Write(WTP,Databuf);       
 383   2                              ChangeMode(TXData);     
 384   2                              //mscom_snd(TX_ADDRESS,4);
 385   2                              //mscom_snd(Databuf,16);
 386   2                              Delayus(650);                   // ensure nRF905 have began TX 
 387   2                              ChangeMode(RXMode);                     
 388   2                              URT_rcv =0x10;
 389   2                              break;
 390   2                       case 0x03:
 391   2                              ChangeMode(Standby);
 392   2                              RF905_Read(RTP,Databuf);
 393   2                              Delayus(650);
 394   2                              ChangeMode(RXMode);             
 395   2                              mscom_snd(Databuf,16);
 396   2                              URT_rcv =0x10;
 397   2                              break;
 398   2                       case 0x04:
 399   2                              //ChangeMode(Standby);  
 400   2                              RF905_Read(RRP,Databuf);
 401   2                              Delayus(650);
 402   2                              ChangeMode(RXMode);             
 403   2                              //mscom_snd(Databuf,16);
 404   2                              URT_rcv =0x10;
 405   2                              break;
 406   2                       case 0x07:
 407   2                              ChangeMode(PowerDown);
 408   2                              URT_rcv =0x10;
 409   2                       default:
 410   2                              ChangeMode(RXMode);                     
 411   2                              URT_rcv =0x10;
 412   2                              break;
 413   2                      }
 414   2              */
 415   2              }   
 416   1      }       
 417          
 418          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    780    ----
   CONSTANT SIZE    =     28    ----
C51 COMPILER V7.06   RECV8000                                                              02/01/2007 11:10:31 PAGE 8   

   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6       6
   IDATA SIZE       =     55    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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