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

📄 gpif1.lst

📁 通过keil编译产生hex文件,可下载到USB芯片CY7C68013上作为固件程序,本代码面向采用纯GPIF方式传输的芯片
💻 LST
📖 第 1 页 / 共 5 页
字号:
 446   1      
 447   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 448   1        {
 449   2           ;
 450   2        }
 451   1      
 452   1      // using register(s) in XDATA space, GPIF reads word from PERIPHERAL
 453   1        *gdata = ( ( WORD )XGPIFSGLDATH << 8 ) | ( WORD )XGPIFSGLDATLNOX;
 454   1      }
 455          
 456          #define GPIFTRIGWR 0
 457          #define GPIFTRIGRD 4
 458          
 459          #define GPIF_EP2 0
 460          #define GPIF_EP4 1
 461          #define GPIF_EP6 2
 462          #define GPIF_EP8 3
 463          
 464          // write byte(s)/word(s) to PERIPHERAL, using GPIF and EPxFIFO
 465          // if EPx WORDWIDE=0 then write byte(s)
 466          // if EPx WORDWIDE=1 then write word(s)
 467          void Peripheral_FIFOWrite( BYTE FIFO_EpNum )
 468          {
 469   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 Done bit
 470   1        {
 471   2           ;
 472   2        }
 473   1      
 474   1        // trigger FIFO write transaction(s), using SFR
 475   1        GPIFTRIG = FIFO_EpNum;  // R/W=0, EP[1:0]=FIFO_EpNum for EPx write(s)
 476   1      }
 477          
 478          // read byte(s)/word(s) from PERIPHERAL, using GPIF and EPxFIFO
 479          // if EPx WORDWIDE=0 then read byte(s)
 480          // if EPx WORDWIDE=1 then read word(s)
 481          void Peripheral_FIFORead( BYTE FIFO_EpNum )
 482          {
 483   1        while( !( GPIFTRIG & 0x80 ) ) // poll GPIFTRIG.7 GPIF Done bit
 484   1        {
 485   2           ;
 486   2        }
 487   1      
 488   1        // trigger FIFO read transaction(s), using SFR
 489   1        GPIFTRIG = GPIFTRIGRD | FIFO_EpNum; // R/W=1, EP[1:0]=FIFO_EpNum for EPx read(s)
C51 COMPILER V6.12  GPIF1                                                                  05/22/2007 13:08:21 PAGE 9   

 490   1      }
 491          
 492          void main( void )
 493          {
 494   1        WORD xdata wData = 0x0000;
 495   1        BYTE xdata bData = 0x00;
 496   1        WORD myi = 0x0000;
 497   1        BOOL bResult = 1;
 498   1      
 499   1        OtherInit( );
 500   1        GpifInit( );
 501   1        
 502   1        if( bResult == 0 ) 
 503   1        { // stub out unused functions; avoid UNCALLED SEGMENT link error
 504   2          Peripheral_SingleWordWrite( 0x5678 );
 505   2          Peripheral_SingleByteWrite( 0xAA );
 506   2          Peripheral_SingleWordRead( &wData );
 507   2          Peripheral_SingleByteRead( &bData );
 508   2          // GPIF automatically throttles when performing FIFO read(s)/write(s)
 509   2          // ...what this means is that it doesn't transition from IDLE, while...
 510   2          // ...the EPx OUT FIFO is empty... OR ...the EPx IN FIFO is full...
 511   2          Peripheral_FIFOWrite( GPIF_EP2 ); // GPIF will not read from an empty FIFO
 512   2          Peripheral_FIFORead( GPIF_EP8 );  // GPIF will not write to a full FIFO
 513   2          Peripheral_SetEP2GPIFTC( 0x0000 );
 514   2          Peripheral_SetEP4GPIFTC( 0x0000 );
 515   2          Peripheral_SetEP6GPIFTC( 0x0000 );
 516   2          Peripheral_SetEP8GPIFTC( 0x0000 );
 517   2          SetEP2GPIFFLGSEL( GPIF_FLGSELPF );
 518   2          SetEP4GPIFFLGSEL( GPIF_FLGSELEF );
 519   2          SetEP6GPIFFLGSEL( GPIF_FLGSELFF );
 520   2          SetEP8GPIFFLGSEL( GPIF_FLGSELPF );
 521   2          SetEP2GPIFPFSTOP(); // use GPIF_PF to transition GPIF to done
 522   2          SetEP4GPIFPFSTOP(); // use GPIF_PF to transition GPIF to done
 523   2          SetEP6GPIFPFSTOP(); // use GPIF_PF to transition GPIF to done
 524   2          SetEP8GPIFPFSTOP(); // use GPIF_PF to transition GPIF to done
 525   2        }
 526   1      
 527   1        Peripheral_SetAddress( 0x0155 );
 528   1      
 529   1        while( 1 )
 530   1        { // ...the EPx WORDWIDE bits must to be set to
 531   2          // ...configure PORTD as FD[15:8] for single transactions
 532   2          if( EP2FIFOCFG & 0x01 )  // If 16-bit mode - EPx WORDWIDE=1
 533   2          { // illustrate use of efficient 16 bit functions
 534   3            Peripheral_SingleWordWrite( 0xAA55 );
 535   3            Peripheral_SingleWordRead( &wData );
 536   3          }
 537   2          else
 538   2          {
 539   3            Peripheral_SingleByteWrite( 0xA5 );
 540   3            Peripheral_SingleByteRead( &bData );
 541   3          }
 542   2        }
 543   1      }
 544          #endif
C51 COMPILER V6.12  GPIF1                                                                  05/22/2007 13:08:21 PAGE 10  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION GpifInit (BEGIN)
                                           ; SOURCE LINE # 197
                                           ; SOURCE LINE # 198
                                           ; SOURCE LINE # 221
0000 90E601            MOV     DPTR,#IFCONFIG
0003 74CE              MOV     A,#0CEH
0005 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 230
0006 90E6F5            MOV     DPTR,#GPIFABORT
0009 74FF              MOV     A,#0FFH
000B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 232
000C 900000      R     MOV     DPTR,#InitData
000F E0                MOVX    A,@DPTR
0010 90E6F3            MOV     DPTR,#GPIFREADYCFG
0013 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 233
0014 900000      R     MOV     DPTR,#InitData+01H
0017 E0                MOVX    A,@DPTR
0018 90E6C3            MOV     DPTR,#GPIFCTLCFG
001B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 234
001C 900000      R     MOV     DPTR,#InitData+02H
001F E0                MOVX    A,@DPTR
0020 90E6C1            MOV     DPTR,#GPIFIDLECS
0023 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 235
0024 900000      R     MOV     DPTR,#InitData+03H
0027 E0                MOVX    A,@DPTR
0028 90E6C2            MOV     DPTR,#GPIFIDLECTL
002B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 236
002C 900000      R     MOV     DPTR,#InitData+05H
002F E0                MOVX    A,@DPTR
0030 90E6C0            MOV     DPTR,#GPIFWFSELECT
0033 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 237
0034 900000      R     MOV     DPTR,#InitData+06H
0037 E0                MOVX    A,@DPTR
0038 90E6F4            MOV     DPTR,#GPIFREADYSTAT
003B F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 240
003C 75AF07            MOV     AUTOPTRSETUP,#07H
                                           ; SOURCE LINE # 245
003F 7400        R     MOV     A,#HIGH WaveData
0041 F59A              MOV     APTR1H,A
                                           ; SOURCE LINE # 246
0043 7400        R     MOV     A,#LOW WaveData
0045 F59B              MOV     APTR1L,A
                                           ; SOURCE LINE # 249
0047 759DE4            MOV     AUTOPTRH2,#0E4H
                                           ; SOURCE LINE # 250
004A E4                CLR     A
004B F59E              MOV     AUTOPTRL2,A
                                           ; SOURCE LINE # 253
;---- Variable 'i' assigned to Register 'R7' ----
004D FF                MOV     R7,A
004E         ?C0001:
                                           ; SOURCE LINE # 254
C51 COMPILER V6.12  GPIF1                                                                  05/22/2007 13:08:21 PAGE 11  

                                           ; SOURCE LINE # 255
004E 90E67B            MOV     DPTR,#XAUTODAT1
0051 E0                MOVX    A,@DPTR
0052 A3                INC     DPTR
0053 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 256
0054 0F                INC     R7
0055 BF80F6            CJNE    R7,#080H,?C0001
0058         ?C0002:
                                           ; SOURCE LINE # 259
0058 90E671            MOV     DPTR,#PORTCCFG
005B 74FF              MOV     A,#0FFH
005D F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 260
005E F5B4              MOV     OEC,A
                                           ; SOURCE LINE # 261
0060 A3                INC     DPTR
0061 E0                MOVX    A,@DPTR
0062 4480              ORL     A,#080H
0064 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 262
0065 43B680            ORL     OEE,#080H
                                           ; SOURCE LINE # 271
0068 00                NOP     
0069 00                NOP     
006A 00                NOP     
                                           ; SOURCE LINE # 272
006B E4                CLR     A
006C 90E6C4            MOV     DPTR,#GPIFADRH
006F F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 273
0070 00                NOP     
0071 00                NOP     
0072 00                NOP     
                                           ; SOURCE LINE # 274
0073 A3                INC     DPTR
0074 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 275
0075 22                RET     
             ; FUNCTION GpifInit (END)

             ; FUNCTION OtherInit (BEGIN)
                                           ; SOURCE LINE # 283
                                           ; SOURCE LINE # 284
                                           ; SOURCE LINE # 286
0000 22                RET     
             ; FUNCTION OtherInit (END)

             ; FUNCTION _Peripheral_SetAddress (BEGIN)
;---- Variable 'gaddr' assigned to Register 'R4/R5' ----
0000 AC06              MOV     R4,AR6
                                           ; SOURCE LINE # 289
                                           ; SOURCE LINE # 290
                                           ; SOURCE LINE # 291
0002 00                NOP     
0003 00                NOP     
0004 00                NOP     
                                           ; SOURCE LINE # 292
0005 90E6C4            MOV     DPTR,#GPIFADRH
0008 EC                MOV     A,R4
0009 F0                MOVX    @DPTR,A
                                           ; SOURCE LINE # 293
C51 COMPILER V6.12  GPIF1                                                                  05/22/2007 13:08:21 PAGE 12  

000A 00                NOP     
000B 00                NOP     
000C 00                NOP     

⌨️ 快捷键说明

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