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

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

?? hub_811.c

?? 51+sl811讀寫U盤的源程序
?? C
字號:
////////////////////////////////////////////////////////////////////////////////
// Cypress Semiconductor - Customer Design Center 
////////////////////////////////////////////////////////////////////////////////
// File:		hub_811.c
// Purpose:	    8051 firmware to master SL811 downstream hub (CY7C651xx). 
//              Contains hub-related control firmware. 
//              Based on SL811HST code written by cxn.
// H/W Target:  SL811HST(Rev 1.5) + EZUSB DEV KIT
// IMPORTANT :  Turn ON SW4 of S6-DIP-SWITCH 
//              to enable upper 32K memory on EZUSB Dev Kit
//
// $Header: /USB/ez811/firmware/Emb_Host/hub_811.c 7     5/17/02 6:09p Tpm $
// Copyright (c) 2002 Cypress Semiconductor. May not be reproduced without permission.
// See the license agreement for more details.
////////////////////////////////////////////////////////////////////////////////

#include "ezusb.h"
#include "ezregs.h"
#include "host_811.h"

extern xdata BYTE 			STATUS[8];		// for status data buffer
extern xdata BYTE 			HubChange[1];	// Hub port endpoint 1 data status
extern xdata BYTE 			pNumPort;		// Number of downstream ports on hub
extern xdata pHUBDEV		uHub;			// Struct for downstream device on HUB
extern xdata pPortStatus	pStat;			// HID ports status

//*****************************************************************************************
// Hub's downstream ports enumeration routine
//*****************************************************************************************
int HubPortEnum(void)
{
	xdata BYTE 	DevAddr, PortNum=0, PortSel;
	xdata BYTE	j=0;
//	xdata BYTE	TempDevAddr;

	PortSel = 0x02;											// start with port 1 first
	while(j++ < pNumPort)									// loop for all 4 port, bit 1 to bit 4
	{
		if(!(HubChange[0]&PortSel))							// test if bit representing port is set
		{
			PortSel <<= 1;									// shift mask to test for next bit port
		}
		else
		{
			switch(HubChange[0]&PortSel)					// valid downstream port number #1..#4 only
			{
				case 0x02:	PortNum = 0x01;	break;			// Limit to onboard hub with 4 downstream ports
				case 0x04:	PortNum = 0x02; break;			//
				case 0x08:	PortNum = 0x03; break;			//
				case 0x10:	PortNum = 0x04; break;			//
				default:	PortNum = HubChange[0]; break;	// for debug purpose
			}
			break;											// found one port, exit while loop now
		}
	}

	// Always use USB address #1 for HUB communication
	pStat =(pPortStatus)STATUS;								// keep current wPortStatus & wPortChange
	if (!GetPortStatus(HUB_ADDR,PortNum,STATUS)) return 0;	// If the device is already attached to hub

	//------------------------------------------------------------------------------
	// Device is present on current downstream port
	//------------------------------------------------------------------------------
	if((pStat->wPortStatus_Lo)&0x01)						
	{	
		//------------------------------------------------
		// Search for unused USB address (#2..#5 valid)
		//------------------------------------------------
		for(DevAddr=HUB_ADDR + 1; DevAddr<MAX_DEV; DevAddr++)	
		{
			if(uHub.bPortPresent[DevAddr] == 0)
			  break;
		}
		if(DevAddr == MAX_DEV)
		{
          DevAddr = 0;                                  // open port not found (shouldn't happen)
		  return 0;
		}

		//------------------------------------------------
		// Reset current attached downstream port device
		//------------------------------------------------
		if (!PortFeature(HUB_ADDR,CLEAR_FEATURE,C_PORT_CONNECTION,PortNum)) return 0;
		do{ // Clear C_PORT_CONNECTION state
			if (!GetPortStatus(HUB_ADDR,PortNum,STATUS)) return 0;
        }
		while(((pStat->wPortChange_Lo)&USB_PORT_STAT_C_CONNECTION));

		
		if (!PortFeature(HUB_ADDR,SET_FEATURE,PORT_RESET,PortNum)) return 0;	// reset this port for at least 10ms
		EZUSB_Delay(10);
		do{ // Set PORT_RESET 
			if (!GetPortStatus(HUB_ADDR,PortNum,STATUS)) return 0;
        }
		while( !((pStat->wPortChange_Lo)&USB_PORT_STAT_C_RESET) );

				
		if (!PortFeature(HUB_ADDR,CLEAR_FEATURE,C_PORT_RESET,PortNum)) return 0;
		do{ // Clear C_PORT_RESET state
			if (!GetPortStatus(HUB_ADDR,PortNum,STATUS)) return 0;
        }
		while(((pStat->wPortChange_Lo)&USB_PORT_STAT_C_RESET));
	
		//------------------------------------------------
		// Determine attached downstream speed
		//------------------------------------------------
		if ((pStat->wPortStatus_Hi)&0x02)								// check bit 9 of wPortStatus for port speed
			uHub.bPortSpeed[0] = uHub.bPortSpeed[DevAddr] = 1;			// '1' - lowspeed, USB address 0 must also be set
		else								
			uHub.bPortSpeed[0] = uHub.bPortSpeed[DevAddr] = 0;			// '0' - fullspeed, USB address 0 must also be set
				
		//------------------------------------------------
		// Enumerate current attached device on hub
		//------------------------------------------------
		EZUSB_Delay(50);							// some device require a long delay before it can enumerate properly
		if (!EnumUsbDev(DevAddr))					// enumerate device attached to current hub downstream port
			return 0;

		uHub.bPortPresent[DevAddr] = 1;				// set USB device present on this address	
		uHub.bPortNumber[DevAddr] = PortNum;		// Save port number used in this address
		switch(PortNum)		     		            // Downstream port #
		{											//
			case 1:	OUTA &= ~PORT1_LED; break;		// Downstream Port #1
			case 2:	OUTA &= ~PORT2_LED; break;		// Downstream Port #2
			case 3:	OUTA &= ~PORT3_LED; break;		// Downstream Port #3
			case 4:	OUTA &= ~PORT4_LED; break;		// Downstream Port #4
			default: break;
		}				
	}

	//------------------------------------------------------------------------------
	// Device is not present on current downstream port
	//------------------------------------------------------------------------------
	else
	{
		do{	// Clear C_PORT_CONNECTION state
		    if (!PortFeature(HUB_ADDR,CLEAR_FEATURE,C_PORT_CONNECTION,PortNum)) return 0;
			if (!GetPortStatus(HUB_ADDR,PortNum,STATUS)) return 0;
        }						//
		while(((pStat->wPortChange_Lo)&USB_PORT_STAT_C_CONNECTION));

		do{	// Clear C_PORT_ENABLE state - PORT_ENABLE was set for some hub only
		    if (!PortFeature(HUB_ADDR,CLEAR_FEATURE,C_PORT_ENABLE,PortNum)) return 0;
			if (!GetPortStatus(HUB_ADDR,PortNum,STATUS)) return 0;
        }						//
		while(((pStat->wPortChange_Lo)&USB_PORT_STAT_C_ENABLE));

		//------------------------------------------------
		// Search Port Number that was detached
		//------------------------------------------------
		for(DevAddr=HUB_ADDR + 1; DevAddr<MAX_DEV; DevAddr++)	
		{                                               // find the device
			if(uHub.bPortNumber[DevAddr]==PortNum)
			  break;
		}
		if(DevAddr == MAX_DEV)
          DevAddr = 0;                                  // device not found
		if(DevAddr)
		{
		  uHub.bPortPresent[DevAddr] = 0;			    // clear USB device present on this address		
		  uHub.bPortNumber[DevAddr] = 0;			    // clear port number for this failed address
		  switch(uHub.bPortNumber[DevAddr])				// Downstream port #
		  {												//
			case 1:	OUTA |= PORT1_LED; break;			// Downstream Port #1
			case 2:	OUTA |= PORT2_LED; break;			// Downstream Port #2
			case 3:	OUTA |= PORT3_LED; break;			// Downstream Port #3
			case 4:	OUTA |= PORT4_LED; break;			// Downstream Port #4
			default: break;
		  }	
		}
	}
	return DevAddr;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美亚洲一区二区三区四区| 国产亚洲美州欧州综合国| 日韩伦理av电影| 色综合天天综合在线视频| 国产精品久久久久影院老司 | 日韩你懂的电影在线观看| 日韩精品一级二级| 日韩手机在线导航| 狠狠色丁香久久婷婷综合_中| 亚洲精品一区二区三区影院| 国产精品综合一区二区| 国产精品福利影院| 欧美三级三级三级| 韩国三级在线一区| 国产精品麻豆欧美日韩ww| 在线观看视频一区二区欧美日韩| 亚洲大片一区二区三区| 日韩欧美高清在线| 成人黄色av网站在线| 香蕉成人啪国产精品视频综合网| 欧美zozozo| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 在线电影国产精品| 国产精品一区免费在线观看| 亚洲黄色小说网站| 精品美女一区二区三区| 99精品欧美一区| 日本成人在线网站| 亚洲特级片在线| 日韩精品一区二区三区视频| 91在线免费播放| 久久草av在线| 一区二区三区中文字幕精品精品| 欧美va亚洲va在线观看蝴蝶网| 99热在这里有精品免费| 蜜乳av一区二区| 亚洲精品免费播放| 久久久一区二区三区| 欧美亚洲国产怡红院影院| 国产伦精品一区二区三区免费迷| 一区二区高清视频在线观看| 国产欧美日韩在线| 欧美老肥妇做.爰bbww| 91在线无精精品入口| 国产揄拍国内精品对白| 丝袜诱惑亚洲看片| 亚洲精品国产精华液| 国产欧美日韩在线看| 欧美大片国产精品| 欧美亚洲动漫精品| 99精品视频在线观看免费| 国产一区二区三区四区五区美女| 日韩影院免费视频| 亚洲综合免费观看高清完整版在线 | 成人黄色在线看| 蜜臀av性久久久久蜜臀av麻豆| 亚洲精品日韩一| 成人免费在线视频| 中文字幕不卡在线观看| 久久日韩粉嫩一区二区三区| 日韩欧美二区三区| 欧美一区二区三区思思人| 欧美影院午夜播放| 在线影视一区二区三区| 一本色道久久综合亚洲精品按摩| 国产suv一区二区三区88区| 久久99日本精品| 日韩精品电影在线| 日韩精品一级中文字幕精品视频免费观看 | 亚洲丝袜美腿综合| 国产精品久久网站| 国产精品久久99| 亚洲欧洲av另类| 亚洲人成亚洲人成在线观看图片| 国产亚洲成年网址在线观看| 国产亚洲午夜高清国产拍精品| 久久综合久久综合亚洲| 久久亚洲春色中文字幕久久久| 久久综合色综合88| 国产视频911| 中文字幕在线免费不卡| 国产精品国产三级国产aⅴ中文| 国产精品久久久久久久久晋中 | 欧美亚洲综合色| 欧美特级限制片免费在线观看| 在线观看91视频| 欧美日韩亚洲综合一区二区三区| 欧美区一区二区三区| 国产一区二区三区综合| 欧美中文字幕一区二区三区| 91免费观看视频在线| 91啪九色porn原创视频在线观看| bt7086福利一区国产| 不卡免费追剧大全电视剧网站| 99re66热这里只有精品3直播| 99这里只有久久精品视频| 91久久精品日日躁夜夜躁欧美| 欧美无砖砖区免费| 日韩欧美色综合网站| 国产亚洲午夜高清国产拍精品| 中文字幕在线不卡视频| 亚洲国产一区二区三区 | 国产欧美日韩在线观看| 亚洲欧洲成人自拍| 午夜精品久久久久久久久久久| 视频一区视频二区中文字幕| 国内精品免费**视频| 不卡一区二区在线| 欧美高清性hdvideosex| 2021久久国产精品不只是精品| 国产精品日产欧美久久久久| 亚洲国产精品嫩草影院| 狠狠色丁香久久婷婷综合丁香| 91小视频免费看| 日韩精品一区二区三区老鸭窝| 国产精品伦理在线| 日韩影视精彩在线| 成人av动漫在线| 91精品国产91综合久久蜜臀| 中文字幕巨乱亚洲| 日本色综合中文字幕| www..com久久爱| 日韩欧美一二三区| 亚洲精品成人在线| 国产精品综合网| 欧美丰满高潮xxxx喷水动漫| 国产精品看片你懂得| 蜜桃久久久久久| 欧美中文字幕一区二区三区| 国产网站一区二区| 天天影视涩香欲综合网 | 一区二区三区精品在线| 久久91精品久久久久久秒播| 在线观看日韩国产| 国产精品天美传媒| 精品一区精品二区高清| 欧美日韩综合色| 亚洲视频一区二区在线| 国产精品乱码一区二区三区软件 | 日韩精品在线网站| 国产精品国产a级| 久久99精品国产| 欧美日韩精品一区二区| 亚洲人成网站精品片在线观看| 精品在线观看免费| 6080国产精品一区二区| 亚洲精品国产一区二区精华液 | 亚洲欧洲精品一区二区三区| 国产做a爰片久久毛片| 91精品国产全国免费观看| 亚洲在线观看免费视频| eeuss国产一区二区三区| 久久久久久久久久美女| 麻豆精品视频在线观看视频| 欧美日本国产视频| 亚洲精品视频观看| 欧美一区二区视频网站| 一区2区3区在线看| 欧美videos中文字幕| 国产精品日日摸夜夜摸av| 九色|91porny| 日韩精品一区二区三区老鸭窝| 三级欧美在线一区| 欧美精品自拍偷拍动漫精品| 亚洲一区二区三区在线播放| 色欧美片视频在线观看| 国产精品电影一区二区三区| a在线播放不卡| 亚洲欧美日韩国产综合| 色综合久久中文字幕综合网| 亚洲天堂a在线| 欧洲生活片亚洲生活在线观看| 亚洲图片另类小说| 色婷婷亚洲精品| 性感美女极品91精品| 欧美久久免费观看| 另类小说综合欧美亚洲| 久久女同性恋中文字幕| 国产二区国产一区在线观看| 国产精品入口麻豆原神| 91小视频在线| 五月天激情综合网| 精品久久久久99| 国产精品99久久久久久有的能看| 日本一区二区三区免费乱视频| 成人av第一页| 亚洲高清免费一级二级三级| 日韩一区二区三区电影在线观看| 精品制服美女久久| 国产精品久久久久久久久久久免费看| 99国产精品久| 五月天激情综合网| 精品国产凹凸成av人网站| 成人免费观看男女羞羞视频| 亚洲精品久久久蜜桃| 日韩女优制服丝袜电影| 成人av午夜影院| 婷婷综合五月天| 国产日韩一级二级三级| 欧美午夜电影网|