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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb.h

?? 用AVR單片機實現USB口通信,特別是用CVAVR實現了系統(tǒng)應用
?? H
字號:
#include <avr/pgmspace.h>
typedef unsigned char   UCHAR;
typedef unsigned char   uchar;
typedef unsigned char   BYTE;
typedef unsigned short  USHORT;
typedef unsigned long   ULONG;
typedef unsigned char   BOOL;
//this part from epphal.h
#define D12_DATA  0x02
#define D12_COMMAND 0x03
#define Set_Bit(val, bitn)    (val |=(1<<(bitn))) 
#define Clr_Bit(val, bitn)     (val&=~(1<<(bitn)))  
#define D12_CS  0
#define D12_WR  1 
#define D12_RD  2
#define D12_ALE  3
#define DISABLE  cli()
#define ENABLE   sei()

//this part from D12CI.h
#define D12_NOLAZYCLOCK			0x02
#define D12_CLOCKRUNNING        0x04
#define D12_INTERRUPTMODE		0x08
#define D12_SOFTCONNECT			0x10
#define D12_ENDP_NONISO			0x00
#define D12_ENDP_ISOOUT			0x40
#define D12_ENDP_ISOIN			0x80
#define D12_ENDP_ISOIO			0xC0

#define D12_CLOCK_12M			0x03
#define D12_CLOCK_4M			0x0b
#define D12_SETTOONE            0x40
#define D12_SOFONLY				0x80

#define D12_DMASINGLE			0x00
#define D12_BURST_4				0x01
#define D12_BURST_8				0x02
#define D12_BURST_16			0x03
#define D12_DMAENABLE           0x04
#define D12_DMA_INTOKEN			0x08
#define D12_AUTOLOAD			0x10
#define D12_NORMALPLUSSOF		0x20
#define D12_ENDP4INTENABLE		0x40
#define D12_ENDP5INTENABLE		0x80	// bug fixed in V2.1

#define D12_INT_ENDP0OUT		0x01
#define D12_INT_ENDP0IN			0x02
#define D12_INT_ENDP1OUT		0x04
#define D12_INT_ENDP1IN			0x08
#define D12_INT_ENDP2OUT		0x10
#define D12_INT_ENDP2IN			0x20
#define D12_INT_BUSRESET		0x40
#define D12_INT_SUSPENDCHANGE	0x80
#define D12_INT_EOT				0x0100

#define D12_SETUPPACKET			0x20

#define D12_BUFFER0FULL			0x20
#define D12_BUFFER1FULL			0x40

#define D12_FULLEMPTY			0x01
#define D12_STALL				0x02

//this part from mainloop.h


#define MAX_ENDPOINTS      (unsigned char)0x3

#define EP0_TX_FIFO_SIZE   16
#define EP0_RX_FIFO_SIZE   16
#define EP0_PACKET_SIZE    16

#define EP1_TX_FIFO_SIZE   4
#define EP1_RX_FIFO_SIZE   4
#define EP1_PACKET_SIZE    4
#define EP2_PACKET_SIZE    64

#define USB_IDLE           0
#define USB_TRANSMIT       1
#define USB_RECEIVE        2

#define USB_CLASS_CODE_TEST_CLASS_DEVICE                    0xdc
#define USB_SUBCLASS_CODE_TEST_CLASS_D12                    0xA0
#define USB_PROTOCOL_CODE_TEST_CLASS_D12                    0xB0
#define USB_RECIPIENT            (unsigned char)0x1F
#define USB_RECIPIENT_DEVICE     (unsigned char)0x00
#define USB_RECIPIENT_INTERFACE  (unsigned char)0x01
#define USB_RECIPIENT_ENDPOINT   (unsigned char)0x02

#define USB_REQUEST_TYPE_MASK    (unsigned char)0x60
#define USB_STANDARD_REQUEST     (unsigned char)0x00
#define USB_REQUEST_MASK         (unsigned char)0x0F
#define DEVICE_ADDRESS_MASK      0x7F
#define FALSE   0
#define TRUE    (!FALSE)

#define MAX_CONTROLDATA_SIZE	8
typedef struct _device_request
{
	unsigned char bmRequestType;
	unsigned char bRequest;
	unsigned short wValue;
	unsigned short wIndex;
	unsigned short wLength;
} DEVICE_REQUEST;
typedef union _epp_flags
{
	struct _flags
	{
		unsigned char bus_reset           	: 1;
		unsigned char suspend             	: 1;
		unsigned char setup_packet  	  	: 1;
		unsigned char remote_wakeup		: 1;
		unsigned char in_isr		      	: 1;
		unsigned char control_state		: 2;

		unsigned char configuration		: 1;
		unsigned char ep1_rxdone			: 1;
		unsigned char main_rxdone			: 1;
		unsigned char setup_dma			: 2; // V2.3
	} bits;
	unsigned short value;
} EPPFLAGS;

typedef struct _control_xfer
{
	DEVICE_REQUEST DeviceRequest;
	unsigned short wLength;
	unsigned short wCount;
	unsigned char * pData;
	unsigned char dataBuffer[MAX_CONTROLDATA_SIZE];
} CONTROL_XFER;

//this part from usb.h
#define MAXIMUM_USB_STRING_LENGTH 255

// values for the bits returned by the USB GET_STATUS command
#define USB_GETSTATUS_SELF_POWERED                0x01
#define USB_GETSTATUS_REMOTE_WAKEUP_ENABLED       0x02


#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_POWER_DESCRIPTOR_TYPE                 0x06

#define USB_DESCRIPTOR_MAKE_TYPE_AND_INDEX(d, i) ((USHORT)((USHORT)d<<8 | i))

//
// Values for bmAttributes field of an
// endpoint descriptor
//

#define USB_ENDPOINT_TYPE_MASK                    0x03

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


//
// definitions for bits in the bmAttributes field of a 
// configuration descriptor.
//
#define USB_CONFIG_POWERED_MASK                   0xc0

#define USB_CONFIG_BUS_POWERED                    0x80
#define USB_CONFIG_SELF_POWERED                   0x40
#define USB_CONFIG_REMOTE_WAKEUP                  0x20

//
// Endpoint direction bit, stored in address
//

#define USB_ENDPOINT_DIRECTION_MASK               0x80

// test direction bit in the bEndpointAddress field of
// an endpoint descriptor.
#define USB_ENDPOINT_DIRECTION_OUT(addr)          (!((addr) & USB_ENDPOINT_DIRECTION_MASK))
#define USB_ENDPOINT_DIRECTION_IN(addr)           ((addr) & USB_ENDPOINT_DIRECTION_MASK)

//
// USB defined request codes
// see chapter 9 of the USB 1.0 specifcation for
// more information.
//

// These are the correct values based on the USB 1.0
// specification

#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


//
// defined USB device classes
//


#define USB_DEVICE_CLASS_RESERVED           0x00
#define USB_DEVICE_CLASS_AUDIO              0x01
#define USB_DEVICE_CLASS_COMMUNICATIONS     0x02
#define USB_DEVICE_CLASS_HUMAN_INTERFACE    0x03
#define USB_DEVICE_CLASS_MONITOR            0x04
#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE 0x05
#define USB_DEVICE_CLASS_POWER              0x06
#define USB_DEVICE_CLASS_PRINTER            0x07
#define USB_DEVICE_CLASS_STORAGE            0x08
#define USB_DEVICE_CLASS_HUB                0x09
#define USB_DEVICE_CLASS_VENDOR_SPECIFIC    0xFF

//
// USB defined Feature selectors
//

#define USB_FEATURE_ENDPOINT_STALL          0x0000
#define USB_FEATURE_REMOTE_WAKEUP           0x0001
#define USB_FEATURE_POWER_D0                0x0002
#define USB_FEATURE_POWER_D1                0x0003
#define USB_FEATURE_POWER_D2                0x0004
#define USB_FEATURE_POWER_D3                0x0005

typedef struct _USB_DEVICE_DESCRIPTOR {
    uchar bLength;
    uchar bDescriptorType;
    USHORT bcdUSB;
    uchar bDeviceClass;
    uchar bDeviceSubClass;
    uchar bDeviceProtocol;
    uchar bMaxPacketSize0;
    USHORT idVendor;
    USHORT idProduct;
    USHORT bcdDevice;
    uchar iManufacturer;
    uchar iProduct;
    uchar iSerialNumber;
    uchar bNumConfigurations;
} USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;

typedef struct _USB_ENDPOINT_DESCRIPTOR {
    uchar bLength;
    uchar bDescriptorType;
    uchar bEndpointAddress;
    uchar bmAttributes;
    USHORT wMaxPacketSize;
    uchar bInterval;
} USB_ENDPOINT_DESCRIPTOR, *PUSB_ENDPOINT_DESCRIPTOR;

//
// values for bmAttributes Field in
// USB_CONFIGURATION_DESCRIPTOR
//

#define BUS_POWERED                           0x80
#define SELF_POWERED                          0x40
#define REMOTE_WAKEUP                         0x20

typedef struct _USB_CONFIGURATION_DESCRIPTOR {
    uchar bLength;
    uchar bDescriptorType;
    USHORT wTotalLength;
    uchar bNumInterfaces;
    uchar bConfigurationValue;
    uchar iConfiguration;
    uchar bmAttributes;
    uchar MaxPower;
} USB_CONFIGURATION_DESCRIPTOR, *PUSB_CONFIGURATION_DESCRIPTOR;

typedef struct _USB_INTERFACE_DESCRIPTOR {
    uchar bLength;
    uchar bDescriptorType;
    uchar bInterfaceNumber;
    uchar bAlternateSetting;
    uchar bNumEndpoints;
    uchar bInterfaceClass;
    uchar bInterfaceSubClass;
    uchar bInterfaceProtocol;
    uchar iInterface;
} USB_INTERFACE_DESCRIPTOR, *PUSB_INTERFACE_DESCRIPTOR;

typedef struct _USB_STRING_DESCRIPTOR {
    const prog_uchar bLength;
    const prog_uchar bDescriptorType;
    const prog_uchar bString[1];
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;

//this part for chap_9
#define NUM_ENDPOINTS	4
typedef struct _CON_INT_ENDP_DESCRIPTOR_STRUCT
{
 USB_CONFIGURATION_DESCRIPTOR configuration_descriptor;
 USB_INTERFACE_DESCRIPTOR  interface_descritor;
 USB_ENDPOINT_DESCRIPTOR  EP1_TXDescr;
 USB_ENDPOINT_DESCRIPTOR  EP1_RXDescr;
 USB_ENDPOINT_DESCRIPTOR  EP2_TXDescr;
 USB_ENDPOINT_DESCRIPTOR  EP2_RXDescr;
}CON_INT_ENDP_DESCRIPTOR_STRUCT;

#define CONFIG_DESCRIPTOR_LENGTH    sizeof(USB_CONFIGURATION_DESCRIPTOR) \
									+ sizeof(USB_INTERFACE_DESCRIPTOR) \
									+ (NUM_ENDPOINTS * sizeof(USB_ENDPOINT_DESCRIPTOR))
#define MSB(x)    (((x) >> 8) & 0xFF)
#define LSB(x)    ((x) & 0xFF)





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区三区网站 | 久久精品国产亚洲a| 波多野结衣中文一区| 91视频91自| www国产精品av| 石原莉奈在线亚洲三区| 91论坛在线播放| www国产亚洲精品久久麻豆| 亚洲国产一区视频| 一本一本大道香蕉久在线精品| 欧美一区二区三区视频在线观看| 亚洲三级电影全部在线观看高清| 韩国精品免费视频| 欧美精品一级二级| 亚洲一区在线观看网站| 97久久精品人人爽人人爽蜜臀| 精品三级av在线| 美女任你摸久久| 欧美区视频在线观看| 一区二区高清视频在线观看| 风间由美一区二区三区在线观看 | 日韩丝袜美女视频| 亚洲大片一区二区三区| 91麻豆国产自产在线观看| 国产精品拍天天在线| 国产美女精品一区二区三区| 日韩丝袜美女视频| 日本aⅴ免费视频一区二区三区| 欧美日韩精品一区二区三区四区| 怡红院av一区二区三区| 99国产精品久久久久久久久久久| 国产精品少妇自拍| 成人在线一区二区三区| 国产精品福利一区二区三区| hitomi一区二区三区精品| 国产精品国产自产拍高清av| 99久久久久久| 亚洲女与黑人做爰| 欧美午夜影院一区| 日韩电影在线免费| 日韩一区二区不卡| 激情文学综合插| 中国av一区二区三区| www.亚洲激情.com| 伊人夜夜躁av伊人久久| 欧美性大战久久久久久久| 天天综合日日夜夜精品| 日韩美一区二区三区| 国模套图日韩精品一区二区| 国产视频一区在线观看| 一本色道**综合亚洲精品蜜桃冫| 亚洲一区二区在线视频| 欧美一区二视频| 国产美女在线精品| 一区二区三区四区不卡在线| 717成人午夜免费福利电影| 精品无人码麻豆乱码1区2区| 中文字幕一区二区三区在线播放| 91久久奴性调教| 麻豆久久久久久| 国产精品国产三级国产aⅴ中文| 色妹子一区二区| 另类小说一区二区三区| 国产精品第五页| 色久综合一二码| 国产精品亚洲午夜一区二区三区 | 欧美在线观看一区| 奇米精品一区二区三区在线观看 | 日韩激情一区二区| 国产欧美日韩精品一区| 3d成人动漫网站| 成人美女视频在线观看| 日韩精品乱码av一区二区| 国产女主播一区| 日韩一区二区在线免费观看| 成人av网站在线观看| 日韩av高清在线观看| 中文字幕成人网| 欧美一区二区在线免费播放| 99v久久综合狠狠综合久久| 日本色综合中文字幕| 国产精品九色蝌蚪自拍| 日韩欧美国产综合一区| 91香蕉视频mp4| 国产成人精品免费在线| 日本在线不卡一区| 亚洲欧美日本在线| 欧美经典一区二区| 日韩美女视频在线| 欧美性videosxxxxx| eeuss鲁片一区二区三区| 欧美精选在线播放| 天天影视色香欲综合网老头| 国产91精品一区二区麻豆网站| 喷白浆一区二区| 亚洲综合成人网| 国产人成一区二区三区影院| 欧美伦理影视网| 欧美四级电影在线观看| 91美女片黄在线| aa级大片欧美| 成人h动漫精品一区二区| 国产成人午夜电影网| 久久99热这里只有精品| 免费观看在线综合色| 日韩和欧美一区二区三区| 亚洲码国产岛国毛片在线| 中文字幕第一页久久| 久久久综合视频| 久久蜜桃一区二区| 久久免费电影网| 欧美韩国一区二区| 国产日韩欧美高清| 国产精品人人做人人爽人人添| 久久久噜噜噜久久中文字幕色伊伊 | 另类中文字幕网| 麻豆精品久久久| 久久精品国产99| 国产一区欧美日韩| 国产高清不卡一区二区| 国产大陆精品国产| 国产传媒日韩欧美成人| 国产99久久久久久免费看农村| 国产精品一区久久久久| 国产不卡视频在线播放| 99国产精品一区| 欧美在线一区二区| 欧美一区二区三区日韩| 日韩精品一区二区三区视频| 精品久久久久一区二区国产| 久久久美女毛片| 亚洲免费av在线| 五月天激情综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 色哟哟国产精品| 欧美高清你懂得| 精品国产一区二区三区不卡| 国产女主播视频一区二区| 日韩一区在线看| 亚洲风情在线资源站| 美日韩一区二区| 国产成人午夜精品影院观看视频| 97久久超碰精品国产| 欧美精品1区2区| 久久这里只有精品6| 亚洲嫩草精品久久| 欧美bbbbb| 91在线观看美女| 日韩三级.com| 亚洲图片另类小说| 日本成人中文字幕在线视频 | 六月丁香综合在线视频| bt7086福利一区国产| 欧美一区二区视频在线观看2020 | 91麻豆.com| 日韩欧美三级在线| 亚洲视频免费在线| 精品一区二区成人精品| av激情综合网| 精品国产91乱码一区二区三区 | 91精品福利在线一区二区三区| 国产欧美日韩三级| 午夜久久久久久| 成人午夜av在线| 日韩免费成人网| 亚洲成人手机在线| 99精品视频一区二区三区| 日韩精品一区二区三区三区免费| 亚洲激情六月丁香| 成人午夜激情片| 久久久久国产精品麻豆ai换脸| 亚洲在线免费播放| 99久久久无码国产精品| 精品国产乱码久久久久久1区2区 | 7777精品伊人久久久大香线蕉最新版| 久久久国产午夜精品| 热久久免费视频| 91丝袜美女网| 国产精品私人影院| 国产一区中文字幕| 91麻豆精品国产综合久久久久久| 亚洲三级电影网站| 成人av在线播放网站| 久久男人中文字幕资源站| 美日韩一区二区| 欧美精品tushy高清| 亚洲观看高清完整版在线观看| 91免费观看视频| 国产精品成人午夜| 国产黑丝在线一区二区三区| 欧美大片在线观看| 日韩高清国产一区在线| 欧美天堂一区二区三区| 亚洲免费观看视频| 色一情一伦一子一伦一区| 日韩美女啊v在线免费观看| 成人高清伦理免费影院在线观看| 久久免费的精品国产v∧| 国产综合色精品一区二区三区| 精品国精品国产尤物美女|