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

📄 arx.lst

📁 nRF24z1的c51参考代码
💻 LST
📖 第 1 页 / 共 2 页
字号:

 304   3                      }
 305   2              }
 306   1              else {
 307   2                      
 308   2                      I2C_Stop(device);
 309   2                      //LED_CON = 1;
 310   2                      return(0);
 311   2              }
 312   1      }
 313          
 314          BYTE I2C_read_bit(BYTE device)
 315          {
 316   1              BYTE sample;
 317   1              if(device == DEVICE_RF)
 318   1              {       
 319   2                      I2C_SCL = 1;    
 320   2                      i2c_delay();
 321   2                      if(I2C_SDA == 0) sample = 0;
 322   2                      else sample = 1;
 323   2                      I2C_SCL = 0;
 324   2                      i2c_delay();
 325   2              
 326   2                      if (sample==0) return (0);
 327   2                      else return (1);
 328   2              }
 329   1              else {
 330   2                      DAC_SCL = 1;    
 331   2                      i2c_delay();
 332   2                      if(DAC_SDA == 0) sample = 0;
 333   2                      else sample = 1;
 334   2                      DAC_SCL = 0;
 335   2                      i2c_delay();
 336   2              
 337   2                      if (sample==0) return (0);
 338   2                      else return (1);
 339   2              }       
 340   1      }
 341          
 342          BYTE I2C_rd_data(BYTE device)
 343          {
 344   1              BYTE i,i_data=0;
 345   1              
 346   1              for (i=0;i<8;i++)
 347   1              {
 348   2                      i_data*=2;
 349   2                      if (I2C_read_bit(device)) i_data++;
 350   2              }
 351   1              
 352   1              return(i_data);
 353   1      }
 354          void mcu_wait_ms(unsigned int count)
 355          {
 356   1              
 357   1              while(count--);
 358   1      }
 359          
 360          BYTE I2C_rd_single_data(BYTE device, BYTE device_id, BYTE addr, BYTE i_data)
 361          {
 362   1              I2C_Start(device);
 363   1              if(I2C_send(device, device_id))
 364   1              {
 365   2                      if(I2C_send(device, addr))
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 7   

 366   2                      {
 367   3                              I2C_Start(device);
 368   3                              if(I2C_send(device, device_id|0x01))
 369   3                              {
 370   4                                      i_data = I2C_rd_data(device);
 371   4                                      I2C_ack(device);
 372   4                                      I2C_Stop(device);
 373   4                                      return(1);
 374   4                              }
 375   3                              else {
 376   4                                      I2C_Stop(device);
 377   4                                      return(0);
 378   4                              }
 379   3                                      
 380   3                      }
 381   2                      else {
 382   3                              I2C_Stop(device);
 383   3                              return(0);
 384   3                      }
 385   2              }
 386   1              else {
 387   2                      I2C_Stop(device);
 388   2                      return(0);
 389   2              }
 390   1      }
 391          
 392          void dac_init(void) {
 393   1              
 394   1              
 395   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x1E, 0x00);    // Resetting DAC before continuing with init,
             - page 20
 396   1              
 397   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x0E, 0x12);    // Slave mode, I2S, 16 bits, page 26
 398   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x12, 0x01);    // Activate digital interface, page 31
 399   1              
 400   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x0A, 0x00);    // 3 Disable mute, disable de-emphasis, page 
             -15
 401   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x10, 0x20);    // 256x at 44.1ksps, page 26?
 402   1              
 403   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x08, 0x10);    // 1 Select DAC, page 17. It has to be put in
             - here and not in dac_init()
 404   1              
 405   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x0c, 0x67);    // 2 Power down CLKOUT and oscillator, enable
             - output, DAC, and VMID page 33
 406   1              
 407   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x05, gbVolume|0x80);
 408   1              DAC_PD = 1;
 409   1      }
 410          
 411          
 412          void dac_volume_up()
 413          {
 414   1              if(gbVolume < 0x7f) gbVolume++;
 415   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x05, gbVolume|0x80);
 416   1      }
 417          
 418          void dac_volume_down()
 419          {
 420   1              if(gbVolume > 0x30) gbVolume--;
 421   1              I2C_wr_single_data(DEVICE_DAC, DAC_WR_ADDR, 0x05, gbVolume|0x80);
 422   1      }
 423          
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 8   

 424          void ARX_init(void)
 425          {
 426   1              BYTE bI;
 427   1              //---------------Link Table------------------------------
 428   1              for(bI=0; bI<38; bI++)
 429   1              {
 430   2                      I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, CH0+bI, channel_num[bI]);
 431   2              }
 432   1              
 433   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, BCHD, 0x0A);
 434   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, NBCH, 0x12);
 435   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, NACH, 0x26);
 436   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, NLCH, 0x26);
 437   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, LNKMOD, 0x00);
 438   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, LNKWTH, 0xFF);
 439   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, LNKETH, 0xFF);
 440   1              
 441   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_0, 0x98);       // Data for ADDR_0
 442   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_1, 0x38);       // Data for ADDR_1
 443   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_2, 0xA2);       // Data for ADDR_2
 444   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_3, 0x34);       // Data for ADDR_3
 445   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, ADDR_4, 0x85);       // Data for ADDR_4  
 446   1              
 447   1              
 448   1              //-------------Interrupts table--------------------------
 449   1              //I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, INTSTA, 0x00);     // 
 450   1              //I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, INTCF, 0x02);      // Enable wakeup from power down interrupt
 451   1              //-------------ATX set table-----------------------------
 452   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXSTA, 0x49);
 453   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXPWR, 0x03);
 454   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXFMT, 64);//  i2s
 455   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, I2SCNF_IN, 0x80);//master
 456   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXLAT, 0x04);
 457   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, TXMOD, 0x82);
 458   1              //------------ARX set table------------------------------
 459   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXSTA, 0x08);
 460   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXPWR, 0x03);
 461   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, I2SCNF_OUT, 0);
 462   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXMOD, 0x20);
 463   1              //------------data command-------------------------------
 464   1              I2C_wr_single_data(DEVICE_RF, ARX_WR_ADDR, RXDCMD, 0x82);
 465   1      }
 466          
 467          #if 1
 468          void mcu_init(void)
 469          {
 470   1                                                   
 471   1              IE = 0x00;
 472   1      
 473   1      /*      IP (Interrupt Priority Set)
 474   1                  (MSB)                                                       (LSB)
 475   1                      D7      D6      D5      D4      D3      D2      D1      D0
 476   1                   --------------------------------------------------------------
 477   1                  |       |       |       |       |       |       |       |       |
 478   1                  |   -   |   -   |   -   |  PS   |  PT1  |  PX1  |  PT0  |  PX0  |
 479   1                  |   0   |   0   |   0   |   1   |   0   |   0   |   1   |   1   |
 480   1                  |       |       |       |       |       |       |       |       |
 481   1                   ---------------------------------------------------------------    */
 482   1              IP = 0x13;                                            
 483   1      
 484   1      /*      TMOD (Timer & Counter Mode Control)
 485   1                  (MSB)                                                       (LSB)
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 9   

 486   1                      D7      D6      D5      D4      D3      D2      D1      D0
 487   1                   --------------------------------------------------------------
 488   1                  |  TM1  |  TM1  |  TM1  |  TM1  |  TM0  |  TM0  |  TM0  |  TM0  |
 489   1                  | GATE  |  C/T  |  M1   |  M0   | GATE  |  C/T  |  M1   |  M0   |
 490   1                  |   0   |   0   |   1   |   0   |   0   |   0   |   0   |   1   |
 491   1                  |  int  |int clk|reload |       |       |int clk|       |       |
 492   1                   ---------------------------------------------------------------    */
 493   1              TMOD = 0x21;                                           
 494   1      
 495   1      /*      TCON (Timer & Counter Control)
 496   1                  (MSB)                                                       (LSB)
 497   1                      D7      D6      D5      D4      D3      D2      D1      D0
 498   1                   --------------------------------------------------------------
 499   1                  |       |       |       |       |       |       |  VD   |  VD   |
 500   1                  |  TF1  |  TR1  |  TF0  |  TR0  |  IE1  |  IT1  |  IE0  |  IT0  |
 501   1                  |   0   |   0   |   0   |   0   |   0   |   1   |   0   |   1   |
 502   1                  |over f |tm1 oN |over f |tm0 off|1edge f|1 type |0edge f|0 type |
 503   1                   ---------------------------------------------------------------    */
 504   1              TCON = 0x00;                                           
 505   1      
 506   1                                        
 507   1      
 508   1      /*      SCON(Serial Port Control )
 509   1                  (MSB)                                                       (LSB)
 510   1                      D7      D6      D5      D4      D3      D2      D1      D0
 511   1                   --------------------------------------------------------------
 512   1                  |       |       |       |RXenabl|9th bit|9th bit|       |       |
 513   1                  |  SM0  |  SM1  |  SM2  |  REN  |  TB8  |  RB8  |  TI   |  RI   |
 514   1                  |   0   |   1   |   0   |   1   |   0   |   0   |   0   |   0   |
 515   1                  |       |       |Multi x|       |       |       |       |       |
 516   1                   ---------------------------------------------------------------    */
 517   1              SCON = 0x00;                                           
 518   1      
 519   1      /*      PCON(Power Control Set )
 520   1                  (MSB)                                                       (LSB)
 521   1                      D7      D6      D5      D4      D3      D2      D1      D0
 522   1                   --------------------------------------------------------------
 523   1                  |       |       |       |       |       |       |       |       |
 524   1                  | SMOD  |   -   |   -   |   -   |  GF1  |  GF2  |  PD   |  IDL  |
 525   1                  |   1   |   0   |   0   |   0   |   0   |   0   |   0   |   0   |
 526   1                  |  baud |       |       |       |  flag |  flag |powerdn|Idlebit|
 527   1                   ---------------------------------------------------------------    */
 528   1              PCON = 0x10;                                           
 529   1      
 530   1      /*      TH0H,L (Timer 0 Byte) */
 531   1              TH0 = 0xB1;
 532   1              TL0 = 0xE0;                                          
 533   1      
 534   1      
 535   1              P1 = 0xFF;
 536   1      
 537   1              P3 = 0x7f;
 538   1      }
 539          #endif
 540          main(void)
 541          {
 542   1              BYTE bTemp = 0;
 543   1              BYTE bCurKey = 0;
 544   1              gbKeyRept    = 0;
 545   1              gbKeyId     = KEY_INVALID;
 546   1              gbKeyLastId = KEY_INVALID;
 547   1              gbKeyPressed = 0;
C51 COMPILER V7.10   ARX                                                                   06/10/2008 10:51:18 PAGE 10  

 548   1              
 549   1              gbVolume = 0x79;
 550   1              gbLedTimer = 0;
 551   1              
 552   1              mcu_init();
 553   1              PWR_EN = 1;
 554   1              LED_CON = 0;
 555   1              EA = 0;
 556   1              TR0 = 0;
 557   1              ARX_init();
 558   1              LED_CON = 1;
 559   1              dac_init();
 560   1              mcu_wait_ms(4000);
 561   1              
 562   1              I2C_rd_single_data(DEVICE_RF, ARX_WR_ADDR, I2SCNF_OUT, bTemp);  
 563   1              //if(bTemp==0x40)
 564   1              //{
 565   1              //      LED_CON = 0;
 566   1              //      while(1);
 567   1              //}
 568   1              EA = 1;
 569   1              ET0 = 1;
 570   1              TR0 = 1;
 571   1              while(1)
 572   1              {
 573   2                      
 574   2                      bCurKey = KeyGet();
 575   2                              
 576   2                      switch(bCurKey)
 577   2                      {
 578   3                      case KEY_VOL_UP_BREAK:
 579   3                      case KEY_VOL_UP_LONG:   
 580   3                              dac_volume_up();
 581   3                              break;
 582   3                      case KEY_VOL_DOWN_BREAK:
 583   3                      case KEY_VOL_DOWN_LONG:
 584   3                              dac_volume_down();
 585   3                              break;
 586   3                      case KEY_UP_LONG:
 587   3                              EA = 0;
 588   3                              while(1){
 589   4                                      LED_CON = 0;
 590   4                                      PWR_EN = 0;
 591   4                              }
 592   3                              
 593   3                      }
 594   2                      mcu_wait_ms(10000);
 595   2              }
 596   1      }


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