📄 d12.h
字号:
#ifndef __d12_h__
#define __d12_h__
#include "mytype.h"
#define MAX_CONTROLDATA_SIZE 16
#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 USB_IDLE 0
#define USB_TRANSMIT 1
#define USB_RECEIVE 2
#define USB_ENDPOINT_DIRECTION_MASK 0x80
#define D12_SETUPPACKET 0x20
#define EP0_PACKET_SIZE 16
#define EP1_TX_FIFO_SIZE 16
#define EP1_RX_FIFO_SIZE 16
#define EP1_PACKET_SIZE 16
#define EP2_TX_FIFO_SIZE 64
#define EP2_RX_FIFO_SIZE 64
#define EP2_PACKET_SIZE 64
#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
#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_CLASS_REQUEST (unsigned char)0x20
#define USB_VENDOR_REQUEST (unsigned char)0x40
#define USB_REQUEST_MASK (unsigned char)0x0F
#define DEVICE_ADDRESS_MASK 0x7F
#define MAX_ENDPOINTS (unsigned char)0x3
#define D12_STALL 0x02
#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
#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
/* 51 */
/*Byte Registers
------------------------------------------------*/
#define Fclk 22118400UL /*使用22.1184M晶体*/
#define BitRate 9600UL /*波特率定义为9600*/
/*------------------------------------------------
SCON Bit Registers
------------------------------------------------*/
sbit RI = 0x98;
sbit TI = 0x99;
sbit RB8 = 0x9A;
sbit TB8 = 0x9B;
sbit REN = 0x9C;
sbit SM2 = 0x9D;
sbit SM1 = 0x9E;
sbit SM0 = 0x9F;
sbit ES = 0xAC; /* 1=Enable Serial port interrupt */
sbit RXD = 0xB0; /* Serial data input */
sbit TXD = 0xB1; /* Serial data output */
sbit TR1 = 0x8E;
sbit P3_2 = 0xB2;
sfr P0 = 0x80;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x8D;
sfr P1 = 0x90;
sfr SCON = 0x98;
sfr SBUF = 0x99;
sfr P2 = 0xA0;
sfr IE = 0xA8;
sfr P3 = 0xB0;
sfr IP = 0xB8;
sfr T2CON = 0xC8;
sfr T2MOD = 0xC9;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sbit EA = 0xAF; /* 0=Disable all interrupts */
typedef union _epp_flags
{
struct _flags
{
uint8 timer :1;//时间溢出
uint8 bus_reset :1;//总线复位
uint8 suspend :1;//挂起改变
uint8 setup_packet :1;//setup包
uint8 remote_wakeup :1;//
uint8 in_isr :1;//
uint8 control_state :2;//
//0:IDEL 空闲
//1:TRANSMIT 发送
//2:RECEIVE 接收
uint8 configuration :1;//配置标志(0:未配置1:已配置)
uint8 verbose : 1;
uint8 command :1;//未使用
uint8 ep1_rxdone :1;//端点1收到数据
uint8 ep2_rxdone :1;//2
uint8 ep1buf_full :1;//端点1输出双缓冲区满标志
uint8 ep2buf_full :1;//
}bits;
uint16 value;
}EPPFLAGS;
//USB设备请求寄存器
typedef struct _device_request
{
uint8 bmRequestType;
uint8 bRequest;
uint16 wValue;
uint16 wIndex;
uint16 wLength;
}DEVICE_REQUEST;
//setup包缓存区
typedef struct _control_xfer
{
DEVICE_REQUEST DeviceRequest;
uint16 wLength;
uint16 wCount;
uint8 * pData; //传输数据指针
uint8 dataBuffer[MAX_CONTROLDATA_SIZE];//请求的数据
}CONTROL_XFER;
//定义标准的设备描述符结构
typedef struct _USB_DEVICE_DESCRIPTOR
{
uint8 blength; //设备描述符的字节数大小
uint8 bDescriptorType; //设备描述符类型编号
uint16 bcdUSB; //USB版本号
uint8 bDeviceClass; //USB分配的设备类代码
uint8 bDeviceSubClass; //USB分配的子类代码
uint8 bDeviceProtocol; //USB分配的设备协议代码
uint8 bMaxPacketSize0; //端点0的最大包大小
uint16 idVendor; //厂商编号
uint16 idProduct; //产品编号
uint16 bcdDevice; //设备出厂编号
uint8 iManufacturer; //设备厂商字符串的索引
uint8 iProduct; //描述产品字符串的索引
uint8 iSerialNumber; //描述设备序列号字符串的索引
uint8 bNumConfigurations; //可能的配置数量
}
USB_DEVICE_DESCRIPTOR, *PUSB_DEVICE_DESCRIPTOR;
//定义标准的配置描述符结构
typedef struct _USB_CONFIGURATION_DESCRIPTOR
{
uint8 bLength; //配置描述符的字节数大小
uint8 bDescriptorType; //配置描述符类型编号
uint16 wTotalLength; //此配置返回的所有数据大小
uint8 bNumInterfaces; //此配置所支持的接口数量
uint8 bConfigurationValue; //Set_Configuration命令所需要的参数值
uint8 iConfiguration; //描述该配置的字符串的索引值
uint8 bmAttributes; //供电模式的选择
uint8 MaxPower; //设备从总线提取的最大电流
}
USB_CONFIGURATION_DESCRIPTOR, * PUSB_CONFIGURATION_DESCRIPTOR;
//定义标准的接口描述符结构
typedef struct _USB_INTERFACE_DESCRIPTOR
{
uint8 bLength; //接口描述符的字节数大小
uint8 bDescriptorType; //接口描述符的类型编号
uint8 bInterfaceNumber; //该接口的编号
uint8 bAlternateSetting; //备用的接口描述符编号
uint8 bNumEndpoints; //该接口使用的端点数,不包括端点0
uint8 bInterfaceClass; //接口类型
uint8 bInterfaceSubClass; //接口子类型
uint8 bInterfaceProtocol; //接口遵循的协议
uint8 iInterface; //描述该接口的字符串索引值
}
USB_INTERFACE_DESCRIPTOR, * PUSB_INTERFACE_DESCRIPTOR;
//定义标准的端点描述符结构
typedef struct _USB_ENDPOINT_DESCRIPTOR
{
uint8 bLength; //端点描述符字节数大小
uint8 bDescriptorType; //端点描述符类型编号
uint8 bEndpointAddress; //端点地址及输入输出属性
uint8 bmAttributes; //端点的传输类型属性
uint16 wMaxPacketSize; //端点收、发的最大包大小
uint8 bInterval; //主机查询端点的时间间隔
}
USB_ENDPOINT_DESCRIPTOR, * PUSB_ENDPOINT_DESCRIPTOR;
typedef struct _USB_STRING_DESCRIPTOR {
uint8 bLength;
uint8 bDescriptorType;
uint8 bString[1];
} USB_STRING_DESCRIPTOR, *PUSB_STRING_DESCRIPTOR;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -