www.pudn.com > USBdiskRW.rar > ezregs.h


//----------------------------------------------------------------------------- 
//	File:		ezregs.h 
//	Contents:	EZ-USB register declarations and bit mask definitions. 
// 
//	Copyright (c) 1997 AnchorChips, Inc. All rights reserved 
//----------------------------------------------------------------------------- 
#ifndef EZREGS_H	/* Header Sentry */ 
#define EZREGS_H 
 
/*----------------------------------------------------------------------------- 
	Global Variables 
-----------------------------------------------------------------------------*/ 
// The Ez-USB registers are defined here. There used to be 3 files containing 
// this information: ezregs.h (external refs), ezregs.c (bound reg names to an  
// explicit address in ezusb.lib), and ezregs.inc (included in assembly files). 
// We now use ezregs.h for register address allocation instead of ezregs.c by   
// using "#define ALLOCATE_EXTERN". The file ezregs.c now just includes ezregs.h. 
// When using "#define ALLOCATE_EXTERN", you get:  
// xdata volatile BYTE OUT7BUF[64]	_at_	0x7B40; 
// Such lines used to be in ezregs.c, but now are created from ezregs.h by using 
// the preprocessor. The definitions in ezregs.c were redundant. 
// Incidently, these lines will not generate any space in the resulting hex  
// file; they just bind the symbols to the addresses for compilation.  
// Since the file ezregs.c is still used in the library build, you normally 
// just need to use #include "ezregs.h" in your files (i.e. fw.c). 
// If you want to generate your own (non-frameworks based) C example, then you  
// just need to put "#define ALLOCATE_EXTERN" in your main program file;  
// i.e. fw.c or a stand-alone C source file. Any time you link with ezusb.lib, 
// it will not be necessary to "#define ALLOCATE_EXTERN". 
// Without "#define ALLOCATE_EXTERN", you just get the external reference:  
// extern xdata volatile BYTE OUT7BUF[64]	;//	0x7B40; 
// This uses the concatenation operator "##" to insert a comment "//"  
// to cut off the end of the line, "_at_	0x7B40;", which is not wanted. 
// If you modify the register definitions below, please regenerate the file  
// "ezregs.inc" which uses the same basic information, but which could not be  
// derived automatically from this one source file using the preprocessor. 
 
/*----------------------------------------------------------------------------- 
	Special Function Registers (SFRs) 
	The byte registers and bits defined in the following list are based 
	on the Synopsis definition of the 8051 Special Function Registers for EZ-USB.  
    If you modify the register definitions below, please regenerate the file  
    "ezregs.inc" which includes the same basic information for assembly inclusion. 
-----------------------------------------------------------------------------*/ 
 
#define	EXTERN	extern 
 
EXTERN xdata volatile BYTE OUT7BUF[64]; 
EXTERN xdata volatile BYTE IN7BUF[64]; 
EXTERN xdata volatile BYTE OUT6BUF[64]; 
EXTERN xdata volatile BYTE IN6BUF[64]; 
EXTERN xdata volatile BYTE OUT5BUF[64]; 
EXTERN xdata volatile BYTE IN5BUF[64]; 
EXTERN xdata volatile BYTE OUT4BUF[64]; 
EXTERN xdata volatile BYTE IN4BUF[64]; 
EXTERN xdata volatile BYTE OUT3BUF[64]; 
EXTERN xdata volatile BYTE IN3BUF[64]; 
EXTERN xdata volatile BYTE OUT2BUF[64]; 
EXTERN xdata volatile BYTE IN2BUF[64]; 
EXTERN xdata volatile BYTE OUT1BUF[64]; 
EXTERN xdata volatile BYTE IN1BUF[64]; 
EXTERN xdata volatile BYTE OUT0BUF[64]; 
EXTERN xdata volatile BYTE IN0BUF[64]; 
 
EXTERN xdata volatile BYTE OUT8DATA; 
EXTERN xdata volatile BYTE OUT9DATA; 
EXTERN xdata volatile BYTE OUT10DATA; 
EXTERN xdata volatile BYTE OUT11DATA; 
EXTERN xdata volatile BYTE OUT12DATA; 
EXTERN xdata volatile BYTE OUT13DATA; 
EXTERN xdata volatile BYTE OUT14DATA; 
EXTERN xdata volatile BYTE OUT15DATA; 
EXTERN xdata volatile BYTE IN8DATA; 
EXTERN xdata volatile BYTE IN9DATA; 
EXTERN xdata volatile BYTE IN10DATA; 
EXTERN xdata volatile BYTE IN11DATA; 
EXTERN xdata volatile BYTE IN12DATA; 
EXTERN xdata volatile BYTE IN13DATA; 
EXTERN xdata volatile BYTE IN14DATA; 
EXTERN xdata volatile BYTE IN15DATA; 
EXTERN xdata volatile BYTE OUT8BCH; 
EXTERN xdata volatile BYTE OUT8BCL; 
EXTERN xdata volatile BYTE OUT9BCH; 
EXTERN xdata volatile BYTE OUT9BCL; 
EXTERN xdata volatile BYTE OUT10BCH; 
EXTERN xdata volatile BYTE OUT10BCL; 
EXTERN xdata volatile BYTE OUT11BCH; 
EXTERN xdata volatile BYTE OUT11BCL; 
EXTERN xdata volatile BYTE OUT12BCH; 
EXTERN xdata volatile BYTE OUT12BCL; 
EXTERN xdata volatile BYTE OUT13BCH; 
EXTERN xdata volatile BYTE OUT13BCL; 
EXTERN xdata volatile BYTE OUT14BCH; 
EXTERN xdata volatile BYTE OUT14BCL; 
EXTERN xdata volatile BYTE OUT15BCH; 
EXTERN xdata volatile BYTE OUT15BCL; 
EXTERN xdata volatile BYTE CPUCS; 
EXTERN xdata volatile BYTE PORTACFG; 
EXTERN xdata volatile BYTE PORTBCFG; 
EXTERN xdata volatile BYTE PORTCCFG; 
EXTERN xdata volatile BYTE OUTA; 
EXTERN xdata volatile BYTE OUTB; 
EXTERN xdata volatile BYTE OUTC; 
EXTERN xdata volatile BYTE PINSA; 
EXTERN xdata volatile BYTE PINSB; 
EXTERN xdata volatile BYTE PINSC; 
EXTERN xdata volatile BYTE OEA; 
EXTERN xdata volatile BYTE OEB; 
EXTERN xdata volatile BYTE OEC; 
EXTERN xdata volatile BYTE UART230; 
EXTERN xdata volatile BYTE ISOERR; 
EXTERN xdata volatile BYTE ISOCTL; 
EXTERN xdata volatile BYTE ZBCOUT; 
EXTERN xdata volatile BYTE ZBCIN; 
EXTERN xdata volatile BYTE I2CS; 
EXTERN xdata volatile BYTE I2DAT; 
EXTERN xdata volatile BYTE IVEC; 
EXTERN xdata volatile BYTE IN07IRQ; 
EXTERN xdata volatile BYTE OUT07IRQ; 
EXTERN xdata volatile BYTE USBIRQ; 
EXTERN xdata volatile BYTE IN07IEN; 
EXTERN xdata volatile BYTE OUT07IEN; 
EXTERN xdata volatile BYTE USBIEN; 
EXTERN xdata volatile BYTE USBBAV; 
EXTERN xdata volatile DWORD BPADDR; 
//volatile EXTERN xdata BYTE BPADDRL	_AT_	0x7FB3; 
EXTERN xdata volatile EPIOC EPIO[16]; 
//EXTERN xdata volatile BYTE SUDPTRH; 
//EXTERN xdata volatile BYTE SUDPTRL; 
EXTERN xdata volatile BYTE USBCS; 
EXTERN xdata volatile BYTE TOGCTL; 
EXTERN xdata volatile BYTE USBFRAMEL; 
EXTERN xdata volatile BYTE USBFRAMEH; 
EXTERN xdata volatile BYTE FNADDR; 
EXTERN xdata volatile BYTE USBPAIR; 
EXTERN xdata volatile BYTE IN07VAL; 
EXTERN xdata volatile BYTE OUT07VAL; 
EXTERN xdata volatile BYTE INISOVAL; 
EXTERN xdata volatile BYTE OUTISOVAL; 
EXTERN xdata volatile BYTE FASTXFR; 
EXTERN xdata volatile BYTE AUTOPTRH; 
EXTERN xdata volatile BYTE AUTOPTRL; 
EXTERN xdata volatile BYTE AUTODATA; 
EXTERN xdata volatile BYTE SETUPDAT[8]; 
EXTERN xdata volatile BYTE OUT8ADDR; 
EXTERN xdata volatile BYTE OUT9ADDR; 
EXTERN xdata volatile BYTE OUT10ADDR; 
EXTERN xdata volatile BYTE OUT11ADDR; 
EXTERN xdata volatile BYTE OUT12ADDR; 
EXTERN xdata volatile BYTE OUT13ADDR; 
EXTERN xdata volatile BYTE OUT14ADDR; 
EXTERN xdata volatile BYTE OUT15ADDR; 
EXTERN xdata volatile BYTE IN8ADDR; 
EXTERN xdata volatile BYTE IN9ADDR; 
EXTERN xdata volatile BYTE IN10ADDR; 
EXTERN xdata volatile BYTE IN11ADDR; 
EXTERN xdata volatile BYTE IN12ADDR; 
EXTERN xdata volatile BYTE IN13ADDR; 
EXTERN xdata volatile BYTE IN14ADDR; 
EXTERN xdata volatile BYTE IN15ADDR; 
 
#undef EXTERN 
 
/*----------------------------------------------------------------------------- 
	Bit Masks 
-----------------------------------------------------------------------------*/ 
 
/* CPU Control & Status Register */ 
#define bmCHIPREV		(bmBIT7 | bmBIT6 | bmBIT5 | bmBIT4) 
#define bmCLK24OE		bmBIT1 
#define bm8052RES		bmBIT0 
/* Port Configuration Registers */ 
/* Port A */ 
#define bmRXD1OUT		bmBIT7 
#define bmRXD0OUT		bmBIT6 
#define bmFRD			bmBIT5 
#define bmFWR			bmBIT4 
#define bmCS			bmBIT3 
#define bmOE			bmBIT2 
#define bmT1OUT			bmBIT1 
#define bmT0OUT			bmBIT0 
/* Port B */ 
#define bmT2OUT			bmBIT7 
#define bmINT6			bmBIT6 
#define bmINT5			bmBIT5 
#define bmINT4			bmBIT4 
#define bmTXD1			bmBIT3 
#define bmRXD1			bmBIT2 
#define bmT2EX			bmBIT1 
#define bmT2			bmBIT0 
/* Port C */ 
#define bmRD			bmBIT7 
#define bmWR			bmBIT6 
#define bmT1			bmBIT5 
#define bmT0			bmBIT4 
#define bmINT1			bmBIT3 
#define bmINT0			bmBIT2 
#define bmTXD0			bmBIT1 
#define bmRXD0			bmBIT0 
/* Isochronous Status & End Point Valid Registers */ 
#define bmEP15			bmBIT7 
#define bmEP14			bmBIT6 
#define bmEP13			bmBIT5 
#define bmEP12			bmBIT4 
#define bmEP11			bmBIT3 
#define bmEP10			bmBIT2 
#define bmEP9			bmBIT1 
#define bmEP8			bmBIT0 
/* I2C Control & Status Register */ 
#define bmSTART			bmBIT7 
#define bmSTOP			bmBIT6 
#define bmLASTRD		bmBIT5 
#define bmID			(bmBIT4 | bmBIT3) 
#define bmBERR			bmBIT2 
#define bmACK			bmBIT1 
#define bmDONE			bmBIT0 
/* Interrupt Vector Register */ 
#define bmIV4			bmBIT6 
#define bmIV3			bmBIT5 
#define bmIV2			bmBIT4 
#define bmIV1			bmBIT3 
#define bmIV0			bmBIT2 
/* End point Interrupt Request, End Point Interrupt Enable */ 
/* And End Point Valid Registers */ 
#define bmEP7			bmBIT7 
#define bmEP6			bmBIT6 
#define bmEP5			bmBIT5 
#define bmEP4			bmBIT4 
#define bmEP3			bmBIT3 
#define bmEP2			bmBIT2 
#define bmEP1			bmBIT1 
#define bmEP0			bmBIT0 
/* Global Interrupt Request & Enable Registers */ 
#define bmIBN        bmBIT5 
#define bmURES			bmBIT4 
#define bmSUSP			bmBIT3 
#define bmSUTOK			bmBIT2 
#define bmSOF			bmBIT1 
#define bmSUDAV			bmBIT0 
/* Global Control */ 
#define bmBREAK			bmBIT3 
#define bmBPPULSE		bmBIT2 
#define bmBPEN			bmBIT1 
#define bmAVEN			bmBIT0 
/* USB Control & Status Register */ 
#define bmRWAKEUP		bmBIT7 
#define bmDISCON		bmBIT3 
#define bmDISCOE		bmBIT2 
#define bmRENUM			bmBIT1 
#define bmSIGRESUME		bmBIT0 
/* End Point 0 Control & Status Register */ 
#define bmOUT			bmBIT3 
#define bmIN			bmBIT2 
#define bmHS			bmBIT1 
#define bmHSSTALL		bmBIT0 
/* End Point Control & Status Registers */ 
#define bmEPSTALL		bmBIT0 
#define bmEPBUSY		bmBIT1 
/* Fast Transfer Register */ 
#define bmFISO			bmBIT7 
#define bmFBLK			bmBIT6 
#define bmRPOL			bmBIT5 
#define bmRMOD1			bmBIT4 
#define bmRMOD0			bmBIT3 
#define bmWPOL			bmBIT2 
#define bmWMOD1			bmBIT1 
#define bmWMOD0			bmBIT0 
/* Endpoint Pairing Register */ 
#define bmISOSEND0		bmBIT7 
#define bmPR6OUT		bmBIT5 
#define bmPR4OUT		bmBIT4 
#define bmPR2OUT		bmBIT3 
#define bmPR6IN			bmBIT2 
#define bmPR4IN			bmBIT1 
#define bmPR2IN			bmBIT0 
/* End point control offsets */ 
enum 
{ 
	IN0BUF_ID = 0, 
	IN1BUF_ID, 
	IN2BUF_ID, 
	IN3BUF_ID, 
	IN4BUF_ID, 
	IN5BUF_ID, 
	IN6BUF_ID, 
	IN7BUF_ID, 
	OUT0BUF_ID, 
	OUT1BUF_ID, 
	OUT2BUF_ID, 
	OUT3BUF_ID, 
	OUT4BUF_ID, 
	OUT5BUF_ID, 
	OUT6BUF_ID, 
	OUT7BUF_ID 
}; 
 
#define EP0CS	EPIO[0].cntrl 
#define IN0BC	EPIO[0].bytes 
#define IN1CS	EPIO[1].cntrl 
#define IN1BC	EPIO[1].bytes 
#define IN2CS	EPIO[2].cntrl 
#define IN2BC	EPIO[2].bytes 
#define IN3CS	EPIO[3].cntrl 
#define IN3BC	EPIO[3].bytes 
#define IN4CS	EPIO[4].cntrl 
#define IN4BC	EPIO[4].bytes 
#define IN5CS	EPIO[5].cntrl 
#define IN5BC	EPIO[5].bytes 
#define IN6CS	EPIO[6].cntrl 
#define IN6BC	EPIO[6].bytes 
#define IN7CS	EPIO[7].cntrl 
#define IN7BC	EPIO[7].bytes 
#define OUT0CS	EPIO[8].cntrl 
#define OUT0BC	EPIO[8].bytes 
#define OUT1CS	EPIO[9].cntrl 
#define OUT1BC	EPIO[9].bytes 
#define OUT2CS	EPIO[10].cntrl 
#define OUT2BC	EPIO[10].bytes 
#define OUT3CS	EPIO[11].cntrl 
#define OUT3BC	EPIO[11].bytes 
#define OUT4CS	EPIO[12].cntrl 
#define OUT4BC	EPIO[12].bytes 
#define OUT5CS	EPIO[13].cntrl 
#define OUT5BC	EPIO[13].bytes 
#define OUT6CS	EPIO[14].cntrl 
#define OUT6BC	EPIO[14].bytes 
#define OUT7CS	EPIO[15].cntrl 
#define OUT7BC	EPIO[15].bytes 
 
/*----------------------------------------------------------------------------- 
	Macros 
-----------------------------------------------------------------------------*/ 
/* Convert End point ID (d0000eee) to EPIO offset */ 
#define EPID(id)		(((~id & 0x80) >> 4) + (id & 0x07)) 
 
 
#endif	/* EZREGS_H */