我用的是内部时钟。 
void Dealy_Moment() 
{ 
WORD i; 
for( i = 0x0000; i < 0x7FF; i++ ) 
{ 
SYNCDELAY;  
SYNCDELAY;  
} 
} 
 
void TD_Init(void) // Called once at startup 
{ 
// set the CPU clock to 48MHz 
CPUCS = ((CPUCS & ~bmCLKSPD) | bmCLKSPD1) ; 
 
// set the slave FIFO interface to 48MHz 
IFCONFIG |= 0xC3; 
 
// Registers which require a synchronization delay, see section 15.14 
// FIFORESET FIFOPINPOLAR 
// INPKTEND OUTPKTEND 
// EPxBCH:L REVCTL 
// GPIFTCB3 GPIFTCB2 
// GPIFTCB1 GPIFTCB0 
// EPxFIFOPFH:L EPxAUTOINLENH:L 
// EPxFIFOCFG EPxGPIF标志寄存器SEL 
// PINFLAGSxx EPxFIFOIRQ 
// EPxFIFOIE GPIFIRQ 
// GPIFIE GPIFADRH:L 
// UDMACRCH:L EPxGPIFTRIG 
// GPIFTRIG 
 
// Note: The pre-REVE EPxGPIFTCH/L register are affected, as well... 
// ...these have been replaced by GPIFTC[B3:B0] registers 
 
// default: all endpoints have their VALID bit set 
// default: TYPE1 = 1 and TYPE0 = 0 --> BULK  
// default: EP2 and EP4 DIR bits are 0 (OUT direction) 
// default: EP6 and EP8 DIR bits are 1 (IN direction) 
// default: EP2, EP4, EP6, and EP8 are double buffered 
 
// we are just using the default values, yes this is not necessary... 
REVCTL = 0x03; // MUST set REVCTL.0 and REVCTL.1 to 1 
SYNCDELAY; 
 
SYNCDELAY; 
EP2CFG=0xA0; //需要设定为四缓冲,每个缓冲区大小为512字节 
SYNCDELAY; 
EP4CFG=0x00; 
SYNCDELAY; 
EP6CFG=0xE0; //in 2缓冲,大小512Byte 
SYNCDELAY; 
EP8CFG=0x00; 
 
PORTACFG = 0x00; 
SYNCDELAY; 
OEA |= 0x0F; 
SYNCDELAY; 
PA0 = 1; 
SYNCDELAY; SYNCDELAY; 
SYNCDELAY; SYNCDELAY; 
SYNCDELAY; SYNCDELAY; 
PA1 = 1; 
SYNCDELAY; SYNCDELAY; 
SYNCDELAY; SYNCDELAY; 
SYNCDELAY; SYNCDELAY; 
Dealy_Moment();  
 
SYNCDELAY; 
FIFORESET = 0x80; // Reset the FIFO 
SYNCDELAY; 
FIFORESET = 0x02; 
SYNCDELAY; 
FIFORESET = 0x06; 
SYNCDELAY; 
FIFORESET = 0x00; 
SYNCDELAY; 
 
PA0 = 0; 
SYNCDELAY; SYNCDELAY; 
PA1 = 0; 
SYNCDELAY; SYNCDELAY; 
Dealy_Moment(); 
 
// out endpoints do not come up armed 
// since the defaults are double buffered we must write dummy byte counts twice 
SYNCDELAY;  
EP2BCL = 0x80; // arm EP2OUT by writing byte count w/skip. 
SYNCDELAY;  
EP2BCL = 0x80; 
SYNCDELAY;  
EP6BCL = 0x80; // arm EP4OUT by writing byte count w/skip. 
SYNCDELAY;  
EP6BCL = 0x80;  
 
//小于64字节有效 
//EP6FIFOPFH=0x00; //DEIS PKSTAT PK2 PK1 PK0 0 PFC9 PFC8 
//EP6FIFOPFL=0x40; //PFC7 PFC6 PFC5 PFC4 PFC3 PFC2 PFC1 PFC0 
 
// handle the case where we were already in AUTO mode... 
// EP2FIFOCFG = 0x01; // AUTOOUT=0, WORDWIDE=1 
SYNCDELAY; 
 
EP6FIFOCFG = 0x09; // AUTOIN=1, ZEROLENIN=0, WORDWIDE=1 
SYNCDELAY; 
 
//IO设置 
//PORTCCFG = 0x00; 
//PORTECFG = 0x00; 
//OEC=0x00; 
//OEE=0xff; 
//串口初始化 
 
 
// enable dual autopointer feature 
AUTOPTRSETUP |= 0x01;
 |