www.pudn.com > data-isotransfer.rar > FUNCTION.C


#pragma NOIV 
 
#include "testheader.h" 
#include "testregs.h" 
 
extern BOOL	Rwuen;     
extern BOOL	GotSUD;	 
extern BOOL	Sleep; 
extern BOOL	Selfpwr; 
extern BOOL	RECINT0; 
 
BYTE	Configuration;	 
BYTE	AlternateSetting;	 
BYTE    suspCount; 
 
int    ByteCount0; 
 
void TD_Init(void) 		 
{ 
    USBIEN |= bmSOF + bmURES;     
 
    OUTISOVAL = bmEP8 + bmEP9 + bmEP10 + bmEP11 + bmEP12 + bmEP13 + bmEP14 + bmEP15; 
 
    INISOVAL = bmEP8 + bmEP9 + bmEP10 + bmEP11 + bmEP12 + bmEP13 + bmEP14 + bmEP15; 
     
    OUT8ADDR = 0x00; 
    OUT9ADDR = 0x20; 
    OUT10ADDR = 0x40; 
    IN8ADDR = 0x60; 
    IN9ADDR = 0x80; 
    IN10ADDR = 0x100; 
 
    suspCount = 1;    
    Rwuen = TRUE;	 
 
    RECINT0=FALSE; 
    ByteCount0=0; 
 
    PORTCCFG = 0x0C;     
    PORTACFG = 0xFF;     
    OEC = 0x33;          
    OEA = 0xFF; 
 
    OUTC =(PINSC)&0xFC;         
    OUTC =(PINSC)&0xFC;         
    OUTC =(PINSC)&0xFC;         
    OUTC =(PINSC)&0xFC;         
    OUTC =(PINSC)|0x02;        
    OUTC =(PINSC)|0x02;        
    OUTC =(PINSC)|0x02;        
    OUTC =(PINSC)|0x02;        
 
    OUTC =(PINSC)|0x10;         
    OUTC =(PINSC)|0x10;         
    OUTC =(PINSC)|0x10;         
    OUTC =(PINSC)|0x10;         
 
    OUTC = (PINSC)&0xDF;      
    OUTC = (PINSC)&0xDF;      
    OUTC = (PINSC)&0xDF;      
    OUTC = (PINSC)&0xDF;      
} 
 
void TD_Poll(void) 		 
{ 
                                 
} 
 
BOOL TD_Suspend(void) 	      	 
{                              
    PORTCCFG = 0x0C;         
    OEC = 0x33 ;             
 
   return(TRUE); 
}       
 
BOOL TD_Resume(void) 		 
{ 
	return(TRUE);            
} 
BOOL DR_GetDescriptor(void)      
{	 
	return(TRUE);            
} 
BOOL DR_GetInterface(void) 	 
{ 
	IN0BUF[0] = AlternateSetting; 
	EZUSB_SET_EP_BYTES(IN0BUF_ID,1); 
	return(TRUE);		 
} 
BOOL DR_SetInterface(void) 	 
{ 
	AlternateSetting = SETUPDAT[2]; 
	return(TRUE);		 
} 
BOOL DR_GetConfiguration(void)	 
{ 
	IN0BUF[0] = Configuration; 
	EZUSB_SET_EP_BYTES(IN0BUF_ID,1); 
	return(TRUE);		 
} 
BOOL DR_SetConfiguration(void)	 
{ 
	Configuration = SETUPDAT[2]; 
	return(TRUE);		 
} 
 
BOOL DR_GetStatus(void)          
{ 
	return(TRUE);            
} 
BOOL DR_ClearFeature(void)       
{ 
	return(TRUE);            
} 
 
BOOL DR_SetFeature(void)         
{ 
	return(TRUE);            
} 
 
BOOL DR_VendorCmnd(void) 
{ 
        return(FALSE); 
} 
 
void ISR_Sudav(void) interrupt USB_VECT 
{ 
	GotSUD = TRUE;			 
 
	EZUSB_IRQ_CLEAR(); 
	USBIRQ = bmSUDAV;		 
} 
 
void ISR_Sutok(void) interrupt USB_VECT 
{ 
	EPIO[OUT0BUF_ID].cntrl = 0;	 
 
	EZUSB_IRQ_CLEAR(); 
	USBIRQ = bmSUTOK;		 
} 
 
void ISR_Sof(void) interrupt USB_VECT 
{ 
   register BYTE zbcout = ZBCOUT; 
   register int i; 
 
   if (!(zbcout & bmEP8)) 
   { 
       if (OUT8DATA==0x1A)        
       { 
        OUTC =(PINSC)&0xFC;     
        OUTC =(PINSC)&0xFC;     
        OUTC =(PINSC)&0xFC;     
        OUTC =(PINSC)&0xFC;     
 
        OUTC =(PINSC)|0x22;     
        OUTC =(PINSC)|0x22;     
        OUTC =(PINSC)|0x22;     
        OUTC =(PINSC)|0x22;     
 
        TMOD=0x02;              
        TL0=0x7D;               
        TH0=0x7D;               
  
        TR0=1;        
       } 
   } 
 
   if (!(zbcout & bmEP9)) 
   { 
       if(OUT9DATA==0x2B) 
       { 
        TR0=0;        
 
        OUTC = (PINSC)&0xDF;     
        OUTC = (PINSC)&0xDF;     
        OUTC = (PINSC)&0xDF;     
        OUTC = (PINSC)&0xDF;     
       } 
   } 
 
   if(RECINT0==TRUE)  
   {          
        FASTXFR = 0x80; 
 
        for (i=0; i < 4; i++)     
        { 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
              IN10DATA = ACC; 
        } 
        FASTXFR = 0x0; 
        ByteCount0=ByteCount0+32; 
         
        if(ByteCount0>=512) 
        { 
              RECINT0=FALSE; 
              ByteCount0=0;          
        }  
   } 
	 
   EZUSB_IRQ_CLEAR(); 
   USBIRQ = bmSOF;		 
} 
 
void ISR_Ures(void) interrupt USB_VECT 
{ 
	EZUSB_IRQ_CLEAR(); 
	USBIRQ = bmURES;		 
} 
 
void ISR_Spare(void) interrupt USB_VECT 
{ 
	                                
} 
 
void ISR_Susp(void) interrupt USB_VECT 
{ 
   if (suspCount) 
   { 
           suspCount--; 
   } 
   else 
   { 
	   Sleep = TRUE; 
   } 
	   EZUSB_IRQ_CLEAR(); 
	   USBIRQ = bmSUSP; 
} 
 
void ISR_Ep0in(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep0out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep1in(void) interrupt USB_VECT 
{ 
} 
void ISR_Ep1out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep2in(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep2out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep3in(void) interrupt USB_VECT 
{   
} 
 
void ISR_Ep3out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep4in(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep4out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep5in(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep5out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep6in(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep6out(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep7in(void) interrupt USB_VECT 
{ 
} 
 
void ISR_Ep7out(void) interrupt USB_VECT 
{ 
}