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

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

?? usb.c

?? HardDiskUSBconnectsourcecode
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/**************************************************************************
 *                         H E A D E R   F I L E S
 *************************************************************************/
#include "stdio.h"
#include<ABSACC.H>
#include <reg51.h>
#include <intrins.h>
#include "AT89C51SND.h"
#include "typedef.h"
#include "config.h"
#include "constant.h"
#include "usb.h"
#include "global.h"
#include "gpio.h"
#include "macro.h"
#include "external.h"

/********************************************
*
*GET_DESCRIPTOR(Device Descriptor = 18 byte)
*
********************************************/
code UINT8   USB_DeviceDescriptor[] =
{
		

		
		0x12,                   /*bLength:*/
		0x01,                   /*bDescriptorType*/
		0x10, 0x01,           /*bcdUSB*/
		0x00,                   /*bDeviceClass*/
		0x00,                   /*bDeviceSubClass*/
		0x00,                   /*bDeviceProtocol*/
		0x08,                   /*bMaxPacketSize0*/
		0x34, 0x22,           /*idVendor*/
		0x78, 0x56,           /*idProduct*/
		0x01, 0x00,           /*bcdDevice*/
		0x01,                   /*iManufacturer*/
		0x02,                   /*iProduct*/
		0x03,                   /*iSerialNumber*/
		0x01,                   /*bNumConfigurations*/
};

/********************************************
*
*GET_DESCRIPTOR(Configuration Descriptor = 34 byte)
*
********************************************/
code UINT8   USB_ConfigurationDescriptor[] =
{
		
		
		0x09,                   /*bLength*/
		0x02,                   /*bDescriptorType*/
		0x20, 0x00,           /*wTotalLength*/
		0x01,                   /*bNumInterfaces*/
		0x01,                   /*bConfigurationValue*/
		0x00,                   /*iConfiguration*/
		0x80,                   /*bmAttributes*/
		0xFA,                   /*bMaxPower*/


		/*Interface Descriptor(0x09 byte)*/
		0x09,                   /*bLength             */
		0x04,                   /*bDescriptorType  */
		0x00,                   /*bInterfaceNumber*/
		0x00,                   /*bAlternateSetting*/
		0x02,                   /*bNumEndpoints:*/
		0x08,                   /*bInterfaceClass*/
		0x06,                   /*bInterfaceSubClass:*/
		0x50,                   /*bInterfaceProtocol*/
		0x00,                   /*iInterface*/

		/*Endpoint Descriptor (0x07 byte)*/
		0x07,                   /*bLength:*/
		0x05,                   /*bDescriptorType:*/
		0x81,                   /*bEndpointAddress*/
		0x02,                   /*bmAttributes*/
		0x40, 0x00,           /*wMaxPacketSize*/
		0x00,                   /*bInterval: ignored*/
		                   

		/*Endpoint Descriptor (0x07 byte)*/
		0x07,                   /*bLength:*/
		0x05,                   /*bDescriptorType:*/
		0x02,                   /*bEndpointAddress*/
		0x02,                   /*bmAttributes*/
		0x40, 0x00,           /*wMaxPacketSize*/
		0x00,                   /*bInterval: ignored*/

};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 4 byte)
*
********************************************/
code UINT8   USB_LanguageIdString[] =
{
		
		0x04,              /*bLength*/
		0x03,              /*bDescriptorType: STRING*/
		0x09, 0x04,     /*bString: English (US)*/
};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 32 byte)
*
********************************************/
code UINT8   USB_ManufacturerString[] =
{

		0x20,           /*bLength*/
		0x03,           /*bDescriptorType: STRING*/
		'a', 0x00,     
		't', 0x00,
		'm', 0x00,
		'e', 0x00,
		'l', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
		' ', 0x00,
};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 48 byte)
*
********************************************/
code UINT8   USB_ProductString[] =
{
		
		0x30,           /*bLength*/
		0x03,           /*bDescriptorType: STRING*/
		'a',0x00,     
		't',0x00,
		'm',0x00,
		'e',0x00,
		'l',0x00,
		'a',0x00,
		't',0x00,
		'8',0x00,
		'9',0x00,
		'c',0x00,
		'5',0x00,
		'1',0x00,
		's',0x00,
		'n',0x00,
		'd',0x00,
		'1',0x00,
		'c',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
		' ',0x00,
};

/********************************************
*
*GET_DESCRIPTOR(STRING Descriptor = 18 byte)
*
********************************************/
code UINT8   USB_SerialNumberString[] =
{
		
		0x12,           /*bLength*/
		0x03,           /*bDescriptorType: STRING*/
		'0', 0x00,     /*bString: 01.00.00*/
		'1', 0x00,
		'.', 0x00,
		'0', 0x00,
		'0', 0x00,
		'.', 0x00,
		'0', 0x00,
		'0', 0x00,
};

/**************************************************************************
 *                                                                                                                                 
 *  Function Name: usb_init                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/

void usb_init(void ){

       Pll_ndiv(1);
       Pll_rdiv(11);
       Pll_enable();
       Set_Usb_clock(1);
       Usb_enable();      /*Enable usb controller*/	
       Reset_All_Ep();   
       Stop_Reset_All_Ep();
       Usb_sel_ep(0);   /*select ep0*/ 
	 UEPCONX = 0x80;
}

/**************************************************************************
 *                                                                                                                                 
 *  Function Name: usb_task                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_task (void)
{



	if (Usb_reset_event())                      
	{
    		Clear_Usb_reset_event();	
      		printf("USB RESET detection\n ");
	}

	if (Usb_ep_int_event() == 0x01)
	{
		
		Usb_sel_ep(0);                
		if (Usb_setup_packet_receive())
		{
			
			usb_do_enumeration();
		}
    	}
}

/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_do_enumeration                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_do_enumeration (void)
{ 

	Usb_sel_ep(0x00);
	UsbCtrlCmd.bmRequestType = UEPDATX;
	UsbCtrlCmd.bRequest =  UEPDATX;
	UsbCtrlCmd.wValue = UEPDATX;
	UsbCtrlCmd.wValue |= UEPDATX<<8;
	UsbCtrlCmd.wIndex  =UEPDATX;
	UsbCtrlCmd.wIndex |=UEPDATX<<8;
	UsbCtrlCmd.wLength = UEPDATX;
	UsbCtrlCmd.wLength |= UEPDATX<<8;

	 #if 1
	printf("UsbCtrlCmd.bmRequestType = %x\n",UsbCtrlCmd.bmRequestType);
	printf("UsbCtrlCmd.bRequest=%x\n",UsbCtrlCmd.bRequest);
	printf("UsbCtrlCmd.wValue=%x\n",UsbCtrlCmd.wValue);
	printf("UsbCtrlCmd.wIndex=%x\n",UsbCtrlCmd.wIndex);
	printf("UsbCtrlCmd.wLength=%x\n",UsbCtrlCmd.wLength);
	#endif
	
	if((UsbCtrlCmd.bmRequestType&0x20) == 0x00){
		
		usb_standard_request();
		
	}
	else if((UsbCtrlCmd.bmRequestType&0x20) == 0x20){ 
		usb_class_request();

	}
}



/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_standard_request                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_standard_request(void)
{ 

	switch (UsbCtrlCmd.bRequest)                 
  	{

		case USB_GET_DESCRIPTOR:
			
			usb_GetDescriptor();
		break;
			
		case USB_GET_CONFIGURATION:
			
			usb_get_configuration();
		break;

 		case USB_SET_ADDRESS:
			usb_set_address();
		break;

  		case USB_SET_CONFIGURATION:
			usb_set_configuration();
		break;

		case USB_CLEAR_FEATURE:
			usb_clear_feature();
		break;

		case USB_SET_FEATURE:
			usb_set_feature();
		break;

		case USB_GET_STATUS:
			usb_get_status();
		break;

		
		default:	  
		break;
  }
 
}

/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_class_request                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void usb_class_request(void)
{ 


	switch (UsbCtrlCmd.bRequest)                 
  	{

		case HID_SET_IDLE:
			hid_set_idle();
			break;
		case USB_GET_MAX_LUN:
			printf("USB_GET_MAX_LUN\n");
			usb_get_max_lun();
			break;
		default:
		break;
	}


}
/**************************************************************************
 *                                                                                                                                 
 *  Function Name:usb_GetDescriptor                                                                               
 *                                                                                                                          
 *  Descriptions:                                                       
 *                                                                        
 *  Arguments:                                                           
 *                                                                       
 *  Returns: None                                                         
 *                                          
 **************************************************************************/
void   usb_GetDescriptor(void){
	
	UINT8 data_to_send;
	UINT8 des_type,i;
	UINT8 desc_ptr = 0; 
	UINT8 zeroflag = 0;
	UINT8 ret;
	Usb_set_DIR_bit();                           

	des_type = UsbCtrlCmd.wValue>>8;/*read  wValue msb*/
	switch (des_type)
	{
		case USB_DEVICE_DESC:
		{

		
			G_pucCtrlDataPointer = (UINT8 *)USB_DeviceDescriptor;
			data_to_send = sizeof(USB_DeviceDescriptor);
			break;
		}

		case USB_CONFIGURATION_DESC:
		{
			
			G_pucCtrlDataPointer = (UINT8 *)USB_ConfigurationDescriptor;
			data_to_send = sizeof(USB_ConfigurationDescriptor);
			break;
		}

    		case USB_STRING_DESC:
    		{

			
			des_type = UsbCtrlCmd.wValue & 0xff;
			switch (des_type)
			{
				case USB_LANG_ID:
				{

					G_pucCtrlDataPointer = (UINT8 *)USB_LanguageIdString;
					data_to_send = sizeof(USB_LanguageIdString); 	 
					break;
				}

				case USB_MAN_INDEX:
				{

					G_pucCtrlDataPointer = (UINT8 *)USB_ManufacturerString;
					data_to_send = sizeof(USB_ManufacturerString);		  
					break;
				}
				case USB_PROD_INDEX:
				{

					G_pucCtrlDataPointer = (UINT8 *)USB_ProductString;
					data_to_send = sizeof(USB_ProductString);		  
					break;
				}
				case USB_SN_INDEX:
				{
					G_pucCtrlDataPointer = (UINT8 *)USB_SerialNumberString;
					data_to_send = sizeof(USB_SerialNumberString);
					break;
				}
				default:
				{
					return;
				}
      			}
			break;
    		}
		default:
		{

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩成人综合天天影院 | 在线观看网站黄不卡| 久久国产精品露脸对白| 视频一区在线播放| 性久久久久久久久| 日韩av电影免费观看高清完整版 | 国产精品免费av| 国产清纯在线一区二区www| 亚洲精品在线三区| 久久在线观看免费| 欧美激情中文字幕| 中文成人综合网| 成人免费一区二区三区视频 | 亚洲成人动漫av| www.亚洲精品| 成人黄色片在线观看| 成人精品视频一区| 91在线porny国产在线看| 色综合天天做天天爱| 欧美日韩中字一区| 日韩欧美国产精品一区| 国产亚洲一区字幕| 综合激情网...| 亚洲国产日韩a在线播放| 午夜精品久久一牛影视| 人妖欧美一区二区| 国产成人精品影院| 91久久线看在观草草青青| 欧美伊人久久久久久久久影院| 91精品视频网| 国产精品女上位| 亚洲永久精品大片| 裸体一区二区三区| 99视频超级精品| 欧美精品少妇一区二区三区| 精品免费视频.| 国产精品日韩精品欧美在线| 亚洲国产一区在线观看| 久久国产精品第一页| 99久久精品国产观看| 91精品午夜视频| 国产精品久久久久桃色tv| 亚洲综合激情网| 国产精品一区在线| 在线观看亚洲精品| 久久欧美一区二区| 夜夜夜精品看看| 国产一区日韩二区欧美三区| 色综合网色综合| 久久天天做天天爱综合色| 亚洲免费观看在线视频| 久久99精品久久久久久国产越南| 91视频在线观看免费| 精品奇米国产一区二区三区| 专区另类欧美日韩| 九九久久精品视频| 欧美日韩综合在线免费观看| 国产欧美在线观看一区| 三级成人在线视频| 91色在线porny| 久久精品亚洲乱码伦伦中文| 午夜精品久久久久久久蜜桃app| 成人美女在线观看| 精品成人a区在线观看| 亚洲午夜日本在线观看| 高清av一区二区| 欧美大片一区二区| 伊人夜夜躁av伊人久久| 国产福利一区在线| 日韩视频在线观看一区二区| 亚洲精品国产品国语在线app| 国产一区二区毛片| 91精品国产福利| 亚洲国产成人av网| 91浏览器在线视频| 国产精品电影院| 国内精品写真在线观看| 91精品久久久久久久久99蜜臂| 亚洲欧美日韩国产综合| 国产成人在线视频网站| 日韩精品中文字幕在线不卡尤物| 一区二区三区四区av| 成人av电影在线网| 国产无遮挡一区二区三区毛片日本| 日韩精品久久理论片| 欧美在线综合视频| 亚洲欧美日韩国产另类专区| 粉嫩aⅴ一区二区三区四区| 欧美videos中文字幕| 老司机一区二区| 日韩一区二区影院| 欧美aaaaaa午夜精品| 91精品在线麻豆| 青青草国产精品97视觉盛宴| 在线免费精品视频| 国产精品久久久久久福利一牛影视| 国产亚洲欧洲997久久综合 | 中文字幕中文字幕中文字幕亚洲无线| 成人教育av在线| 国产亚洲一区二区三区| 国产精品久久久久久久久图文区 | 欧美人与禽zozo性伦| 亚洲免费资源在线播放| 粉嫩aⅴ一区二区三区四区| 日本一区二区视频在线| 国产成人在线色| 国产精品久久久久永久免费观看| 国产盗摄视频一区二区三区| 欧美激情资源网| 91在线你懂得| 亚洲综合在线电影| 欧美三区免费完整视频在线观看| 亚洲综合另类小说| 91精品中文字幕一区二区三区| 美腿丝袜一区二区三区| 久久久蜜臀国产一区二区| 国产一区二区三区精品视频| 国产欧美精品一区aⅴ影院| 国产aⅴ综合色| 最近日韩中文字幕| 欧美午夜理伦三级在线观看| 五月激情丁香一区二区三区| 欧美一区二区三区免费视频| 精品一区二区三区免费| 国产精品国产自产拍高清av| 94色蜜桃网一区二区三区| 一区二区三区不卡视频在线观看| 精品视频123区在线观看| 久久电影网电视剧免费观看| 久久久91精品国产一区二区三区| 成人av在线观| 一区二区三区精品视频| 正在播放亚洲一区| 国产另类ts人妖一区二区| 中文字幕永久在线不卡| 欧美日韩视频第一区| 久久99国产精品麻豆| 亚洲国产精品激情在线观看| 91视频www| 日本少妇一区二区| 国产精品午夜在线观看| 欧美在线高清视频| 久久丁香综合五月国产三级网站| 国产精品午夜在线观看| 欧美日韩中文精品| 国产激情一区二区三区桃花岛亚洲| 综合激情成人伊人| 日韩欧美一二三| 91香蕉视频在线| 美女国产一区二区| 亚洲欧美在线另类| 欧美一二三区在线观看| av一二三不卡影片| 男人的天堂亚洲一区| 欧美日韩在线精品一区二区三区激情 | 日av在线不卡| 亚洲综合一二区| 亚洲国产cao| 午夜不卡av在线| 波多野结衣精品在线| 欧美日韩在线播放一区| 欧美久久一二区| 一区二区三区在线免费| 国模无码大尺度一区二区三区| 91在线视频播放地址| 欧美日韩国产小视频在线观看| 国产精品一二三在| 五月激情丁香一区二区三区| 国产精品大尺度| 欧美精品一区二区三区高清aⅴ | 欧美日韩国产123区| 国产成人鲁色资源国产91色综| 亚洲成人动漫在线免费观看| 国产精品国模大尺度视频| 日韩欧美高清在线| 欧美日韩国产首页| 成人国产精品视频| 国产一区二区久久| 日本不卡1234视频| 亚洲国产一区二区a毛片| 亚洲欧洲日韩在线| 欧美国产日本视频| 久久久久九九视频| 精品欧美黑人一区二区三区| 欧美军同video69gay| 欧美体内she精视频| 97aⅴ精品视频一二三区| 国产成人av一区二区| 国产乱子伦视频一区二区三区 | 国产麻豆精品95视频| 日本欧美肥老太交大片| 亚洲一区二区三区不卡国产欧美| 国产精品乱码久久久久久| 久久久久97国产精华液好用吗| 91精品国产综合久久精品| 欧美日韩免费不卡视频一区二区三区| 99久久精品国产网站| 91浏览器在线视频| 色拍拍在线精品视频8848| 91在线视频免费观看|