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

📄 gpif_init.lst

📁 一个有关EZ-USB FX2 系列CY7C68013的应用实例
💻 LST
📖 第 1 页 / 共 4 页
字号:
 594   1      }
 595          
 596          // write single byte to PERIPHERAL, using GPIF
 597          void Peripheral_SingleByteWrite( BYTE gdata )
 598          {
 599   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 600   1        {
 601   2           ;
 602   2        }
 603   1      
 604   1        XGPIFSGLDATLX = gdata;        // trigger GPIF 
 605   1                                      // ...single byte write transaction
 606   1      }
 607          
 608          // write single word to PERIPHERAL, using GPIF
 609          void Peripheral_SingleWordWrite( WORD gdata )
 610          {
 611   1        while( !( GPIFTRIG & 0x80 ) )  // poll GPIFTRIG.7 Done bit
 612   1        {
C51 COMPILER V7.10   GPIF_INIT                                                             10/05/2005 08:34:24 PAGE 11  

 613   2          ;
 614   2        }
 615   1      
 616   1      // using register(s) in XDATA space
 617   1        XGPIFSGLDATH = gdata >> 8;              
 618   1        XGPIFSGLDATLX = gdata;        // trigger GPIF 
 619   1                                      // ...single word write transaction
 620   1      }
 621          
 622          // read single byte from PERIPHERAL, using GPIF
 623          void Peripheral_SingleByteRead( BYTE xdata *gdata )
 624          {
 625   1        static BYTE g_data = 0x00;
 626   1      
 627   1        while( !( GPIFTRIG & 0x80 ) )  // poll GPIFTRIG.7 Done bit
 628   1        {
 629   2           ;
 630   2        }
 631   1      
 632   1      // using register(s) in XDATA space, dummy read
 633   1        g_data = XGPIFSGLDATLX;       // trigger GPIF 
 634   1                                      // ...single byte read transaction
 635   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 636   1        {
 637   2           ;
 638   2        }
 639   1      
 640   1      // using register(s) in XDATA space, 
 641   1        *gdata = XGPIFSGLDATLNOX;     // ...GPIF reads byte from PERIPHERAL
 642   1      }
 643          
 644          // read single word from PERIPHERAL, using GPIF
 645          void Peripheral_SingleWordRead( WORD xdata *gdata )
 646          {
 647   1        BYTE g_data = 0x00;
 648   1      
 649   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 650   1        {
 651   2           ;
 652   2        }
 653   1      
 654   1      // using register(s) in XDATA space, dummy read
 655   1        g_data = XGPIFSGLDATLX;       // trigger GPIF 
 656   1                                      // ...single word read transaction
 657   1      
 658   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 659   1        {
 660   2           ;
 661   2        }
 662   1      
 663   1      // using register(s) in XDATA space, GPIF reads word from PERIPHERAL
 664   1        *gdata = ( ( WORD )XGPIFSGLDATH << 8 ) | ( WORD )XGPIFSGLDATLNOX;
 665   1      }
 666          
 667          #define GPIFTRIGWR 0
 668          #define GPIFTRIGRD 4
 669          
 670          #define GPIF_EP2 0
 671          #define GPIF_EP4 1
 672          #define GPIF_EP6 2
 673          #define GPIF_EP8 3
 674          
C51 COMPILER V7.10   GPIF_INIT                                                             10/05/2005 08:34:24 PAGE 12  

 675          // write byte(s)/word(s) to PERIPHERAL, using GPIF and EPxFIFO
 676          // if EPx WORDWIDE=0 then write byte(s)
 677          // if EPx WORDWIDE=1 then write word(s)
 678          void Peripheral_FIFOWrite( BYTE FIFO_EpNum )
 679          {
 680   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 681   1        {
 682   2           ;
 683   2        }
 684   1      
 685   1        // trigger FIFO write transaction(s), using SFR
 686   1        GPIFTRIG = FIFO_EpNum;  // R/W=0, EP[1:0]=FIFO_EpNum for EPx write(s)
 687   1      }
 688          
 689          // read byte(s)/word(s) from PERIPHERAL, using GPIF and EPxFIFO
 690          // if EPx WORDWIDE=0 then read byte(s)
 691          // if EPx WORDWIDE=1 then read word(s)
 692          void Peripheral_FIFORead( BYTE FIFO_EpNum )
 693          {
 694   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 GPIF Done bit
 695   1        {
 696   2           ;
 697   2        }
 698   1      
 699   1        // trigger FIFO read transaction(s), using SFR
 700   1        GPIFTRIG = GPIFTRIGRD | FIFO_EpNum; // R/W=1, EP[1:0]=FIFO_EpNum for EPx read(s)
 701   1      }
 702          //---------------------------------------------------------------------------//
 703          void GPIF_LOAD_SINGLE()//单通道
 704          {
 705   1        BYTE i;
 706   1                
 707   1        GPIFABORT = 0xFF;  // abort any waveforms pending
 708   1       
 709   1        GPIFREADYCFG = InitData[ 0 ];
 710   1        GPIFCTLCFG = InitData[ 1 ];
 711   1        GPIFIDLECS = InitData[ 2 ];
 712   1        GPIFIDLECTL = InitData[ 3 ];
 713   1        GPIFWFSELECT = InitData[ 5 ];
 714   1        GPIFREADYSTAT = InitData[ 6 ];
 715   1       
 716   1        // use dual autopointer feature... 
 717   1        AUTOPTRSETUP = 0x07;          // inc both pointers, 
 718   1                                      // ...warning: this introduces pdata hole(s)
 719   1                                      // ...at E67B (XAUTODAT1) and E67C (XAUTODAT2)
 720   1        
 721   1        // source
 722   1        AUTOPTRH1 = MSB( &WaveData );
 723   1        AUTOPTRL1 = LSB( &WaveData );
 724   1        
 725   1        // destination
 726   1        AUTOPTRH2 = 0xE4;
 727   1        AUTOPTRL2 = 0x00;
 728   1       
 729   1        // transfer
 730   1        for ( i = 0x00; i < 128; i++ )
 731   1        {
 732   2          EXTAUTODAT2 = EXTAUTODAT1;
 733   2        }             
 734   1      }
 735          
 736          void GPIF_LOAD_DOUBLE()//双通道                                 
C51 COMPILER V7.10   GPIF_INIT                                                             10/05/2005 08:34:24 PAGE 13  

 737          {
 738   1        BYTE i;
 739   1        GPIFREADYCFG = InitData2[ 0 ];
 740   1        GPIFCTLCFG = InitData2[ 1 ];
 741   1        GPIFIDLECS = InitData2[ 2 ];
 742   1        GPIFIDLECTL = InitData2[ 3 ];
 743   1        GPIFWFSELECT = InitData2[ 5 ];
 744   1        GPIFREADYSTAT = InitData2[ 6 ];
 745   1       
 746   1        // use dual autopointer feature... 
 747   1        AUTOPTRSETUP = 0x07;          // inc both pointers, 
 748   1                                      // ...warning: this introduces pdata hole(s)
 749   1                                      // ...at E67B (XAUTODAT1) and E67C (XAUTODAT2)
 750   1        
 751   1        // source
 752   1        AUTOPTRH1 = MSB( &WaveData2 );
 753   1        AUTOPTRL1 = LSB( &WaveData2 );
 754   1        
 755   1        // destination
 756   1        AUTOPTRH2 = 0xE4;
 757   1        AUTOPTRL2 = 0x00;
 758   1       
 759   1        // transfer
 760   1        for ( i = 0x00; i < 128; i++ )
 761   1        {
 762   2          EXTAUTODAT2 = EXTAUTODAT1;
 763   2        }
 764   1              
 765   1      }
 766          
 767          void GPIF_LOAD_TRI()   //三通道
 768          {
 769   1              
 770   1      }
 771          void GPIF_LOAD_QUAD()   //四通道
 772          {
 773   1      
 774   1      }
 775          void GPIF_LOAD_PWDW()   //AD 掉电模式
 776          {
 777   1      
 778   1      }


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