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

📄 main.lst

📁 nfr2401的图和程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 249   1              SCK = 0;
 250   1              _nop_();
 251   1              _nop_();
 252   1              for(i=0; i<8; i++)
 253   1              {
 254   2                      if((dat & 0x80) == 0x80)
 255   2                      {
 256   3                              MOSI = 1;
 257   3                              MISO = 1;
 258   3                      }
 259   2                      else 
 260   2                      {
 261   3                              MOSI = 0;
 262   3                              MISO = 0;
 263   3                      }
 264   2                      dat <<= 1;
 265   2                      SCK = 1; 
 266   2                      _nop_();
 267   2                      _nop_();
 268   2                      SCK = 0;
 269   2                      _nop_();
 270   2                      _nop_();        
 271   2              }
 272   1      }
 273          
 274          
 275          /*****************************************************************************************
 276          //函数名:INT8U SpiReadByte(void)
 277          //输入:无
 278          //输出:读出的数据
 279          //功能描述:SPI读出一个字节
 280          /*****************************************************************************************/
 281          INT8U SpiReadByte(void)
 282          {
 283   1              INT8U i,temp;
 284   1              temp = 0;
 285   1              
 286   1              MISO = 1;
 287   1              MOSI = 1;
 288   1              
 289   1              SCK = 0;
 290   1              _nop_();
 291   1              _nop_();
 292   1              for(i=0; i<8; i++)
 293   1              {
 294   2                      temp <<= 1;
 295   2                      SCK = 1;
 296   2                      _nop_();
 297   2                      _nop_();
 298   2                      if(MISO)temp++; 
 299   2                      SCK = 0;
 300   2                      _nop_();
 301   2                      _nop_();
C51 COMPILER V7.08   MAIN                                                                  04/13/2006 17:24:35 PAGE 6   

 302   2              }
 303   1              return temp;
 304   1      }
 305          
 306          /*****************************************************************************************
 307          //函数名:SetTxMode()
 308          //输入:无
 309          //输出:无
 310          //功能描述:转为发送模式
 311          /*****************************************************************************************/
 312          void SetTxMode(void)
 313          {
 314   1              unsigned char ch;
 315   1              CS = 1;
 316   1              Delay100us(0);
 317   1              ch = FRESELE<<1;
 318   1              SpiWriteByte(ch);
 319   1              CS = 0;
 320   1              Delay100us(2);
 321   1      }
 322          
 323          /*****************************************************************************************
 324          //函数名:SetRxMode()
 325          //输入:无
 326          //输出:无
 327          //功能描述:转为接收模式
 328          /*****************************************************************************************/
 329          void SetRxMode(void)
 330          {
 331   1              unsigned char ch;
 332   1              CS = 1;
 333   1              Delay100us(0);
 334   1              ch = FRESELE<<1;
 335   1              SpiWriteByte(ch | 0x01);
 336   1              CS = 0;
 337   1              Delay100us(2);                          //200us
 338   1      }
 339          
 340          
 341          
 342          /*****************************************************************************************
 343          //函数名:Nrf2401Init()
 344          //输入:地址,发送数据位数
 345          //输出:无
 346          //功能描述:Nrf2401Init初始化,这里我们配置成32位地址。
 347          /*****************************************************************************************/
 348          void Nrf2401Init(void)
 349          {
 350   1              INT8U i;        
 351   1              CE = 0;
 352   1              CS = 1;
 353   1              
 354   1              Delay100us(0);
 355   1              for(i=0; i<15; i++)
 356   1              {
 357   2                      SpiWriteByte(CofigBuf[i]);
 358   2              }
 359   1              
 360   1              CS = 0;
 361   1              
 362   1              Delay100us(30);
 363   1      
C51 COMPILER V7.08   MAIN                                                                  04/13/2006 17:24:35 PAGE 7   

 364   1      }
 365          
 366          
 367          /*****************************************************************************************
 368          //函数名:TranData()
 369          //输入:无
 370          //输出:无
 371          //功能描述:发送发送缓冲区的数据。
 372          /*****************************************************************************************/
 373          void TranData(void)
 374          
 375          {
 376   1              INT8U i;
 377   1              
 378   1              SetTxMode();
 379   1              
 380   1              CE = 1;
 381   1              
 382   1              Delay100us(1);
 383   1              
 384   1              for(i=0; i<4; i++)
 385   1              {
 386   2                      SpiWriteByte(AddrCofig[i]);     //发送地址
 387   2              }
 388   1              for(i=0; i<5; i++)
 389   1              {
 390   2                      SpiWriteByte(TxBuf[i]);         //发送五位
 391   2              }
 392   1              
 393   1      
 394   1              CE = 0;
 395   1              
 396   1              Delay100us(13);
 397   1      }
 398          
 399          
 400          
 401          /*****************************************************************************************
 402          //函数名:void ReceiveBytes(void)
 403          //输入:无
 404          //输出:无
 405          //功能描述:接收数据存在接收缓冲区内
 406          /*****************************************************************************************/
 407          INT8U ReceivePacket(void)
 408          {
 409   1              INT8U i;
 410   1              SetRxMode();
 411   1              CE = 1;    
 412   1              ResetTimer(1);
 413   1              while(DR1 == 0)
 414   1              {
 415   2                      if(ReadTimer(1) > 1000)
 416   2                      {
 417   3                              CE = 0;
 418   3                              return 0;
 419   3                      }
 420   2              }
 421   1              i = 0;
 422   1              while(DR1)
 423   1              {
 424   2                      RxBuf[i] = SpiReadByte();
 425   2                      i++;
C51 COMPILER V7.08   MAIN                                                                  04/13/2006 17:24:35 PAGE 8   

 426   2                      if (i == 5)
 427   2                      break;
 428   2              }
 429   1              while(DR1)
 430   1              {
 431   2                      SpiReadByte();
 432   2              }
 433   1              CE = 0;
 434   1              return 1;
 435   1      }
 436          
 437          /******************************************************************************************
 438          *******************************************************************************************
 439          ************************************中断服务程序*******************************************
 440          *******************************************************************************************
 441          ******************************************************************************************/
 442          void Timer0ISR(void) interrupt 1
 443          {
 444   1              EA = 0;
 445   1              TH0+=TIMER0H;
 446   1              TL0+=TIMER0L;
 447   1              timer[0]++;
 448   1              timer[1]++;
 449   1              EA = 1;
 450   1      }
 451          
 452          
 453          
 454          
 455          
 456          /******************************************************************************************
 457          *******************************************************************************************
 458          ******************************************主程序*******************************************
 459          *******************************************************************************************
 460          ******************************************************************************************/
 461          main()
 462          {       
 463   1              INT8U temp, i;
 464   1              CpuInit();
 465   1              TimerInit();
 466   1              UartInit();
 467   1              LED1=0;
 468   1              LED2=0;
 469   1              delay(20000);
 470   1              LED1=1;
 471   1              LED2=1;         
 472   1              Nrf2401Init();
 473   1              delay(500);
 474   1      
 475   1              while(1)
 476   1              {
 477   2                      temp = ReceivePacket(); 
 478   2                      if(temp == 1)
 479   2                      {
 480   3                              LED1=0;
 481   3                              delay(5000);
 482   3                              LED1=1;
 483   3                              for(i=0; i<5; i++)
 484   3                              {
 485   4                                      SendCh(RxBuf[i]);
 486   4                              }
 487   3                      }
C51 COMPILER V7.08   MAIN                                                                  04/13/2006 17:24:35 PAGE 9   

 488   2              }
 489   1      }
 490          
 491          


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