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

📄 ch375.txt

📁 单片机处理USB接口手柄程序 可用于USB通信实现
💻 TXT
📖 第 1 页 / 共 2 页
字号:
/****************************************
**                                     **
**  读取游戏手柄的数据,处理后转发     **
**                                     **


/********************************************************************************************************
**                                                                                                     **
**                                  北通野牛游戏手柄  设备描述符                                       **
**                                                                                                     **
*********************************************************************************************************
**                                                                                                     **
**  0x12            // bLength 描述符长度 = 12H                                         			   **
**  0x01            // bDescriptorType 描述符类型 = 1H                                      		   **
**  0x0001          // bcdUSB  设备版本号 = 你发行的版本的号                                    	   **
**  0x00            // bDeviceClass  类型代码 = 由USB指定                                   		   **
**  0x00            // bDeviceSubClass 子类型代码 = 由USB分配                                   	   **
**  0x00            // bDeviceProtocol  协议代码 = 由USB分配                                    	   **
**  0x08            // bMaxPacketSize0 端点0的容量 = 64(只能是 8,16,32,64)                             **
**  0x8f0e          // idVendor 供应商ID(同USB协会分配,我就自己分配一份)                               **
**  0x0300          // idProduct 产品ID(由厂商分配)                                         		   **
**  0x0701          // bcdDevice  ( 设备出厂编号 )                                          		   **
**  0x01            // iManufacturer ( 厂商描述字符串索引, 用来在字符串索引中查找字符串 )            **
**  0x02            // iProduct ( 产品描述字符串索引, 用来在字符串索引中查找字符串 )                 **
**  0x00            // iSerialNumber  ( 设备序列号描述字符串索引, 用来在字符串索引中查找字符串 )    **
**  0x01            // bNumConfigurations ( 配置字符串的个数 )                              	   **
**                                                                                                     **
********************************************************************************************************/


/********************************************************************************************************
**                                                                                                     **
**                                  北通野牛游戏手柄  配置描述符                                       **
**                                                                                                     **
*********************************************************************************************************
**                                                                                                     **
**  0x09            // bLength 描述符长度 = 9H                                      				   **
**  0x02            // bDescriptorType 描述符类型 = 2H                                      		   **
**  0x22            // wTotalLength                                                     			   **
**           0x09 + // 返回描述符串集的长度, 配置描述字符长度                                   	   **
**           0x09 + // 接口描述字符长度                                             				   **
**           0x09 + // HID描述字符长度                                              				   **
**           0x07   // 端点描述字符长度                                             				   **
**  0x00                                                                    						   **
**  0x01,           // bNumInterfaces,支持接口数                                                	   **
**  0x01,           // bConfigurationValue,配置值                                               	   **
**  0x00,           // iConfiguration,配置字符串描述索相,0: 不使用                                     **
**                  // 如果使用,必须在字符串描述符中添加相应的字符串                                   **
**  0x80     USB_CONFIG_BUS_POWERED |           // bmAttributes 设置的供电特性                         **
**           USB_CONFIG_REMOTE_WAKEUP           // 总线供电                                     	   **
**                                              // 有唤醒功能                                          **
**  0xfa            // bMaxPower 设备从供电总线吸取的电流值                                     	   **
**                                                                                                     **
********************************************************************************************************/


/********************************************************************************************************
**                                                                                                     **
**                                  北通野牛游戏手柄  接口描述符                                       **
**                                                                                                     **
*********************************************************************************************************
**                                                                                                     **
**  0x09            // bLength 描述符长度 = 9H                                          			   **
**  0x04            // bDescriptorType 描述符类型 = 4H                                      		   **
**  0x00            // bInterfaceNumber ( 接口编号 )                                    			   **
**  0x00            // bAlternateSetting ( 可代替位置 )                                     		   **
**  0x01            // bNumEndpoints 使用端点(不含端点0)                                    		   **
**  0x03            // bInterfaceClass                                              				   **
**                  // USB 类                                                       				   **
**                  // USB_DEVICE_CLASS_HUMAN_INTERFACE == 3                                    	   **
**                  // HID类                                                        				   **
**  0x00            // bInterfaceSubClass                                                   		   **
**                  // 子类,没有.                                                   				   **
**  0x00            // bInterfaceProtocol                                                   		   **
**                  // 协议代码                                                     				   **
**  0x00,           // iInterface                                                   				   **
**                  // 字符串描述符索引,要使用该字符串必须在字符串描述符里添加相应的字符串             **
**                                                                                                     **
********************************************************************************************************/


/********************************************************************************************************
**                                                                                                     **
**                                  北通野牛游戏手柄  HID 描述符                                       **
**                                                                                                     **
*********************************************************************************************************
**                                                                                                     **
**  0x09            // bLength 描述符长度 =                                             			   **
**  0x21            // bDescriptorType HID描述符类型 = 21H                                      	   **
**  0x1001          // bcdHID HID版本号                                             				   **
**  0x21            // bCountryCode 国家代码                                        				   **
**  0x01            // bNumDescriptors 支持其它类描述符个数                                     	   **
**  0x22            // bDescriptorType 从属类描述类型 = 报告描述符22H                           	   **
**  0x6500          // wDescriptorLength 从属类描述的长度                                       	   **
**                                                                                                     **
********************************************************************************************************/


/********************************************************************************************************
**                                                                                                     **
**                                  北通野牛游戏手柄  端点描述符                                       **
**                                                                                                     **
*********************************************************************************************************
**                                                                                                     **
**  0x07            // bLength  端点描述符长度                                      				   **
**  0x05            // bDescriptorType 端点描述符类型 = 5H                                      	   **
**  0x81            // bEndpointAddress 逻辑端点号 BIT.7 = DIR                                  	   **
**                  // BIT.0..3 端点号                                              				   **
**                  // 这个值是用来把逻辑端点号换成物理端点号                               		   **
**  0x03            // bmAttributes 端点属性 = 中断                                     			   **
**  0x0800          // wMaxPacketSize 端点容量                                          			   **
**  10              // 11ms           // bInterval                                      			   **
**                  // 传输间隔时间.只对中断端点有效                                    			   **
**                                                                                                     **
********************************************************************************************************/


#include <reg52.h>
#include <stdio.h>
#include "CH375INC.H"

unsigned char volatile xdata    CH375_CMD_PORT _at_ 0x0100; /* CH375命令端口的I/O地址 */
unsigned char volatile xdata    CH375_DAT_PORT _at_ 0x0000; /* CH375数据端口的I/O地址 */

#define TURE                    1
#define FALSE               	0

#define REQUEST                 0x55
#define RESPONSION              0xAA
#define OK                      0x00
#define END                     0xFF

#define light                   P1

sbit    CH375_INT_WIRE      =   0xB0^2;         /* P3.2, INT0, 连接CH375的INT#引脚,用于查询中断状态 */

unsigned char endp_int      =   0x81 ;          //中断端点号

unsigned char endp6_mode    =   0x80 ;
unsigned char endp7_mode    =   0x80 ;          //同步标志位初值


bit           flag_output   =   0 ;             //串口输出标志位
unsigned int  PreBTNV       =   0x00 ;          //前一次键值处理后存放

union BTN_Store                                 //按键键值
{   
    struct
    {   unsigned int  head ;
        unsigned char LRBTN ;
        unsigned char UDBTN ;
        unsigned char middle ;
        unsigned int  ABTN ;
        unsigned char tail ;
    }BTN_Value ;
    unsigned char data_buf[8] ;
}USB_Data ;

void delay2us( void )
{
    unsigned char i;
    for( i=20 ; i!=0 ; i -- ) ;
}

void delay1us( void )
{
    unsigned char i ;
    for( i = 10; i != 0; i -- ) ;
}

void delayms( unsigned char delay ) 
{   
    unsigned char i ;
    do
    {   for( i=0 ; i!=250 ; i++ ){;}
        for( i=0 ; i!=250 ; i++ ){;}
        for( i=0 ; i!=150 ; i++ ){;}
    }
    while( --delay ) ;
}
void mInitSTDIO( void )
{
    SCON = 0x50 ;
    PCON = 0x80 ;
    TMOD = 0x21 ;
    TH0 = 0x00 ;
    TL0 = 0x00 ;
    TH1 = 0xF3 ;  //  24MHz晶振, 9600bps 
    TL1 = 0xF3 ;
    TF0 = 0 ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -