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

📄 main.lst

📁 此为无线单片机,2.4G无线收发内部带51核,此为它的发射程序.
💻 LST
📖 第 1 页 / 共 2 页
字号:
 245   1              ch = FRESELE << 1;
 246   1              SpiReadWrite(ch);
 247   1              CS = 0;
 248   1      }
 249          
 250          /*****************************************************************************************
 251          //函数名:SendC()
 252          //输入:发送的数据
 253          //输出:无
 254          //功能描述:串口初始化
 255          /*****************************************************************************************/
 256          void SendCh(char c)
 257          {
 258   1              TI = 0;
 259   1              SBUF = c;
 260   1              while(!TI);
 261   1              TI = 0;
 262   1      }
 263          
 264          /*****************************************************************************************
 265          //函数名:Nrf24E1Init()
 266          //输入:无
 267          //输出:无
 268          //功能描述:Nrf24E1Init初始化,这里我们配置成32位地址。
 269          /*****************************************************************************************/
 270          void Nrf24E1Init()
 271          {
 272   1              int8u i;
 273   1              SPICLK = 0;                                 // Max SPI clock
 274   1              SPI_CTRL = 0x02;                            // Connect internal SPI controller to Radio
 275   1              CE = 0;
 276   1              CS = 1;                                     // RF SPI CS = 1
 277   1              Delay100us(0);
 278   1              SpiReadWrite(0x00);                         // We are not using the DuoCeiver functionallity
 279   1              for(i=1;i<15;i++)
 280   1              {
 281   2                      SpiReadWrite(RFConfig[i]);
 282   2              }
 283   1              CS = 0;
 284   1      
 285   1              Delay100us(30);  
 286   1      }
 287          
 288          
 289          
 290          
 291          /*****************************************************************************************
 292          //函数名:int8u WaitAck(void)
 293          //输入:无
 294          //输出:返回应答信号
 295          //功能描述:等待应答,并返回应答信号
 296          /*****************************************************************************************/
 297          int8u WaitAck(void)
 298          {
 299   1          int8u ack;
 300   1          SetRxMode();
 301   1          CE = 1;
 302   1          ResetTimer(0);
 303   1          while(DR1 == 0)
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 6   

 304   1          {
 305   2              if (ReadTimer(0) > 10)                    // 3ms time-out/10MS
 306   2              {
 307   3                  CE = 0;
 308   3                  return 0;
 309   3              }
 310   2          }
 311   1          ack = SpiReadWrite(0);
 312   1          while(DR1)
 313   1          {
 314   2              SpiReadWrite(0);
 315   2          }
 316   1          CE = 0;
 317   1          return ack;
 318   1      }
 319          /*****************************************************************************************
 320          //函数名:TransmitPacket(int8u *pBuf)
 321          //输入:发送的数据
 322          //输出:无
 323          //功能描述:发送发送缓冲区的数据
 324          /*****************************************************************************************/
 325          TransmitPacket(int8u *pBuf,int8u crc)
 326          {
 327   1              int8u i;
 328   1      
 329   1              SetTxMode();
 330   1              CE = 1;
 331   1              Delay100us(1);
 332   1      
 333   1              for (i=0;i<ADDR_COUNT;i++)
 334   1              {
 335   2                      SpiReadWrite(rfAddress[i]);
 336   2              }
 337   1              SpiReadWrite(crc);
 338   1              for (i=0;i<4;i++)
 339   1              {
 340   2                      SpiReadWrite(pBuf[i]);
 341   2              }
 342   1              CE = 0;
 343   1              Delay100us(6);                              // Wait until finished transmitting (200us + 256us)//delay(5)
 344   1      }
 345          
 346          
 347          /******************************************************************************************
 348          *******************************************************************************************
 349          ************************************中断服务程序*******************************************
 350          *******************************************************************************************
 351          ******************************************************************************************/
 352          void Timer0ISR (void) interrupt 1  using 1
 353          {
 354   1              TF0 = 0;                                    // Clear Timer0 interrupt
 355   1              TH0 = t0hrel;                               // Reload Timer0 high byte
 356   1              TL0 = t0lrel;                               // Reload Timer0 low byte
 357   1              timer[0]++;                                 // Increment timer[0]
 358   1              timer[1]++;                                 // Increment timer[1
 359   1      }
 360          
 361          
 362          /*
 363          void UartISR (void) interrupt 4 using 2
 364          {
 365                  int8u temp;
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 7   

 366                  
 367                  EA = 0;
 368                  if(RI)
 369                  {
 370                          temp = SBUF;
 371                          if(temp == '@')//
 372                          {               
 373                                  Rx.Buf[0] = '@';
 374                                  Rx.Counter = 1; 
 375                          }
 376                          else if(temp == '*')//?β
 377                          {               
 378                                  Rx.Buf[Rx.Counter] = temp;
 379                                  Rx.Buf[Rx.Counter + 1] = '\0';
 380                                  Rx.NewData = 1;
 381                          }
 382                          else if(Rx.Counter < 39){
 383                                  Rx.Buf[Rx.Counter] = temp;
 384                                  Rx.Counter += 1;
 385                          }
 386                          RI = 0;
 387                  }
 388                  if(TI)
 389                  {
 390                          TI = 0;
 391                  }
 392                  EA = 1;
 393          }
 394          */
 395          
 396          
 397          
 398          
 399          
 400          
 401          
 402          /******************************************************************************************
 403          *******************************************************************************************
 404          ******************************************主程序*******************************************
 405          *******************************************************************************************
 406          ******************************************************************************************/
 407          main(void)
 408          {
 409   1              static int8u cmd,crc;
 410   1              unsigned char i;
 411   1              unsigned char adc_tmp;
 412   1              unsigned char ack=0;
 413   1              unsigned char re_send_times;
 414   1      
 415   1              SciInit();
 416   1              TimerInit();
 417   1              ADCINIT();
 418   1              EA=1;  
 419   1              LEDR=0;
 420   1              LEDG=0;
 421   1              delay(5000);
 422   1              LEDR=1;
 423   1              LEDG=1;
 424   1              //TxBuf[0] = 0x40;
 425   1              //TxBuf[1] = 0x41;
 426   1              //TxBuf[2] = 0x42;
 427   1              //TxBuf[3] = 0x43;
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 8   

 428   1              
 429   1              Nrf24E1Init();
 430   1      
 431   1              while(1)
 432   1              {
 433   2                      adc_tmp=ADCDATAH;
 434   2                      ADCCON&=~0X80;
 435   2                      ADCCON|=0X80;
 436   2      
 437   2                      //for(i=0;i<1;i++) SendCh(adc_tmp);
 438   2                      cmd=adc_tmp;
 439   2                      TxBuf[0] = adc_tmp;
 440   2                      TxBuf[1] = adc_tmp;
 441   2                      TxBuf[2] = adc_tmp;
 442   2                      TxBuf[3] = adc_tmp;
 443   2      
 444   2                      // 发送
 445   2                      ack=0;
 446   2                      re_send_times=0;
 447   2                      while(!ack)
 448   2                      {
 449   3                              TransmitPacket(TxBuf,cmd);
 450   3                              crc=0x00;
 451   3                              crc=WaitAck();
 452   3                              if(crc!=0xaa)
 453   3                              {
 454   4                                      LEDR=1;
 455   4                                      LEDG=0;
 456   4                                      delay(5000);
 457   4                                      LEDR=1;
 458   4                                      LEDG=1;
 459   4                                      ack=0;
 460   4                                      re_send_times++;
 461   4                                      if(re_send_times>=3) ack=1;
 462   4                                      delay(10000);                           
 463   4      
 464   4                              }
 465   3                              else
 466   3                              {
 467   4                                      LEDR=0;
 468   4                                      LEDG=0;
 469   4                                      delay(5000);
 470   4                                      LEDR=1;
 471   4                                      LEDG=1;
 472   4                                      ack=1;
 473   4                                      //delay(60000);
 474   4                                      //delay(60000);
 475   4                              }
 476   3                      }
 477   2                      delay(60000);
 478   2                      delay(60000);
 479   2              }       
 480   1      }
*** WARNING C280 IN LINE 410 OF MAIN.C: 'i': unreferenced local variable


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    539    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     55       6
C51 COMPILER V7.08   MAIN                                                                  11/17/2006 16:38:05 PAGE 9   

   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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