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

📄 main.lst

📁 无线收发原代码 24e1 ad 转换程序 希望抛砖引玉
💻 LST
📖 第 1 页 / 共 2 页
字号:
 231          void SetTxMode(void)
 232          {
 233   1              int8u ch;
 234   1              CS = 1;
 235   1              Delay100us(0);
 236   1              ch = FRESELE << 1;
 237   1              SpiReadWrite(ch);
 238   1              CS = 0;
 239   1      }
 240          /*****************************************************************************************
 241          //函数名:SendC()
C51 COMPILER V7.08   MAIN                                                                  10/28/2005 14:14:11 PAGE 5   

 242          //输入:发送的数据
 243          //输出:无
 244          //功能描述:串口初始化
 245          /*****************************************************************************************/
 246          void SendCh(char c)
 247          {
 248   1              TI = 0;
 249   1              SBUF = c;
 250   1              while(!TI);
 251   1              TI = 0;
 252   1      }
 253          
 254          /*****************************************************************************************
 255          //函数名:Nrf24E1Init()
 256          //输入:无
 257          //输出:无
 258          //功能描述:Nrf24E1Init初始化,这里我们配置成32位地址。
 259          /*****************************************************************************************/
 260          void Nrf24E1Init()
 261          {
 262   1              int8u i;
 263   1              SPICLK = 0;                                 // Max SPI clock
 264   1              SPI_CTRL = 0x02;                            // Connect internal SPI controller to Radio
 265   1              CE = 0;
 266   1              CS = 1;                                     // RF SPI CS = 1
 267   1              Delay100us(0);
 268   1              SpiReadWrite(0x00);                         // We are not using the DuoCeiver functionallity
 269   1              for(i=1;i<15;i++)
 270   1              {
 271   2                      SpiReadWrite(RFConfig[i]);
 272   2              }
 273   1              CS = 0;
 274   1      
 275   1              Delay100us(30);  
 276   1      }
 277          
 278          
 279          /*****************************************************************************************
 280          //函数名:TransmitPacket(int8u *pBuf)
 281          //输入:发送的数据
 282          //输出:无
 283          //功能描述:发送发送缓冲区的数据
 284          /*****************************************************************************************/
 285          TransmitPacket(int8u *pBuf)
 286          {
 287   1              int8u i;
 288   1      
 289   1              SetTxMode();
 290   1              CE = 1;
 291   1              Delay100us(1);
 292   1      
 293   1              for (i=0;i<ADDR_COUNT;i++)
 294   1              {
 295   2                      SpiReadWrite(rfAddress[i]);
 296   2              }
 297   1              SpiReadWrite(1);
 298   1              for (i=0;i<4;i++)
 299   1              {
 300   2                      SpiReadWrite(pBuf[i]);
 301   2              }
 302   1              CE = 0;
 303   1              Delay100us(13);                              // Wait until finished transmitting (200us + 256us)//delay(5
C51 COMPILER V7.08   MAIN                                                                  10/28/2005 14:14:11 PAGE 6   

             -)
 304   1      }
 305          
 306          
 307          /*****************************************************************************************
 308          //函数名:void SendAck(unsigned char msgid)
 309          //输入:发送的数据
 310          //输出:无
 311          //功能描述:发送发送缓冲区的数据
 312          /*****************************************************************************************/
 313          void SendAck(unsigned char msgid)
 314          {
 315   1          
 316   1          int8u i;
 317   1      
 318   1          SetTxMode();
 319   1          CE = 1;
 320   1          Delay100us(2);
 321   1      
 322   1          for (i=0;i<4;i++)
 323   1          {
 324   2              SpiReadWrite(rfAddress[i]);
 325   2          }
 326   1          SpiReadWrite(msgid);                        
 327   1          CE = 0;
 328   1          Delay100us(1);                               
 329   1                                                      
 330   1      }
 331          /*****************************************************************************************
 332          //函数名:int8u ReceivePacket(int8u *pBuf)
 333          //输入:接收数据缓冲区
 334          //输出:成功返回1,否则返回0
 335          //功能描述:接收数据存在缓冲区内
 336          /*****************************************************************************************/
 337          int8u ReceivePacket(int8u *pBuf)
 338          {
 339   1              int8u i,cmd;
 340   1      
 341   1              SetRxMode();
 342   1              CE = 1;    
 343   1              ResetTimer(1);
 344   1              while(DR1 == 0)
 345   1              {
 346   2                      if (ReadTimer(1) > 1000)
 347   2                      {
 348   3                              CE = 0;
 349   3                              return 0;
 350   3                      }
 351   2              }
 352   1              cmd = SpiReadWrite(0);
 353   1              i = 0;
 354   1              while(DR1)
 355   1              {
 356   2                      pBuf[i] = SpiReadWrite(0);
 357   2                      i++;
 358   2                      if (i == 5)
 359   2                      break;
 360   2              }
 361   1              while(DR1)
 362   1              {
 363   2                      SpiReadWrite(0);
 364   2              }
C51 COMPILER V7.08   MAIN                                                                  10/28/2005 14:14:11 PAGE 7   

 365   1              CE = 0;
 366   1              return cmd;
 367   1      }
 368          
 369          /******************************************************************************************
 370          *******************************************************************************************
 371          ************************************中断服务程序*******************************************
 372          *******************************************************************************************
 373          ******************************************************************************************/
 374          void Timer0ISR (void) interrupt 1  using 1              //定时器0中断
 375          {
 376   1              TF0 = 0;                                        // Clear Timer0 interrupt
 377   1              TH0 = t0hrel;                                   // Reload Timer0 high byte
 378   1              TL0 = t0lrel;                                   // Reload Timer0 low byte
 379   1              timer[0]++;                                     // Increment timer[0]
 380   1              timer[1]++;                                     // Increment timer[1
 381   1      }
 382          
 383          void UartISR (void) interrupt 4 using 2                 //串口中断
 384          {
 385   1              int8u temp;
 386   1              
 387   1              EA = 0;
 388   1              if(RI)
 389   1              {
 390   2                      temp = SBUF;
 391   2                      if(temp == '@')                         //帧头
 392   2                      {               
 393   3                              Rx.Buf[0] = '@';
 394   3                              Rx.Counter = 1; 
 395   3                      }
 396   2                      else if(temp == '*')                    //帧尾
 397   2                      {               
 398   3                              Rx.Buf[Rx.Counter] = temp;
 399   3                              Rx.Buf[Rx.Counter + 1] = '\0';
 400   3                              Rx.NewData = 1;
 401   3                      }
 402   2                      else if(Rx.Counter < 39){
 403   3                              Rx.Buf[Rx.Counter] = temp;
 404   3                              Rx.Counter += 1;
 405   3                      }
 406   2                      RI = 0;
 407   2              }
 408   1              if(TI)
 409   1              {
 410   2                      TI = 0;
 411   2              }
 412   1              EA = 1;
 413   1      }
 414          
 415          
 416          /******************************************************************************************
 417          *******************************************************************************************
 418          ******************************************主程序*******************************************
 419          *******************************************************************************************
 420          ******************************************************************************************/
 421          void main(void)
 422          {       
 423   1              unsigned char temp;
 424   1              SciInit();
 425   1              TimerInit();
 426   1              EA=1;  
C51 COMPILER V7.08   MAIN                                                                  10/28/2005 14:14:11 PAGE 8   

 427   1              LEDR=0;
 428   1              LEDG=0;
 429   1              delay(10000);
 430   1              LEDR=1;
 431   1              LEDG=1;
 432   1              
 433   1              Nrf24E1Init();
 434   1              while(1)
 435   1              {
 436   2                      temp = ReceivePacket(buf);
 437   2                      if(temp != 0)
 438   2                      {
 439   3                              SendAck(temp);
 440   3                              SendCh(buf[0]);
 441   3                              SendCh(buf[1]);
 442   3                              SendCh(buf[2]);
 443   3                              SendCh(buf[3]);
 444   3                              LEDR=0;
 445   3                              LEDG=0;
 446   3                              delay(5000);
 447   3                              LEDR=1;
 448   3                              LEDG=1;
 449   3                      }
 450   2              }
 451   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    608    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     53       6
   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 + -