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

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

?? insusb.h

?? 單片機和D12通訊的C程序.實現(xiàn)了單片機通過USB口和電腦通訊.
?? H
字號:
//
//******************************************************************************************
//					Interface Studio PDIUSBD12 USB1.1 Develop Board
//										C51 Demo					
//	
//									  ALL RIGHTS RESERVED
//******************************************************************************************
//	File name: InsUsb.h
//	Description:	This header file define hardware, constant, struct,and macro.
//				Caution:If user	want to modify them,be careful! Incorrect modification
//				will cause this firmware can not run as what you expect.
//	Version: 	3.0
//  Author:		ShuXian Feng
//	Date:		Aug 5,2004
//******************************************************************************************
//

#ifndef __INSUSB_H__
#define __INSUSB_H__


#include <reg51f.h>
#include <absacc.h>
#include <stdio.h>
                    //調(diào)試輸出選擇

#define _Debug_		//if define,printf statement will be compiled(some printf statement need
					//define _INT_MODE_ also)
#define _INT_MODE_	//if define, firmware will use interrupt mode to operate PDIUSBD12
					//else use inquiry mode


//
//******************************************************************************************
//		Interface Studio PDIUSBD12 USB1.1 Develop Board	hardware define
#define MCU_INNER_RAM		 	XBYTE[0X0000] 		//P89C51RD2 has 768 bytes interal RAM
#define D12_COMMAND_ADDRESS 	        XBYTE[0X1F03] 		//PDIUSBD12 command address		
#define D12_DATA_ADDRESS		XBYTE[0X1F02]		//PDIUSBD12 data address		
#define LED_ADDRESS		        XBYTE[0X5FFF]		//address of 8 led
#define SWITCH_ADDRESS			XBYTE[0X3FFF]		//address of switch 

sbit 	D12_RESET   = P1^1;
sbit 	D12_SUSPEND	= P1^2;
sbit 	WP 			= P1^5;
sbit 	SCL 		= P1^6;
sbit 	SDA 		= P1^7;
sbit 	U_INT 		= P3^2;

#define BOOL	unsigned char


//
//******************************************************************************************
//constant define
//modified from USB100.H,which povided in MicroSoft DDK

#define USB_ENDPOINT_DIRECTION_MASK               0x80

//Descriptor Types,see USB specification 9.4,Table 9-5
#define USB_DEVICE_DESCRIPTOR_TYPE                0x01
#define USB_CONFIGURATION_DESCRIPTOR_TYPE         0x02
#define USB_STRING_DESCRIPTOR_TYPE                0x03
#define USB_INTERFACE_DESCRIPTOR_TYPE             0x04
#define USB_ENDPOINT_DESCRIPTOR_TYPE              0x05

#define USB_ENDPOINT_TYPE_CONTROL                 0x00
#define USB_ENDPOINT_TYPE_ISOCHRONOUS             0x01
#define USB_ENDPOINT_TYPE_BULK                    0x02
#define USB_ENDPOINT_TYPE_INTERRUPT               0x03

#define USB_REQUEST_GET_STATUS                    0x00
#define USB_REQUEST_CLEAR_FEATURE                 0x01
#define USB_REQUEST_SET_FEATURE                   0x03
#define USB_REQUEST_SET_ADDRESS                   0x05
#define USB_REQUEST_GET_DESCRIPTOR                0x06
#define USB_REQUEST_SET_DESCRIPTOR                0x07
#define USB_REQUEST_GET_CONFIGURATION             0x08
#define USB_REQUEST_SET_CONFIGURATION             0x09
#define USB_REQUEST_GET_INTERFACE                 0x0A
#define USB_REQUEST_SET_INTERFACE                 0x0B
#define USB_REQUEST_SYNC_FRAME                    0x0C


typedef struct {
    unsigned char 	bLength;
    unsigned char 	bDescriptorType;
    unsigned int 	bcdUSB;
    unsigned char 	bDeviceClass;
    unsigned char 	bDeviceSubClass;
    unsigned char 	bDeviceProtocol;
    unsigned char 	bMaxPacketSize0;
    unsigned int 	idVendor;
    unsigned int 	idProduct;
    unsigned int 	bcdDevice;
    unsigned char 	iManufacturer;
    unsigned char 	iProduct;
    unsigned char 	iSerialNumber;
    unsigned char 	bNumConfigurations;
} USB_DEVICE_DESCRIPTOR;

typedef struct {
    unsigned char 	bLength;
    unsigned char 	bDescriptorType;
    unsigned char 	bEndpointAddress;
    unsigned char 	bmAttributes;
    unsigned int 	wMaxPacketSize;
    unsigned char 	bInterval;
} USB_ENDPOINT_DESCRIPTOR;

typedef struct {
    unsigned char 	bLength;
    unsigned char 	bDescriptorType;
    unsigned int 	wTotalLength;
    unsigned char 	bNumInterfaces;
    unsigned char 	bConfigurationValue;
    unsigned char 	iConfiguration;
    unsigned char 	bmAttributes;
    unsigned char 	MaxPower;
} USB_CONFIGURATION_DESCRIPTOR;

typedef struct {
    unsigned char 	bLength;
    unsigned char 	bDescriptorType;
    unsigned char 	bInterfaceNumber;
    unsigned char 	bAlternateSetting;
    unsigned char 	bNumEndpoints;
    unsigned char 	bInterfaceClass;
    unsigned char 	bInterfaceSubClass;
    unsigned char 	bInterfaceProtocol;
    unsigned char 	iInterface;
} USB_INTERFACE_DESCRIPTOR;

#define USB_CONFIGURATION_DESCRIPTOR_LENGTH sizeof(USB_CONFIGURATION_DESCRIPTOR)+\
											sizeof(USB_INTERFACE_DESCRIPTOR)+\
										 	(sizeof(USB_ENDPOINT_DESCRIPTOR)<<2)

//
//******************************************************************************************
//
#define USB_REQUEST_BMREQUESTTYPE_TPYE_MASK			0x60
#define USB_REQUEST_BMREQUESTTYPE_TPYE_STANDARD		0x00
#define USB_REQUEST_BMREQUESTTYPE_TPYE_VENDOR		0x40
#define USB_SETUP_PACKET_LENGTH						0x08
#define USB_DEFAULT_DEVICE_ADDRESS					0x00


//PIDUSBD12 command code
//initialization command
#define D12_SET_ADDRESS_ENABLE_DEVICE					0xD0
#define D12_SET_ENDPOINT_ENABLE_DEVICE					0xD8
#define D12_SET_MODE_DEVICE								0xF3
#define D12_SET_DMA_DEVICE								0xFB
//data flow commands
#define D12_READ_INTERRUPT_REGISTER_DEVICE				0xF4
#define D12_SELECT_ENDPOINT_CONTROL_OUT					0x00
#define D12_SELECT_ENDPOINT_CONTROL_IN					0x01
#define D12_SELECT_ENDPOINT_ENDPOINT1_OUT				0x02
#define D12_SELECT_ENDPOINT_ENDPOINT1_IN				0x03
#define D12_SELECT_ENDPOINT_ENDPOINT2_OUT				0x04
#define D12_SELECT_ENDPOINT_ENDPOINT2_IN				0x05
#define D12_READ_LAST_TRANSACTION_STATUS_CONTROL_OUT	0x40
#define D12_READ_LAST_TRANSACTION_STATUS_CONTROL_IN		0x41
#define D12_READ_LAST_TRANSACTION_STATUS_ENDPOINT1_OUT	0x42
#define D12_READ_LAST_TRANSACTION_STATUS_ENDPOINT1_IN	0x43
#define D12_READ_LAST_TRANSACTION_STATUS_ENDPOINT2_OUT	0x44
#define D12_READ_LAST_TRANSACTION_STATUS_ENDPOINT2_IN	0x45
#define D12_READ_BUFFER_SELECTED_ENDPOINT				0xF0
#define D12_WRITE_BUFFER_SELECTED_ENDPOINT				0xF0
#define D12_SET_ENDPOINT_STATUS_CONTROL_OUT				0x40
#define D12_SET_ENDPOINT_STATUS_CONTROL_IN				0x41
#define D12_SET_ENDPOINT_STATUS_ENDPOINT1_OUT			0x42
#define D12_SET_ENDPOINT_STATUS_ENDPOINT1_IN			0x43
#define D12_SET_ENDPOINT_STATUS_ENDPOINT2_OUT			0x44
#define D12_SET_ENDPOINT_STATUS_ENDPOINT2_IN			0x45
#define D12_ACKNOWLEDGE_SETUP_SELECTED_ENDPOINT			0xF1
#define D12_CLEAR_BUFFER_SELECTED_ENDPOINT				0xF2
#define D12_VALIDATE_BUFFER_SELECTED_ENDPOINT			0xFA
//gernal command
#define D12_SEND_RESUME									0xF6
#define D12_READ_CURRENT_FRAME_NUMBER					0xF5

///////////////////////////////////////////////////////////////////////
#define FIRMWARE_VERSION	0x30		//BCD code,3.0 is 0x30

#define D12_EP0_MAX_PACKET_SIZE		16	//16 bytes
#define D12_EP1_MAX_PACKET_SIZE		8	//1  bytes
#define D12_EP2_MAX_PACKET_SIZE		64	//64 bytes

#define WORD_SWAP(word) ((((word) & 0xFF) << 8) | (((word) >> 8) & 0xFF))
#define CONTROL_ENDPOINT_STALL			D12_COMMAND_ADDRESS = D12_SET_ENDPOINT_STATUS_CONTROL_OUT;\
										D12_DATA_ADDRESS = D12_ENDPOINT_STALL;\
										D12_COMMAND_ADDRESS = D12_SET_ENDPOINT_STATUS_CONTROL_IN;\
										D12_DATA_ADDRESS = D12_ENDPOINT_STALL;
#define GENERIC_ENDPOINT_STALL(bEndpointIndex)		D12_COMMAND_ADDRESS = bEndpointIndex;\
													D12_DATA_ADDRESS = D12_ENDPOINT_STALL;

#define IDLE				0x00
#define TRANSMIT			0x55
#define RECEIVE				0xAA

#define FALSE				0x00
#define TRUE				0xFF

#define D12_INT_BUS_RESET		0x40
#define D12_INT_SUSPEND_CHANGE	0x80
#define D12_INT_ENDP0_IN		0x02
#define D12_INT_ENDP0_OUT		0x01
#define D12_INT_ENDP1_IN		0x08
#define D12_INT_ENDP1_OUT		0x04
#define D12_INT_ENDP2_IN		0x20
#define D12_INT_ENDP2_OUT		0x10

#define D12_ENDPOINT_STALL			0x01
#define D12_ENDPOINT_NO_STALL		0x00
//select endpoint command,optional read one byte,
//bit 0 express the endpoint buffer is full or empty
#define D12_BUFFER_FULL_EMPTY_MASK	0x01

#define D12_BUFFER_LENGTH_ERROR		0xFF
//bit 5 of read last transaction status 
#define D12_SETUP_PACKET_MASK		0x20




#define EP0_OUT_BUFFER_SIZE			128
#define EP0_IN_BUFFER_SIZE			8
#define EP1_OUT_BUFFER_SIZE			1
#define EP1_IN_BUFFER_SIZE			1
#define RAM_BUFFER_SIZE				512
//vendor defined request code
#define RAM_COMMAND_LOOPBACK		0xA0
#define RAM_COMMAND_READ			0xA1
#define RAM_COMMAND_WRITE			0xA2
#define GET_FIRMWARE_VERSION		0xB0
#define SET_DEVICE_SERIAL_NUMBER	0xB1
#define NOTIFY_APP_START			0xB2

////////////////////////////////////////////////////////////////////////////////////
//USB device request structure
typedef struct _USB_DEVICE_REQUEST
{
	unsigned char bmRequestType;
	unsigned char bRequest;
	unsigned int  wValue;
	unsigned int  wIndex;
	unsigned int  wLength;
} USB_DEVICE_REQUEST;

//this structure is used for Control Read/Write 
typedef struct _USB_SETUP_DEALWITH
{

	BOOL			bControlOutDataComplete;
	BOOL			bControOutCommandIsPending;
	unsigned int  	wRemaindLength;
	unsigned char 	*pDataSourceAddress;
} USB_SETUP_DEALWITH;

typedef struct _RAM_CONTROL
{
	unsigned char  	bRamCommand;		//bRamCommand: 	0xA0: loopback test
										//				0xA1: Ram read
										//				0xA2: Ram write
	unsigned char	bRamRwStatus;		//bRamRwStatus:	IDLE or TRANSMIT or RECEIVE state
	unsigned int	iRamStartAddress;
	unsigned int	iRamRwLength;
	unsigned int	iRamRemaindLength;
} RAM_CONTROL;


//PDIUSBD12 Develop Board use this structure as global control
typedef struct _SYS_INFORMATION {
	BOOL			bRamError;
	BOOL			bTimer0;
	BOOL			bBusReset;
	BOOL		   	bSuspendChange;
	BOOL		   	bInSuspend;				//0x00:no suspend, 0x01:in suspend
	BOOL			bRemoteWakeUpEnable;	//0x00:disabled,0xff:enabled
	BOOL			bSetup;					//if 0x00,no Setup packet received,if 0x55,received a Setup packet
	unsigned char   bD12ConfigurationValue;	//value is 0x01 if D12 has already been configed,
											//otherwise ,it is 0x00,enpoint1/2 has not been enabled
	unsigned char   bUsbStatus;				//control transfer statemachine state: IDLE or TRANSMIT or RECEIVE
	USB_DEVICE_REQUEST	sUsbDeviceRequest;
	USB_SETUP_DEALWITH	sUsbSetUpDealwith;
	RAM_CONTROL		sRamControl;

} SYS_INFORMATION;


#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产美女av一区二区三区| 国产日韩欧美电影| 夜夜亚洲天天久久| 91在线一区二区| 中文字幕一区二区三区乱码在线| 国产精品综合一区二区三区| 国产日产精品一区| caoporm超碰国产精品| 一区二区在线观看视频在线观看| 在线观看国产一区二区| 亚洲成人自拍网| 欧美α欧美αv大片| 国模套图日韩精品一区二区| 国产精品视频一二| 日本道免费精品一区二区三区| 亚洲在线观看免费视频| 8v天堂国产在线一区二区| 经典一区二区三区| 国产精品无码永久免费888| 91啪亚洲精品| 日韩国产在线一| 欧美国产精品一区二区三区| 91影院在线观看| 日韩电影在线一区二区三区| 久久夜色精品国产噜噜av| 91免费精品国自产拍在线不卡| 亚洲福利国产精品| 久久网这里都是精品| 91麻豆蜜桃一区二区三区| 日本aⅴ亚洲精品中文乱码| 国产精品色婷婷| 欧美欧美欧美欧美| 粉嫩av亚洲一区二区图片| 亚洲一区二区成人在线观看| 精品国产三级电影在线观看| 一本色道亚洲精品aⅴ| 日本午夜一区二区| 亚洲一区二区精品视频| 99视频精品免费视频| 国产精品美女久久久久久久久久久| 一本一道波多野结衣一区二区| 9191国产精品| 亚洲一区二区三区四区在线观看 | 日韩伦理免费电影| 国产色91在线| 国产精品亲子伦对白| 国产精品嫩草影院av蜜臀| 中文字幕不卡在线| 国产精品久久久久永久免费观看| 国产精品你懂的在线| 综合久久久久综合| 亚洲综合色网站| 亚洲h精品动漫在线观看| 强制捆绑调教一区二区| 久久99精品国产麻豆婷婷| 国产一区二区三区美女| 国产乱一区二区| yourporn久久国产精品| 99精品欧美一区二区三区综合在线| 97久久精品人人做人人爽| 在线免费av一区| 91.成人天堂一区| 久久亚洲一区二区三区四区| 国产蜜臀97一区二区三区| 亚洲人吸女人奶水| 午夜电影一区二区三区| 蜜臀av亚洲一区中文字幕| 国产精品亚洲视频| 色呦呦国产精品| 欧美日韩精品高清| 久久色视频免费观看| 国产精品久久久久一区| 亚洲成人先锋电影| 韩日欧美一区二区三区| av电影在线观看一区| 欧美丝袜丝nylons| 精品久久人人做人人爰| 中文字幕在线一区| 日韩电影一区二区三区四区| 国产成人综合亚洲91猫咪| 色av一区二区| 精品久久国产97色综合| 18成人在线观看| 免费成人在线视频观看| 成a人片国产精品| 91精品国产综合久久久久久漫画| 久久精子c满五个校花| 亚洲一区精品在线| 麻豆精品久久精品色综合| 99久久国产综合色|国产精品| 5858s免费视频成人| 国产精品久久久久久久久免费樱桃| 亚洲国产中文字幕| 国产成人av电影在线播放| 欧美精三区欧美精三区| 国产亚洲午夜高清国产拍精品| 亚洲图片欧美视频| 成人av免费在线| 欧美成人三级在线| 亚洲影院久久精品| 国产91精品一区二区麻豆亚洲| 欧美日韩精品一区二区在线播放| 久久精品视频一区| 日韩精品一区第一页| 色综合天天性综合| 久久嫩草精品久久久精品一| 亚洲大片在线观看| 91在线小视频| 国产欧美日韩麻豆91| 日本成人中文字幕在线视频| 91免费国产视频网站| 国产日本一区二区| 久久电影网站中文字幕| 欧美午夜电影网| 亚洲人成影院在线观看| 国产成人免费视频一区| 欧美一区二区黄| 亚洲电影一级片| 在线亚洲欧美专区二区| 欧美激情中文不卡| 国产专区欧美精品| 欧美大胆一级视频| 天天影视色香欲综合网老头| 91丝袜国产在线播放| 国产清纯在线一区二区www| 久久精品国产一区二区| 欧美精选一区二区| 亚洲成人自拍偷拍| 在线观看国产91| 一区二区三区在线视频观看| 99精品国产99久久久久久白柏| 久久精品人人做人人综合 | 激情欧美一区二区三区在线观看| 欧美久久一二三四区| 香蕉加勒比综合久久| 欧美日韩一二区| 亚洲无线码一区二区三区| 欧美性色欧美a在线播放| 一区二区三区日韩欧美精品| 色先锋资源久久综合| 亚洲三级电影网站| 91久久久免费一区二区| 亚洲综合久久久| 欧美色男人天堂| 天堂精品中文字幕在线| 久久综合九色欧美综合狠狠| 免费观看在线色综合| 日韩欧美美女一区二区三区| 久久9热精品视频| 26uuu国产在线精品一区二区| 国产一区亚洲一区| 欧美激情一区二区三区全黄| 成人99免费视频| 亚洲久草在线视频| 欧美日韩国产乱码电影| 日产国产高清一区二区三区| 欧美成人免费网站| 国产馆精品极品| 亚洲男女毛片无遮挡| 欧美日韩三级视频| 久久99蜜桃精品| 国产欧美日韩亚州综合| 91丝袜美女网| 天天综合天天做天天综合| 日韩一区二区三区四区| 国产91综合一区在线观看| 亚洲私人黄色宅男| 91精品在线免费| 国产麻豆精品在线观看| 亚洲日本成人在线观看| 欧美日韩日日摸| 国产最新精品免费| 最好看的中文字幕久久| 欧美日韩不卡在线| 国产成人av一区二区三区在线观看| 亚洲欧美经典视频| 欧美一区二视频| 处破女av一区二区| 亚洲韩国一区二区三区| 欧美精品一区二区高清在线观看 | 成人精品小蝌蚪| 亚洲超丰满肉感bbw| 久久久99精品免费观看不卡| 99久久精品免费| 免费精品视频在线| 18欧美亚洲精品| 日韩精品一区二区在线| 色综合久久综合网欧美综合网| 日本 国产 欧美色综合| 亚洲天堂精品在线观看| 欧美电影免费观看高清完整版在线观看| 成人免费观看视频| 欧美96一区二区免费视频| 中文欧美字幕免费| 欧美一级日韩不卡播放免费| 9l国产精品久久久久麻豆| 久久国产日韩欧美精品| 一区二区久久久久久| 国产日产欧美一区二区三区 | 欧美少妇性性性|