?? gpif1.lst
字號:
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
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -