亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ezusb.h

?? 對于想學(xué)用vb寫usb的朋友
?? H
字號:
//-----------------------------------------------------------------------------
//	File:		ezusb.h
//	Contents:	EZ-USB constants, macros, datatypes, globals, and library
//				function prototypes.
//
//	Copyright (c) 1997 AnchorChips, Inc. All rights reserved
//      Adapted for use with HIDs by Jan Axelson (jan@lvr.com)
//-----------------------------------------------------------------------------
#ifndef EZUSB_H		//Header sentry
#define EZUSB_H

//#define CHIPREV_B					// Indicate target chip revision
#define CHIPREV_C

#define GET_CHIP_REV()		((CPUCS >> 4) & 0x00FF) // EzUSB Chip Rev Field
//#define EZUSB_CHIPREV_B 0		// This Rev has been taken over by TNG
#define EZUSB_TNG_CHIPREV_A 0	// Rev 0 now means TNG RevA
#define EZUSB_CHIPREV_C 2
#define EZUSB_CHIPREV_D 3
#define EZUSB_CHIPREV_E 4

#define INTERNAL_DSCR_ADDR 0x0080	// Relocate Descriptors to 0x80
#define bmSTRETCH 0x07
#define FW_STRETCH_VALUE 0x0		// Set stretch to 0 in frameworks
									// Note: a RevE eratta states that stretch must=0 to set OUTxBC

//-----------------------------------------------------------------------------
// Constants
//-----------------------------------------------------------------------------
#define	TRUE 	1
#define FALSE	0

#define bmBIT0	0x01
#define bmBIT1	0x02
#define bmBIT2	0x04
#define bmBIT3	0x08
#define bmBIT4	0x10
#define bmBIT5	0x20
#define bmBIT6	0x40
#define bmBIT7	0x80

#define DEVICE_DSCR		0x01		// Descriptor type: Device
#define CONFIG_DSCR		0x02		// Descriptor type: Configuration
#define STRING_DSCR		0x03		// Descriptor type: String
#define INTRFC_DSCR		0x04		// Descriptor type: Interface
#define ENDPNT_DSCR		0x05		// Descriptor type: End Point

#define	bmBUSPWR	bmBIT7			// Config. attribute: Bus powered
#define bmSELFPWR	bmBIT6			// Config. attribute: Self powered
#define bmRWU		bmBIT5			// Config. attribute: Remote Wakeup

#define bmEPOUT		bmBIT7
#define bmEPIN		0x00

#define EP_CONTROL	0x00			// End Point type: Control
#define EP_ISO		0x01			// End Point type: Isochronous
#define EP_BULK		0x02			// End Point type: Bulk
#define EP_INT		0x03			// End Point type: Interrupt

#define SUD_SIZE				8		// Setup data packet size

#define SC_GET_STATUS			0x00	// Setup command: Get Status
#define SC_CLEAR_FEATURE		0x01	// Setup command: Clear Feature
#define SC_RESERVED				0x02	// Setup command: Reserved
#define SC_SET_FEATURE			0x03	// Setup command: Set Feature
#define SC_SET_ADDRESS			0x05	// Setup command: Set Address
#define SC_GET_DESCRIPTOR		0x06	// Setup command: Get Descriptor
#define SC_SET_DESCRIPTOR		0x07	// Setup command: Set Descriptor
#define SC_GET_CONFIGURATION	0x08	// Setup command: Get Configuration
#define SC_SET_CONFIGURATION	0x09	// Setup command: Set Configuration
#define SC_GET_INTERFACE		0x0a	// Setup command: Get Interface
#define SC_SET_INTERFACE		0x0b	// Setup command: Set Interface
#define SC_SYNC_FRAME			0x0c	// Setup command: Sync Frame
#define SC_ANCHOR_LOAD			0xa0	// Setup command: Anchor load
	
#define GD_DEVICE				0x01	// Get device descriptor: Device
#define GD_CONFIGURATION		0x02	// Get device descriptor: Configuration
#define GD_STRING				0x03	// Get device descriptor: String

//HID code start
#define GD_REPORT				0x22	// Get HID report descriptor
//HID code end

#define GS_DEVICE				0x80	// Get Status: Device
#define GS_INTERFACE			0x81	// Get Status: Interface
#define GS_ENDPOINT				0x82	// Get Status: End Point

#define FT_DEVICE				0x00	// Feature: Device
#define FT_ENDPOINT				0x02	// Feature: End Point

#define I2C_IDLE				0		// I2C Status: Idle mode
#define I2C_SENDING				1		// I2C Status: I2C is sending data
#define I2C_RECEIVING			2		// I2C Status: I2C is receiving data
#define I2C_PRIME				3		// I2C Status: I2C is receiving the first byte of a string
#define I2C_STOP				5		// I2C Status: I2C waiting for stop completion
#define I2C_BERROR				6		// I2C Status: I2C error; Bit Error
#define I2C_NACK				7		// I2C Status: I2C error; No Acknowledge
#define I2C_OK					8		// I2C positive return code
#define I2C_WAITSTOP					9		// I2C Status: Wait for STOP complete

/*-----------------------------------------------------------------------------
	Macros
-----------------------------------------------------------------------------*/

#define MSB(word)		(BYTE)(((WORD)word >> 8) & 0xff)
#define LSB(word)		(BYTE)((WORD)word & 0xff)

#define SWAP_ENDIAN(word)	((BYTE*)&word)[0] ^= ((BYTE*)&word)[1];\
							((BYTE*)&word)[1] ^= ((BYTE*)&word)[0];\
							((BYTE*)&word)[0] ^= ((BYTE*)&word)[1]

#define EZUSB_IRQ_ENABLE()	EUSB = 1
#define EZUSB_IRQ_DISABLE()	EUSB = 0
#ifndef CHIPREV_B
#define EZUSB_IRQ_CLEAR()	EXIF &= ~0x10		// IE2_
#endif

#define EZUSB_STALL_EP0()				EP0CS |= bmEPSTALL
#define EZUSB_STALL_EP(ep_id)  			EPIO[ep_id].cntrl = bmEPSTALL
#define EZUSB_UNSTALL_EP(ep_id)			EPIO[ep_id].cntrl = 0
#define	EZUSB_GET_EP_STATUS(ep_id)		EPIO[ep_id].cntrl
#define EZUSB_SET_EP_BYTES(ep_id,count)	EPIO[ep_id].bytes = count

// the WRITEDELAY macro compiles to the time equivalent of 3 NOPs.
// It is used in the frameworks to allow for write recovery time
// requirements of certain registers.  This is only necessary for
// EZ-USB FX parts.  See the EZ-USB FX TRM for
// more information on write recovery time issues.
#define WRITEDELAY() {char writedelaydummy = 0;}
// if this firmware will never run on an EZ-USB FX part replace
// with:
// #define WRITEDELAY()

#define EZUSB_RESET_DATA_TOGGLE(ep)     TOGCTL = (((ep & 0x80) >> 3) + (ep & 0x07));\
                                        WRITEDELAY();\
                                        TOGCTL |= 0x20


#define EZUSB_ENABLE_RSMIRQ()		(EICON |= 0x20)		// Enable Resume Interrupt (EPFI_)
#define EZUSB_DISABLE_RSMIRQ()		(EICON &= ~0x20)	// Disable Resume Interrupt (EPFI_)
#define EZUSB_CLEAR_RSMIRQ()		(EICON &= ~0x10)	// Clear Resume Interrupt Flag (PFI_)

#define EZUSB_GETI2CSTATUS()		(I2CPckt.status)
#define EZUSB_CLEARI2CSTATUS()		if((I2CPckt.status == I2C_BERROR) || (I2CPckt.status == I2C_NACK))\
										I2CPckt.status = I2C_IDLE;

#define EZUSB_ENABLEBP()			(USBBAV |= bmBPEN)
#define EZUSB_DISABLEBP()			(USBBAV &= ~bmBPEN)
#define EZUSB_CLEARBP()				(USBBAV |= bmBREAK)
#define EZUSB_BP(addr)				BPADDR = (WORD)addr

#define EZUSB_EXTWAKEUP()			(USBCS & bmRWAKEUP)

//-----------------------------------------------------------------------------
// Datatypes
//-----------------------------------------------------------------------------
typedef unsigned char	BYTE;
typedef unsigned short	WORD;
typedef unsigned long	DWORD;
typedef bit				BOOL;

#define	INT0_VECT	0
#define	TMR0_VECT	1
#define	INT1_VECT	2
#define	TMR1_VECT	3
#define	COM0_VECT	4
#define	TMR2_VECT	5
#define	WKUP_VECT	6
#define	COM1_VECT	7
#define	USB_VECT	8
#define	I2C_VECT	9
#define	INT4_VECT	10
#define	INT5_VECT	11
#define	INT6_VECT	12

#define	SUDAV_USBVECT	(0 << 2)
#define	SOF_USBVECT		(1 << 2)
#define	SUTOK_USBVECT	(2 << 2)
#define	SUSP_USBVECT	(3 << 2)
#define	URES_USBVECT	(4 << 2)
#define	SPARE_USBVECT	(5 << 2)
#define	IN0BUF_USBVECT	(6 << 2)
#define	OUT0BUF_USBVECT	(7 << 2)
#define	IN1BUF_USBVECT	(8 << 2)
#define	OUT1BUF_USBVECT	(9 << 2)
#define	IN2BUF_USBVECT	(10 << 2)
#define	OUT2BUF_USBVECT	(11 << 2)
#define	IN3BUF_USBVECT	(12 << 2)
#define	OUT3BUF_USBVECT	(13 << 2)
#define	IN4BUF_USBVECT	(14 << 2)
#define	OUT4BUF_USBVECT	(15 << 2)
#define	IN5BUF_USBVECT	(16 << 2)
#define	OUT5BUF_USBVECT	(17 << 2)
#define	IN6BUF_USBVECT	(18 << 2)
#define	OUT6BUF_USBVECT	(19 << 2)
#define	IN7BUF_USBVECT	(20 << 2)
#define	OUT7BUF_USBVECT	(21 << 2)

typedef struct
{
	BYTE	length;
	BYTE	type;
}DSCR;

typedef struct				// Device Descriptor
{
	BYTE	length;			// Descriptor length ( = sizeof(DEVICEDSCR) )
	BYTE	type;			// Decriptor type (Device = 1)
	BYTE	spec_ver_minor;	// Specification Version (BCD) minor
	BYTE	spec_ver_major;	// Specification Version (BCD) major
	BYTE	dev_class;		// Device class
	BYTE	sub_class;		// Device sub-class
	BYTE	protocol;		// Device sub-sub-class
	BYTE	max_packet;		// Maximum packet size
	WORD	vendor_id;		// Vendor ID
	WORD	product_id;		// Product ID
	WORD	version_id;		// Product version ID
	BYTE	mfg_str;		// Manufacturer string index
	BYTE	prod_str;		// Product string index
	BYTE	serialnum_str;	// Serial number string index
	BYTE	configs;		// Numder of configurations
}DEVICEDSCR;

typedef struct
{
	BYTE	length;			// Configuration length ( = sizeof(CONFIGDSCR) )
	BYTE	type;			// Descriptor type (Configuration = 2)
	WORD	config_len;		// Configuration + End Points length
	BYTE	interfaces;		// Number of interfaces
	BYTE	index;			// Configuration number
	BYTE	config_str;		// Configuration string
	BYTE	attrib;			// Attributes (b7 - buspwr, b6 - selfpwr, b5 - rwu
	BYTE	power;			// Power requirement (div 2 ma)
}CONFIGDSCR;

typedef struct
{
	BYTE	length;			// Interface descriptor length ( - sizeof(INTRFCDSCR) )
	BYTE	type;			// Descriptor type (Interface = 4)
	BYTE	index;			// Zero-based index of this interface
	BYTE	alt_setting;	// Alternate setting
	BYTE	ep_cnt;			// Number of end points 
	BYTE	class;			// Interface class
	BYTE	sub_class;		// Interface sub class
	BYTE	protocol;		// Interface sub sub class
	BYTE	interface_str;	// Interface descriptor string index
}INTRFCDSCR;

typedef struct
{
	BYTE	length;			// End point descriptor length ( = sizeof(ENDPNTDSCR) )
	BYTE	type;			// Descriptor type (End point = 5)
	BYTE	addr;			// End point address
	BYTE	ep_type;		// End point type
	BYTE	mp_L;			// Maximum packet size
	BYTE	mp_H;
	BYTE	interval;		// Interrupt polling interval
}ENDPNTDSCR;

typedef struct
{
	BYTE	length;			// String descriptor length
	BYTE	type;			// Descriptor type
}STRINGDSCR;

// HID code start

typedef struct
{
	BYTE	length;			// HID descriptor length ( = sizeof(HIDDSCR) )
	BYTE	type;			// Descriptor type (HID = 21h)
	BYTE	specl;			// HID spec # low byte
	BYTE	spech;			// HID spec # high byte
	BYTE	country;		// Country localization (0 = none) 
	BYTE	num_dscr;		// Number of descriptors to follow
	BYTE	dscr_type;		// Descriptor type to follow (22h = report)
	BYTE	reportlength;		// Report descriptor length
}HIDDSCR;

typedef struct				// HID Report Descriptor for this application
{
	BYTE	Usage_Page_Code1;	
	BYTE	Usage_Page_LSB1;
	BYTE	Usage_Page_MSB1;
	BYTE	Usage_Code1;
	BYTE	Usage_Value1;
	BYTE	Collection_Code1;
	BYTE	Collection_Value1;
	BYTE	Usage_Code2;
	BYTE	Usage_Value2;
	BYTE	Collection_Code2;
	BYTE	Collection_Value2;
	BYTE	Usage_Page_Code2;
 	BYTE	Usage_Page_LSB2;
	BYTE	Usage_Page_MSB2;
// Input report
	BYTE	Usage_Code3;
	BYTE	Usage_Value3;
	BYTE	Usage_Code4;
	BYTE	Usage_Value4;
	BYTE	Logical_Min_In_Code;
	BYTE	Logical_Min_In_Value;
	BYTE	Logical_Max_In_Code;
	BYTE	Logical_Max_In_Value;
	BYTE	Physical_Min_In_Code;
	BYTE	Physical_Min_In_Value;
	BYTE	Physical_Max_In_Code;
	BYTE	Physical_Max_In_Value;
	BYTE	Report_Size_In_Code;
	BYTE	Report_Size_In_Value;
	BYTE	Report_Count_In_Code;
	BYTE	Report_Count_In_Value;
	BYTE	Input_Code;
	BYTE	Input_Value;
// Output report
	BYTE	Usage_Code5;
	BYTE	Usage_Value5;
	BYTE	Usage_Code6;
	BYTE	Usage_Value6;
	BYTE	Logical_Min_Out_Code;
	BYTE	Logical_Min_Out_Value;
	BYTE	Logical_Max_Out_Code;
	BYTE	Logical_Max_Out_Value;
	BYTE	Physical_Min_Out_Code;
	BYTE	Physical_Min_Out_Value;
	BYTE	Physical_Max_Out_Code;
	BYTE	Physical_Max_Out_Value;
	BYTE	Report_Size_Out_Code;
	BYTE	Report_Size_Out_Value;
	BYTE	Report_Count_Out_Code;
	BYTE	Report_Count_Out_Value;
	BYTE	Output_Code;
	BYTE	Output_Value;

	BYTE	End_Collection1;
	BYTE	End_Collection2;
}REPORTDSCR;

// HID code end

typedef struct
{
	BYTE	cntrl;			// End point control register
	BYTE	bytes;			// End point buffer byte count
}EPIOC;

typedef struct 
{
	BYTE	length;
	BYTE	*dat;
	BYTE	count;
	BYTE	status;
}I2CPCKT;

//-----------------------------------------------------------------------------
// Globals
//-----------------------------------------------------------------------------
extern code BYTE	USB_AutoVector;

extern WORD	pDeviceDscr;
extern WORD	pConfigDscr;
extern WORD	pStringDscr;
extern WORD	pReportDscr;
extern code DEVICEDSCR	DeviceDscr;
extern code CONFIGDSCR	ConfigDscr;
extern code STRINGDSCR	StringDscr;
extern code REPORTDSCR	ReportDscr;
extern code DSCR		UserDscr;

extern I2CPCKT	I2CPckt;

//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------
#ifdef CHIPREV_B
extern void EZUSB_IRQ_CLEAR(void);
#endif

extern void EZUSB_Renum(void);
extern void EZUSB_Discon(BOOL renum);

extern void EZUSB_Susp(void);
extern void EZUSB_Resume(void);

extern void EZUSB_Delay1ms(void);
extern void EZUSB_Delay(WORD ms);

extern CONFIGDSCR xdata*	EZUSB_GetConfigDscr(BYTE ConfigIdx);
extern INTRFCDSCR xdata*	EZUSB_GetIntrfcDscr(BYTE ConfigIdx, BYTE IntrfcIdx, BYTE AltSetting);
extern STRINGDSCR xdata*	EZUSB_GetStringDscr(BYTE StrIdx);
extern DSCR xdata*		EZUSB_GetDscr(BYTE index, DSCR* dscr, BYTE type);

extern void EZUSB_InitI2C(void);
extern BOOL EZUSB_WriteI2C_(BYTE addr, BYTE length, BYTE xdata *dat);
extern BOOL EZUSB_ReadI2C_(BYTE addr, BYTE length, BYTE xdata *dat);
extern BOOL EZUSB_WriteI2C(BYTE addr, BYTE length, BYTE xdata *dat);
extern BOOL EZUSB_ReadI2C(BYTE addr, BYTE length, BYTE xdata *dat);
extern void EZUSB_WaitForEEPROMWrite(BYTE addr);

#endif	// EZUSB_H

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品伦理一区二区| 久久久精品2019中文字幕之3| 色天天综合色天天久久| 成人欧美一区二区三区白人| 色婷婷久久99综合精品jk白丝| 久久精品夜色噜噜亚洲a∨| 九九热在线视频观看这里只有精品| 色8久久人人97超碰香蕉987| 亚洲已满18点击进入久久| 色系网站成人免费| 五月天一区二区| 日韩欧美国产一区在线观看| 国产在线视视频有精品| 国产精品乱人伦| 欧美精品视频www在线观看| 首页亚洲欧美制服丝腿| 日韩一区二区三区电影在线观看 | 日韩精品最新网址| 久久av资源站| 国产精品美女一区二区在线观看| 欧美日韩国产高清一区二区| 免费高清在线视频一区·| 久久久精品tv| 91麻豆精品国产91久久久| 成人性生交大片免费看中文 | 欧美激情一区二区| 日韩免费观看2025年上映的电影| a4yy欧美一区二区三区| 另类专区欧美蜜桃臀第一页| 亚洲人精品一区| 日韩久久久精品| 欧美成人精品高清在线播放| 日本精品一级二级| 成人av手机在线观看| 国内精品在线播放| 久久99国产精品免费网站| 亚洲动漫第一页| 亚洲午夜免费视频| 日韩美女久久久| 国产欧美一区二区精品秋霞影院| 欧美成人r级一区二区三区| 91精品国产综合久久福利| 777午夜精品免费视频| 日韩久久久久久| 成人免费一区二区三区视频| 国产精品欧美久久久久无广告 | 国产盗摄精品一区二区三区在线 | 中文字幕亚洲电影| 久久网站最新地址| 国产精品免费久久| 亚洲伊人色欲综合网| 亚洲成av人**亚洲成av**| 久久99精品一区二区三区 | 欧美成人性福生活免费看| 国产农村妇女毛片精品久久麻豆| 亚洲视频网在线直播| 九九热在线视频观看这里只有精品| 91色乱码一区二区三区| 久久精品免视看| 久88久久88久久久| 欧美午夜精品一区二区蜜桃 | 欧美色网站导航| 久久综合久久综合久久| 自拍偷在线精品自拍偷无码专区| 一区二区三区在线高清| 国产一区二区91| 欧美日韩免费观看一区三区| 欧美一区国产二区| 国产精品久久久久久久久免费丝袜| 亚洲综合男人的天堂| 蜜臂av日日欢夜夜爽一区| 国产一区二区三区| 欧美在线free| 亚洲伦理在线精品| 成人av在线网| 国产精品美女视频| 99久久久国产精品| 精品久久人人做人人爰| 婷婷综合久久一区二区三区| 成人av资源在线| 国产精品久久看| 成人性生交大片免费看视频在线| 国产午夜精品一区二区三区嫩草 | 一区二区视频在线| 色噜噜久久综合| 亚洲精品国产精品乱码不99| 在线观看免费成人| 日本成人中文字幕| 欧美一区2区视频在线观看| 亚洲欧美日韩一区二区三区在线观看| 国产精品系列在线播放| 国产欧美日产一区| 91麻豆国产自产在线观看| 亚洲午夜免费福利视频| 精品国产露脸精彩对白| 成人免费毛片嘿嘿连载视频| 亚洲欧美日韩一区二区| 这里只有精品电影| www.亚洲国产| 奇米一区二区三区av| 亚洲人精品午夜| 国产精品网站一区| 欧美一区二区三区在线| 成人免费观看av| 国产一区二区美女| 亚洲国产一二三| 亚洲人123区| 中文字幕乱码日本亚洲一区二区| 91亚洲永久精品| 国产一区二区调教| 老司机精品视频线观看86| 亚洲综合色婷婷| 亚洲一级不卡视频| 国产精品美女视频| 国产亚洲欧美在线| 日韩女优毛片在线| 精品人在线二区三区| 国产亚洲欧美日韩俺去了| 久久丝袜美腿综合| 国产午夜精品在线观看| 久久综合九色综合欧美亚洲| 久久久亚洲精品石原莉奈| 91精品国产aⅴ一区二区| 色综合天天综合网天天看片| 国产伦精品一区二区三区免费| 亚洲h在线观看| 亚洲久草在线视频| 亚洲欧美另类久久久精品| 中文字幕佐山爱一区二区免费| 亚洲精品国产一区二区精华液| 一区二区三区欧美| 人人爽香蕉精品| 国产福利视频一区二区三区| 国产综合色在线| 99国产精品久久久| 欧美精品一区男女天堂| 国产精品久久99| 日韩影视精彩在线| 色综合激情久久| 欧美成人免费网站| 五月天婷婷综合| 在线观看亚洲成人| 中文字幕一区免费在线观看| 日韩 欧美一区二区三区| 97久久人人超碰| 久久九九99视频| 亚洲精品视频一区| 亚洲国产cao| 欧美色倩网站大全免费| 久久久精品国产99久久精品芒果| 亚洲午夜在线电影| 在线日韩一区二区| 中文字幕制服丝袜成人av| 久久国产夜色精品鲁鲁99| 91.麻豆视频| 青草av.久久免费一区| 日本乱人伦aⅴ精品| 亚洲欧美日韩一区二区 | 国产成人精品综合在线观看| 日韩免费成人网| 久久99精品国产麻豆不卡| 欧美一区二区三区视频在线| 一区二区三区四区不卡视频| 91小视频免费观看| 日韩美女视频一区二区| 91丨九色丨国产丨porny| 国产精品久久久久aaaa| 色妞www精品视频| 亚洲乱码国产乱码精品精可以看 | 91电影在线观看| 亚洲欧美影音先锋| 97精品视频在线观看自产线路二| 亚洲视频在线一区| 日韩一区二区免费电影| 亚洲午夜精品17c| 欧美区一区二区三区| 国产一区二三区| 亚洲色图在线看| 日韩午夜激情av| 成人动漫av在线| 蜜臀久久99精品久久久久宅男| 国产日产欧产精品推荐色| 国产成人午夜视频| 亚洲综合免费观看高清在线观看| 欧美日韩电影在线| 国产成人av电影在线观看| 亚洲女厕所小便bbb| 久久综合色综合88| 欧美日韩高清一区二区三区| 99精品黄色片免费大全| 国产一区二区中文字幕| 日韩精品高清不卡| 日韩中文字幕区一区有砖一区| 国产精品久久三区| 久久精品亚洲一区二区三区浴池| 欧美在线看片a免费观看| 成人黄色片在线观看| 另类小说欧美激情| 美女网站色91| 久久精品av麻豆的观看方式|