⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d12.h

📁 STC51+PDIUSBD12 USB鼠标源代码
💻 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 + -