📄 gpif_init.lst
字号:
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 + -