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

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

?? mainloopb.c

?? 基于8051+D12優盤程序代碼,實現了usb 的通信
?? C
?? 第 1 頁 / 共 2 頁
字號:
    		} // BOTFSM_DataIn

		    if(BOTFSM_CSW)	//BOTFSM_CSW = BOTFSMstate^5
		    {
		//			MCU_P1 = D12REG_ONLY;

			    Hal4Sys_D12CmdPortOutB( 0x05);// SelectEP  BulkIn
			    FlexByte = Hal4Sys_D12DataPortInB();
			    if(FlexByte_b0 == 0) // BulkIn is empty
			    {

				    FlexByte = MLsup_XferPktFrMEM2USB();

				    BOTXfer_pdata += FlexByte;
				    BOTXfer_wResidue -= FlexByte;
				    if(BOTXfer_wResidue == 0)
					    BOTFSMstate = USBFSM4BOT_IDLE; // Goto BOTFSMstate_IDLE

			    }
		   }

        }
 //   	MCU_P1 = D12REG_ONLY;
       LowerIRQL();
	}
}


void MLsup_DisconnectUSB(void)
{
	RaiseIRQL();

    // Initialize D12 configuration
	Hal4D12_SetMode(D12_NOLAZYCLOCK, D12_SETTOONE | D12_CLOCK_4M);

}

void MLsup_ConnectUSB(void)
{
	// reset event flags
	RaiseIRQL();

	// No DMA, No IRQ from EPI4 & EPI5
	Hal4D12_SetDMA(0);

	// Initialize D12 configuration
	Hal4D12_SetMode(D12_NOLAZYCLOCK|D12_SOFTCONNECT, D12_SETTOONE | D12_CLOCK_4M);
}


void MLsup_ReconnectUSB(void)
{

    MLsup_DisconnectUSB();

    // Make sure disconnect time > 2.5 uS
    LowerIRQL();
    Hal4Sys_WaitInMS(10);
	MLsup_ConnectUSB();

}


void MLsup_USBSetupTokenHandler(void)
{

    D12BF_SetupOverwritten = 0;
    DCPXfer_wResidue = 0;

    tempvars4UsbReq.chars.c0 = Hal4D12_ReadEndpoint(0, sizeof(DEVICE_REQUEST),(INT8 *)(&(DCPDeviceRequest)));
	if( tempvars4UsbReq.chars.c0 == sizeof(DEVICE_REQUEST) )
	{


        DCPDeviceRequest.wValue = Hal4Sys_SwapINT16(DCPDeviceRequest.wValue);
		DCPDeviceRequest.wIndex = Hal4Sys_SwapINT16(DCPDeviceRequest.wIndex);
		DCPDeviceRequest.wLength = Hal4Sys_SwapINT16(DCPDeviceRequest.wLength);

        if(DCPDeviceRequest.bmRequestType & USB_ENDPOINT_DIRECTION_MASK)//USB_ENDPOINT_DIRECTION_MASK=0x80
		{
            // get command
            REQBF_DCPRequest_dir = 1;  // REQBF_DCPRequest_dir = bFlags.value^3
		}
		else
		{
			// Set command  without Data stage
            // or
			// Set command  with Data Buffer
            REQBF_DCPRequest_dir = 0;
		}

        if(DCPDeviceRequest.wIndex & USB_ENDPOINT_DIRECTION_MASK)
		{
            REQBF_DCPRequest_EPdir = 1;
		}
		else
		{
            REQBF_DCPRequest_EPdir = 0;
		}

        //	USBDeviceRequest_Handler();
        UsbReq_Recipient = DCPDeviceRequest.bmRequestType & USB_RECIPIENT;

        UsbReq_Type = DCPDeviceRequest.bmRequestType & USB_REQUEST_TYPE_MASK;
	    UsbReq_Request = DCPDeviceRequest.bRequest & USB_REQUEST_MASK;

        if ( REQBF_DCPRequest_dir || (DCPDeviceRequest.wLength == 0))
        {
            // For Get command via Control In
            // For Set command without Data Stage via Control Out
            // First of all, AckSetup to make it available for BUFFER fill in fifo
            MLsup_AcknowledgeSETUP(); // A needle hole for Setup TK overwritten
            if(D12BF_SetupOverwritten)
                return;
        }


        // REQBF_StallDCPRequest = 0; // has been cleared already!
        if ( (UsbReq_Type == USB_STANDARD_REQUEST) && (UsbReq_Request<MAX_STD_REQUEST))
        {
		    (*StandardDeviceRequest[UsbReq_Request])();
        }
	    else if((UsbReq_Type == USB_CLASS_REQUEST))
        {
            UsbReq_Request = 0xFF - UsbReq_Request;
            if(UsbReq_Request < MAX_CLASS_REQUEST)
            (*ClassDeviceRequest[UsbReq_Request])();
        }
/*	    else if((UsbReq_Type == USB_VENDOR_REQUEST) &&(UsbReq_Request<MAX_VENDOR_REQUEST))
        {
            (*VendorDeviceRequest[UsbReq_Request])();
        }
*/
        else
        {
		    REQBF_StallDCPRequest = 1;
        }

        if(REQBF_StallDCPRequest)
        {
            MLsup_StallEP0();
        }
        else if ( (!REQBF_DCPRequest_dir) && (DCPDeviceRequest.wLength != 0))
        {
            // For Set command with Data Stage via Control Out
            // First of all, AckSetup to make it available for Buffer Out Clearing
       		MLsup_AcknowledgeSETUP(); // A needle hole for Setup TK overwritten
        }
    }
	else
	{
		MLsup_StallEP0();
	}

}

void MLsup_AcknowledgeSETUP(void)
{
    // Give a needle hole for Setup Overwritten as well as ISR
    LowerIRQL();
    RaiseIRQL();
    if(!D12BF_SetupOverwritten)
        Hal4D12_AcknowledgeSETUP();
}

void MLsup_StallEP0(void)
{
    // Give a needle hole for Setup Overwritten as well as ISR
    LowerIRQL();
    RaiseIRQL();

    if(!D12BF_SetupOverwritten)
    {
        DCPFSMstate = USBFSM4DCP_STALL;
    	Hal4D12_StallEP0();
    }
}


void MLsup_XferPktFrUSB2MEM(INT8 Len)
{
	TPBulksup_ReadFrBOEP(Len);
}

INT8 MLsup_XferPktFrMEM2USB(void)
{
	if(BOTXfer_wResidue > EP2_PACKET_SIZE )
		return TPBulksup_WriteToBIEP(EP2_PACKET_SIZE);
	else
		return TPBulksup_WriteToBIEP((INT8)BOTXfer_wResidue);
}

#ifdef MAX_SPEED
//unsigned char c;
void MLsup_XferPktFrUSB2IDE(void)
{

    ATA_DATABUS_LO = 0xFF; // Give up DataBus, MCU_P2 = 0xFF;

    Hal4Sys_D12CmdPortOutB( 0xF2); //clear Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
  //      Hal4ATA_WaitOnBusyNDrq();
 //  while(ATA_IORDY!=1);
  		  Hal4ATA_WaitOnBusy();
     }

}
#else
void MLsup_XferPktFrUSB2IDE(void)
{
    INT8    c0;

    MCU_P1 = D12REG_ATAREG4OUT;

    for(c0=EP2_PACKET_SIZE/2 ; c0!=0; c0--)
        MLsup_XferWordFrUSB2IDE();

    //MCU_P1 = D12REG_ONLY;
    ATA_DATABUS_LO = 0xFF; // Give up DataBus, MCU_P2 = 0xFF;

    Hal4Sys_D12CmdPortOutB( 0xF2); //clear Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
        Hal4ATA_WaitOnBusyNDrq();
    }

}
#endif

#ifdef MAX_SPEED
	//unsigned char c;
void MLsup_XferPktFrIDE2USB(void)
{
//unsigned char c;
//	if (Hal4ATA_WaitForDrq()==0)
//	{
    //Hal4Sys_WaitInUS(32000); OK value
//    Hal4Sys_WaitInUS(32000); //>25US
//	}

	Hal4Sys_D12CmdPortOutB( 0xF0);// Write Buffer
	Hal4Sys_D12DataPortOutB(0);// HI BYTE of Buffer Len
	Hal4Sys_D12DataPortOutB(EP2_PACKET_SIZE);// LO BYTE of Buffer Len


    //MCU_P1 = ATAREG4IN_DATA;


    //MCU_P1 = D12REG_ONLY;
    Hal4Sys_D12CmdPortOutB( 0xFA); //valid Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
     //   Hal4ATA_WaitOnBusyNDrq();
     Hal4ATA_WaitOnBusy();
    }
}
#else
void MLsup_XferPktFrIDE2USB(void)
{

    INT8 c0;

	Hal4Sys_D12CmdPortOutB( 0xF0);// Write Buffer
	Hal4Sys_D12DataPortOutB(0);// HI BYTE of Buffer Len
	Hal4Sys_D12DataPortOutB(EP2_PACKET_SIZE);// LO BYTE of Buffer Len

    MCU_P1 = ATAREG4IN_DATA;

    for(c0=EP2_PACKET_SIZE/2 ; c0!=0; c0--)
        MLsup_XferWordFrIDE2USB();

    //MCU_P1 = D12REG_ONLY;
    Hal4Sys_D12CmdPortOutB( 0xFA); //valid Buffer

    Hal4ATA_SectCntInBlk -- ;
    if( Hal4ATA_SectCntInBlk == 0)
    {
        Hal4ATA_SectCntInBlk = ATADevExt_IDData.MaximumBlockTransfer << BITNUM4EP2PKT_PER_SECTOR;
        Hal4ATA_WaitOnBusyNDrq();
    }
}
#endif

#ifndef MAX_SPEED
void MLsup_XferWordFrUSB2IDE(void)
{
    D12RD_N = 0;
    ATA_DATABUS_LO = D12_DATABUS;
    D12RD_N = 1;

    ATA_CS0_N = 0;
    ATA_WR_N = 0;  //ATA_WR_N==D12RD_N
//    while(ATA_IORDY!=1);
    ATA_WR_N = 1;  //ATA_WR_N==D12RD_N
    ATA_CS0_N = 1;
}

void MLsup_XferWordFrIDE2USB(void)
{
    MCU_P1 = ATAREG4IN_DATA;

    ATA_RD_N = 0;
//    while(ATA_IORDY!=1);
    FlexByte = ATA_DATABUS_HI;
//    TempByte = ATA_DATABUS_LO;
    ATA_RD_N = 1;

    MCU_P1 = D12REG_ONLY;

    //Hal4Sys_D12DataPortOutB(TempByte);
//    D12_DATABUS = TempByte;
    D12WR_N = 0;
    D12WR_N = 1;

    //Hal4Sys_D12DataPortOutB(TempByte);
    D12_DATABUS = FlexByte;
    D12WR_N = 0;
    D12WR_N = 1;

    D12_DATABUS = 0xFF; // Give up DataBus
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品视频一区二区三区| 337p粉嫩大胆噜噜噜噜噜91av| 91久久精品国产91性色tv| 日韩一区二区视频在线观看| 中文字幕第一区第二区| 亚洲动漫第一页| 风间由美一区二区三区在线观看| 3751色影院一区二区三区| 亚洲四区在线观看| 国产成人亚洲综合色影视| 欧美一二三四区在线| 一二三四区精品视频| 99麻豆久久久国产精品免费| 久久久噜噜噜久久人人看 | 亚洲精品一卡二卡| 国产一区二区三区国产| 日韩一区二区电影在线| 亚洲一卡二卡三卡四卡五卡| 不卡av在线免费观看| 精品国产乱码久久久久久浪潮| 午夜激情一区二区三区| 精品视频免费看| 一区二区三区国产精华| 91蜜桃网址入口| 亚洲欧美自拍偷拍| 成人福利视频网站| 亚洲日本va在线观看| bt7086福利一区国产| 国产精品乱人伦| 99在线热播精品免费| 国产精品久久久久久久裸模| www.欧美色图| 亚洲色图欧美在线| 日本高清不卡在线观看| 曰韩精品一区二区| 欧美日韩精品综合在线| 天天色综合天天| 91精品国产免费久久综合| 美国十次了思思久久精品导航| 欧美一级免费观看| 久久成人免费网| 久久精品日产第一区二区三区高清版| 国产精品一二三四区| 欧美激情一区二区三区不卡 | 在线不卡一区二区| 免费欧美在线视频| 久久老女人爱爱| 99re视频这里只有精品| 亚洲综合免费观看高清完整版| 欧美乱妇20p| 久久综合综合久久综合| 国产女主播视频一区二区| 99久久综合国产精品| 亚洲一区国产视频| 久久综合国产精品| 色综合久久中文字幕| 水蜜桃久久夜色精品一区的特点| 精品成人在线观看| 99久久99久久精品免费看蜜桃 | 欧美人狂配大交3d怪物一区| 奇米影视在线99精品| 日本一区二区三区四区| 欧洲精品在线观看| 麻豆成人久久精品二区三区小说| 国产精品素人视频| 欧美一区二区三区视频在线| 国产成人激情av| 亚洲aⅴ怡春院| 国产精品色婷婷| 日韩一卡二卡三卡| 本田岬高潮一区二区三区| 丝袜美腿亚洲一区二区图片| 欧美国产欧美综合| 91麻豆精品国产91久久久资源速度 | 日韩一区二区三区视频在线| 成人美女在线观看| 日韩精品国产欧美| 最新国产の精品合集bt伙计| 91精品国产综合久久久蜜臀图片| 丰满少妇久久久久久久| 五月婷婷综合网| 国产精品久久久久久妇女6080| 欧美日韩一区二区欧美激情| 国产98色在线|日韩| 奇米影视一区二区三区小说| 自拍偷拍欧美精品| 久久综合久色欧美综合狠狠| 欧美人体做爰大胆视频| 色综合久久久久久久久| 国产精品12区| 久久91精品久久久久久秒播| 亚洲va韩国va欧美va| 亚洲男人的天堂av| 国产欧美日韩不卡免费| 欧美第一区第二区| 7777精品伊人久久久大香线蕉的 | 日韩欧美视频一区| 欧美色综合影院| 色综合天天综合网天天狠天天| 国产精品自在欧美一区| 麻豆精品新av中文字幕| 日韩国产精品大片| 亚洲成人av一区| 亚洲在线免费播放| 亚洲在线一区二区三区| 曰韩精品一区二区| 亚洲精品视频在线观看免费| 日韩一区在线播放| 1024成人网| 亚洲三级小视频| 亚洲免费观看高清完整版在线观看| 国产日韩欧美精品电影三级在线| 久久久精品国产免费观看同学| 精品伦理精品一区| 337p日本欧洲亚洲大胆精品| 久久网站热最新地址| 精品国产123| 久久精品欧美日韩| 欧美激情中文不卡| 自拍av一区二区三区| 亚洲精品videosex极品| 亚洲一卡二卡三卡四卡无卡久久| 亚洲主播在线观看| 人人爽香蕉精品| 狠狠狠色丁香婷婷综合激情| 国产精品亚洲一区二区三区妖精| 国产成人免费在线观看| 波多野结衣的一区二区三区| 一本色道久久加勒比精品 | 欧美系列一区二区| 777奇米四色成人影色区| 日韩欧美视频在线| 久久午夜色播影院免费高清| 国产精品欧美精品| 午夜国产不卡在线观看视频| 美国毛片一区二区三区| 成人综合在线视频| 欧美色手机在线观看| 欧美一区二区日韩一区二区| 日本一区二区三级电影在线观看| 欧美激情一区二区三区蜜桃视频| 亚洲免费观看高清| 久久精品国产精品亚洲综合| 不卡大黄网站免费看| 7777精品伊人久久久大香线蕉| 精品国精品国产| 亚洲自拍都市欧美小说| 国产一区美女在线| 欧美亚洲国产一区二区三区 | 亚洲精品高清在线| 精品中文字幕一区二区| 91在线porny国产在线看| 欧美一区二区性放荡片| 一区在线观看视频| 免费看欧美美女黄的网站| 99久久婷婷国产| 精品日本一线二线三线不卡| 亚洲情趣在线观看| 国产在线不卡一卡二卡三卡四卡| 色婷婷久久综合| 2欧美一区二区三区在线观看视频| 亚洲精品成人悠悠色影视| 韩国v欧美v日本v亚洲v| 欧美日韩精品一区视频| 国产精品私人影院| 国产综合色在线视频区| 欧美性做爰猛烈叫床潮| 国产精品青草久久| 精品中文字幕一区二区| 欧美日韩亚洲另类| 伊人一区二区三区| 成人午夜电影小说| 久久综合九色综合欧美就去吻| 亚洲成人av一区二区三区| 99久久精品一区| 国产日韩欧美不卡在线| 美女在线视频一区| 欧美日本高清视频在线观看| 亚洲欧洲精品成人久久奇米网| 国产成人综合亚洲网站| 欧美成人vr18sexvr| 午夜影院久久久| 欧美中文字幕不卡| 有码一区二区三区| 99久久99久久精品免费看蜜桃| 亚洲国产精品国自产拍av| 国产一区中文字幕| 久久婷婷一区二区三区| 久久精品国产精品青草| 日韩欧美中文字幕一区| 日韩精品亚洲一区二区三区免费| 在线观看日韩高清av| 亚洲综合在线电影| 色屁屁一区二区| 一区二区三区四区乱视频| 91啦中文在线观看| 亚洲自拍与偷拍| 欧美精品一卡两卡| 日韩综合一区二区| 日韩一级片网址|