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

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

?? usb.c

?? s3c44b0 基于EMBESTED USB 試驗(yàn)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
        clrfeature();
        break;
  	case GET_CONFIGURATION:   //8
        write_usb(TXD0,usb_cfg);        /*load the config val     */
        break;
  	case GET_DESCRIPTOR:      //6      //6次
        getdescriptor();
        break;
  	case GET_STATUS:          //0
        getstatus();
        break;
  	case SET_ADDRESS:         //5      //1次
        write_usb(EPC0,DEF);
    	write_usb(FAR,usb_buf[2]|AD_EN);
        break;
  	case SET_CONFIGURATION:   //9      //1次
        setconfiguration();
        break;
  	case SET_FEATURE:         //3
        setfeature();
        break;
        case GET_INTERFACE:       //10
        write_usb(TXD0,0);
        break;
        case SET_INTERFACE:       //11
        if(usb_buf[2])          /*if the requested intf!=0*/
        bitset(EPC0,STALL);     /*stall the endpoint      */
        break;
  	default:
    	break;
   }
   else
   {
   }
   write_usb(TXC0,TX_TOGL+TX_EN);
   dtapid_TGL0PID=0;
 }
 else
 {
  if(status_GETDESC)
   {
     if((rxstat&0x5F)!=0x10)
     {
     }
   status_GETDESC=0;
   FLUSHTX0;
  }
  write_usb(RXC0,RX_EN);
 }
}
/***************************************************************************
【功能說明】This subroutine handles RX events for FIFO1 (endpoint 2)
****************************************************************************/
void rxevent_1(void)
{
  rxstat=read_usb(RXS1);		/*get receiver status     */
}
/***************************************************************************
【功能說明】This subroutine handles RX events for FIFO2 (endpoint 4)
****************************************************************************/
void rxevent_2(void)
{
  rxstat=read_usb(RXS2);              /*get receiver status */
}
/***************************************************************************
【功能說明】This subroutine handles RX events for FIFO3 (endpoint 6)
****************************************************************************/
void rxevent_3(void)
{
  U8 i,bytes_count;
//  U8 j = 0;
  rxstat=read_usb(RXS3);		/*get receiver status     */
  if(rxstat&SETUP_R)
  {
  }
  else if(rxstat&RX_ERR)
  {
    FLUSHRX3;                 /*flush RX2 and disable  */
    write_usb(RXC3,RX_EN);    /*re-enable the receiver */
  }
  else
  {
  /*
    do{
         bytes_count = read_usb(RXS3)&0x0f;
         (*(volatile unsigned char *)0x02000002)=RXD3;
         for(i = 0; i< bytes_count; i++)
         {
            COMbuf[j++] = (*(volatile unsigned char *)0x02000000); 
      	    COMlen++;
         }
      }while(bytes_count == 0x0f);
     */
     do{
         bytes_count = read_usb(RXS3)&0x0f;
         (*(volatile unsigned char *)0x02000002)=RXD3;
         for(i = 0; i< bytes_count; i++)
         {
            COMbuf[2][COMfront[2]++] = (*(volatile unsigned char *)0x02000000); 
      	    if(COMfront[2] > 64)
      	    {
      	    	COMfront[2] = 0;
      	    	if(COMfront[2] == COMtail[2])
      	    	{
      	    		COMtail[2]++;
      	    		if(COMtail[2] > 64)
      	    			COMtail[2] = 0;
      	    	}
      	    }
         }
      }while(bytes_count == 0x0f);

/*  	
    while(read_usb(RXS3)&0x0f)
    {
     *Rev_COMptr=read_usb(RXD3);
     Rev_COMptr++;
     Rev_COMlen++;
    }
*/
    FLUSHRX3;                 /*flush RX2 and disable  */
    write_usb(RXC3,RX_EN);    /*re-enable the receiver */
  }
}
/***************************************************************************
【功能說明】This subroutine handles TX events for FIFO0 (endpoint 0)
****************************************************************************/
void txevent_0(void)
{
  U8 lim;
  txstat=read_usb(TXS0);            /*get transmitter status*/
  if((txstat&ACK_STAT)&&(txstat&TX_DONE))
  {
    FLUSHTX0;
    if(status_GETDESC)
    {
      lim=desc_idx+8;
      for(;((desc_idx<lim)&&(desc_idx<desc_sze));desc_idx++)
 	  get_desc();
      TXEN0_PID;
    }
  }
  else
  write_usb(RXC0,RX_EN);          /*re-enable the receiver  */
}
/***************************************************************************
【功能說明】This subroutine handles TX events for FIFO1 (endpoint 1)
****************************************************************************/
void txevent_1(void)
{
  txstat=read_usb(TXS1);              /*get transmitter status  */
}
/***************************************************************************
【功能說明】This subroutine handles TX events for FIFO2 (endpoint 3)
****************************************************************************/
void txevent_2(void)
{
  txstat=read_usb(TXS2);         /*get transmitter status  */
}
/***************************************************************************
【功能說明】This subroutine handles TX events for FIFO3 (endpoint 5)
****************************************************************************/
void txevent_3(void)
{
  txstat=read_usb(TXS3);         /*get transmitter status  */
  //Uart_Printf(0,"\n txstat=%x",txstat);
  if (txstat & ACK_STAT)
 {	
   /*-----------------------------------------------------------------------
    * previous data packet from current ep was received successfully by host
    *-----------------------------------------------------------------------*/
    FLUSHTX3;
    //Flag = TRUE;
  }
  else 
  {
    /*------------------------------------
     * there is no ACK
     * retransmit the previous data packet
     *------------------------------------*/
     if(dtapid_TGL3PID) 
        write_usb(TXC3,TX_TOGL+TX_LAST+TX_EN+RFF);
     else write_usb(TXC3,TX_LAST+TX_EN+RFF);
     dtapid_TGL3PID=!dtapid_TGL3PID;
//     write_usb(TXC3,TX_LAST+TX_EN+RFF);
  }
}
/***************************************************************************
【功能說明】9603寫控制,根據(jù)具體硬件結(jié)構(gòu)修改 
****************************************************************************/
void write_usb(unsigned char addr,unsigned char dat)
{
	(*(volatile unsigned char *)0x02000002)=addr;
	(*(volatile unsigned char *)0x02000000)=dat;
}
/***************************************************************************
【功能說明】9603讀控制,根據(jù)具體硬件結(jié)構(gòu)修改
****************************************************************************/
unsigned char read_usb(unsigned char addr)
{
	(*(volatile unsigned char *)0x02000002)=addr;
	return (*(volatile unsigned char *)0x02000000);
}

void bitset(unsigned char addr, unsigned char mask)
{
   write_usb(addr,(read_usb(addr)|(mask)));   /*set the bit (RMW)  */
}

void bitclr(unsigned char addr, unsigned char mask)
{
   write_usb(addr,(read_usb(addr)&(~mask)));  /*clr the bit (RMW)  */
}
/***************************************************************************
【功能說明】取描述符 
****************************************************************************/
void getdescriptor(void)
{
  status_GETDESC=1;                  /*enter GETDESC mode      */
  desc_typ=usb_buf[3];               /*store the type requested*/
  /*select descriptor size and starting index  */
  if(desc_typ==DEVICE)
    desc_sze=DEV_DESC_SIZE;          /*DEV_DESC_SIZE=18        */
  else if(desc_typ==CONFIGURATION)
    desc_sze=CFG_DESC_SIZE;          /*DEV_DESC_SIZE=18        */
  if (desc_sze>usb_buf[6])
    desc_sze=usb_buf[6];
  for(desc_idx=0;((desc_idx<8)&&(desc_idx<desc_sze));desc_idx++)
    get_desc();
}

void get_desc(void)
{
  U8 desc_dta;
  if(desc_typ==DEVICE)
  {
    desc_dta=DEV_DESC[desc_idx];
  }
  else if(desc_typ==CONFIGURATION)
    desc_dta=CFG_DESC[desc_idx];
    write_usb(TXD0,desc_dta);
}
/***************************************************************************
【功能說明】取狀態(tài)
****************************************************************************/
void getstatus(void)
{
	switch(usb_buf[0]&0x03)            /*find request target     */
	{
		case 0:                    /*DEVICE                  */
		write_usb(TXD0,0);         /*first  byte is reserved */
	    break;

	    case 1:                        /*INTERFACE               */
	    write_usb(TXD0,0);             /*first  byte is reserved */
	    break;

	    case 2:                        /*ENDPOINT                */
	    switch(usb_buf[4]&0x0f)        /*find specific endpoint  */
		{                          /*  (strip off dir. bit)  */
			case 0:
			if(stall0)write_usb(TXD0,1);else write_usb(TXD0,0);
			break;

			case 1:
			if(stall1)write_usb(TXD0,1);else write_usb(TXD0,0);
			break;

			case 2:
			if(stall2)write_usb(TXD0,1);else write_usb(TXD0,0);
			break;

			case 3:
			if(stall3)write_usb(TXD0,1);else write_usb(TXD0,0);
			break;

			case 4:
			if(stall4)write_usb(TXD0,1);else write_usb(TXD0,0);
			break;

			case 5:
			if(stall5)write_usb(TXD0,1);else write_usb(TXD0,0);
			break;

			case 6:
			if(stall6)write_usb(TXD0,1);
			else write_usb(TXD0,0); /*first  byte is reserved */
			break;

			default:
			break;
		}
		default:
		break;
	}
	write_usb(TXD0,0);             /*second byte is reserved */
}
/***************************************************************************
【功能說明】清除特性
****************************************************************************/
void clrfeature(void)
{
	switch(usb_buf[0]&0x03)  /*find request target*/
	{
		case 0:              /*DEVICE             */
	    break;

	    case 1:              /*INTERFACE          */
	    break;

	    case 2:              /*ENDPOINT           */
	    switch(usb_buf[4]&0x0f)/*find specific endpoint*/
		{
			case 0:
		    	stall0=0;
		    	break;

		  	case 1:
		    	stall1=0;
		    	break;

		  	case 2:
		    	stall2=0;
		    	break;

		  	case 3:

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产寡妇亲子伦一区二区| 精品福利在线导航| 亚洲成人先锋电影| 9191精品国产综合久久久久久| 三级久久三级久久| 欧美成人在线直播| 风间由美中文字幕在线看视频国产欧美| 国产视频911| 色婷婷精品久久二区二区蜜臀av | 3d成人h动漫网站入口| 亚洲国产一区二区视频| 欧美精三区欧美精三区| 国产一区二区视频在线| 国产精品久久久久久久久免费樱桃 | 一区二区日韩av| 欧美日韩免费电影| 在线视频亚洲一区| 久久99精品国产麻豆婷婷| 国产亚洲精品资源在线26u| 91在线你懂得| 麻豆国产精品官网| 中文字幕亚洲一区二区av在线| 欧美在线视频日韩| 国产一区二区0| 亚洲男同性恋视频| 日韩欧美成人激情| 97久久精品人人做人人爽50路| 日韩成人精品在线| 国产精品五月天| 亚洲一区二区三区中文字幕在线| 日韩欧美第一区| 95精品视频在线| 精品在线一区二区| 一区二区三区欧美视频| 精品不卡在线视频| 欧美三级在线播放| 大白屁股一区二区视频| 七七婷婷婷婷精品国产| 亚洲女人****多毛耸耸8| 日韩欧美一卡二卡| 在线欧美小视频| 北条麻妃国产九九精品视频| 日韩va亚洲va欧美va久久| 麻豆精品精品国产自在97香蕉| 综合久久久久综合| 国产亚洲综合色| 日韩一区二区免费电影| 欧美午夜在线观看| www.欧美日韩国产在线| 国产一区二区三区在线观看免费| 亚洲图片自拍偷拍| 亚洲精品高清在线| 国产精品视频看| 久久精品一区八戒影视| 日韩视频不卡中文| 在线电影院国产精品| 欧美亚洲国产一区二区三区| 欧美成人福利视频| 欧美精品亚洲二区| 欧美午夜精品一区二区蜜桃| 91香蕉视频mp4| 高清av一区二区| 国产福利一区二区三区视频在线| 麻豆国产精品777777在线| 视频在线观看国产精品| 亚洲第一在线综合网站| 亚洲一区二区三区三| 一区二区三区中文免费| 一区二区在线看| 亚洲精品视频在线看| 亚洲天堂2016| 亚洲精品视频免费观看| 美女www一区二区| 久久激情五月激情| 黄色资源网久久资源365| 久久国产人妖系列| 极品尤物av久久免费看| 国产综合久久久久久鬼色| 国产一区中文字幕| 国产不卡视频一区| 成人免费看视频| 91麻豆文化传媒在线观看| 一本久久a久久免费精品不卡| 91亚洲国产成人精品一区二区三 | 亚洲精品午夜久久久| 亚洲少妇30p| 亚洲伊人伊色伊影伊综合网 | 午夜久久久久久电影| 亚洲综合激情小说| 天堂午夜影视日韩欧美一区二区| 石原莉奈在线亚洲三区| 麻豆国产欧美一区二区三区| 国产精品一级片在线观看| 成人免费毛片嘿嘿连载视频| 91视视频在线观看入口直接观看www| 91香蕉视频mp4| 欧美日韩精品电影| 精品国产免费一区二区三区香蕉| 久久久影院官网| 日韩理论电影院| av电影在线观看一区| 91视频免费看| 日韩视频免费观看高清完整版 | 亚洲国产日韩一区二区| 奇米777欧美一区二区| 国产大片一区二区| 91浏览器入口在线观看| 欧美日本一道本在线视频| 精品国产1区二区| 成人精品国产免费网站| 欧美主播一区二区三区| 日韩欧美激情四射| 国产精品乱码久久久久久| 亚洲一区二区av电影| 精品一区二区久久久| 99re这里只有精品视频首页| 欧美日韩精品电影| 中文字幕国产一区| 蜜芽一区二区三区| 91免费观看国产| 精品盗摄一区二区三区| 亚洲免费成人av| 韩国女主播一区| 欧美在线观看一区| 中文字幕乱码日本亚洲一区二区| 亚洲香蕉伊在人在线观| 国产大片一区二区| 欧美一级高清大全免费观看| 国产精品乱码一区二区三区软件 | 日本久久电影网| 五月综合激情网| 91美女在线视频| 久久精品亚洲国产奇米99| 婷婷中文字幕一区三区| 91麻豆免费看片| 国产日韩一级二级三级| 麻豆精品国产传媒mv男同| 欧美午夜影院一区| 亚洲三级免费观看| 国产91露脸合集magnet| 日韩精品专区在线影院重磅| 一区二区三区不卡在线观看 | 国产剧情av麻豆香蕉精品| 欧美在线看片a免费观看| 亚洲欧洲99久久| 国产乱码精品一区二区三 | 日韩亚洲欧美高清| 亚洲电影欧美电影有声小说| 91视频一区二区| 韩国av一区二区| 欧美一级一区二区| 日韩一区精品视频| 欧美视频一区二区在线观看| 国产精品久久久一本精品| 国产成人超碰人人澡人人澡| 日韩欧美在线123| 日本不卡一二三| 欧美一级欧美三级在线观看 | 免费在线看成人av| 在线观看日产精品| 亚洲精品成人少妇| 色菇凉天天综合网| 亚洲情趣在线观看| 色婷婷综合久久久中文一区二区 | 亚洲电影中文字幕在线观看| 欧美一区二区三区性视频| 日韩国产欧美在线观看| 欧美日本不卡视频| 日韩一区欧美二区| 日韩精品一区在线观看| 久久97超碰国产精品超碰| 26uuu精品一区二区三区四区在线| 热久久免费视频| 精品美女一区二区| 国产在线精品不卡| 亚洲国产精品黑人久久久| 成人一区二区三区中文字幕| 国产精品久久久久一区二区三区共| 成人永久免费视频| 亚洲精品日韩综合观看成人91| 在线观看亚洲精品视频| 午夜精品福利在线| 欧美成人video| 久久久久久久久岛国免费| 国产成人午夜高潮毛片| 亚洲色图视频免费播放| 欧美午夜不卡在线观看免费| 丝袜美腿亚洲色图| 久久嫩草精品久久久久| 成人免费视频caoporn| 亚洲一区二区av在线| 欧美成人艳星乳罩| 97精品视频在线观看自产线路二| 一区二区三区在线免费视频| 91精品国产一区二区| 成人av在线网站| 日韩精品一二三区| 国产精品日日摸夜夜摸av| 欧美日韩精品一区二区在线播放| 久久99国产精品麻豆|