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

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

?? et21x130c_usb_lib.c

?? 在臺灣義統公司
?? C
?? 第 1 頁 / 共 5 頁
字號:
//////////////////////////////////////////////////////////
//
//  USB Library main file 
//  You can revise the sub function in the prjName.c
//  Revise this file may cause usb error!
//
//////////////////////////////////////////////////////////
   
//if MCU speed is set 24MHz or 48MHz, please define "ET_MCU_HI_SPEED" 
#define ET_MCU_HI_SPEED

#include <usb_reg.h>

//Use lib generator to create ET21x130C_c_setting.h
#include "ET21x130C_c_setting.h"

#include <interrupt.h>

#include <c_macro.h>

#include "ET21x130C_usb_lib.h"

                 
                         
                         
                         
                         

void UsbIntPre() using USBBANK
{
#if _USB_AUTO_SET_BANK
   M_BANK(USB_BANK);
#endif
 
#if _USB_AUTO_STORE_IAP0
   STACK_IAP0 = IAP0;
#endif
  
}

////////////////////////////////////////////////////////////////
// fun: UsbInitial
// Initial usb register.
// If you want to add code when usb initial,revise AddUsbInitialWorkSub(),
// Call Function: AddUsbInitialWorkSub();
///////////////////////////////////////////////////////////////
// UsbInital() revised by USB_INITAL
void UsbInitial() using USBBANK
{
    // 
    IAPADR = 0x05;

    // enable usb function
    M_BS6(PRIE);
    
//    M_BANK(USB_BANK);    
//hub endpoint transmit: 0: not transmit yet  1:transmit ok, 

    M_BC3(HUB_STATUS);
	USB_STATUS = 0;
	STATUS_BUF = 0;
	A_INTERFACE = 0;

// enable embedd function interrupt
    EPINTE = 0x3f;
	USB_Lib_Delay();

//_ENABLE USB Bus Reset Event 
	STAINTE = 0x01;
	USB_Lib_Delay();

//Hub initilize: interrupt INT__ENABLE
	HINTE = 0xCF;
	USB_Lib_Delay();



//Address clear  
	ADDRESS_BUFh = 0;
	ADDRESS_BUFf = 0;
	
	
	FAR = 0xFF;
	USB_Lib_Delay();
	HAR = 0xFF;
	USB_Lib_Delay();
	
//USB SPEED setting
#if _USB_FULL_SPEED
    M_BS7(GCNTR);
#else
    M_BC7(GCNTR);
#endif 
       
    USB_Lib_Delay();
    
//Start transmition: plug-in    
    M_BS1(GCNTR);
        
    USB_Lib_Delay();
    
    //. call macro  _ADD_USB_INITIAL_WORK_SUB      
    AddUsbInitialWorkSub();
    
    return;
  
}


///////////////////////////////////////////////////////////
//. RST_ISR interrupt function,interrupt vector 0x98
//  run when USB Bus Reset Event Detect
//  If you want to add code when usb reset,revise AddUsbBusResetSub(),
//  Call Function: AddUsbBusResetSub();
///////////////////////////////////////////////////////////
void Int_RstInte() interrupt INT_RSTINTE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
   UsbIntPre();
#endif

   // software reset usb device 
   M_BS0(GCNTR);
   USB_Lib_Delay();

   // clear usb bus reset event detect

//**Remote-wakeup disable,power switch disable   
   
   //HGSR = 0;
   _asm
     MOV A,#0x00
     MOV _HGSR,A
   _endasm;  


   // set Hub address
//   HAR = 0x00;
   USB_Lib_Delay();
   
   // usb device address
   HAR = 0;
   USB_Lib_Delay();
   FAR = 0;
   USB_Lib_Delay();
   
   STAINTR = 0xFE;//#0b11111110
   USB_Lib_Delay();
  
   nAddrBuf = 0;
   HEP1_CNT = 0;
   USB_STATUS = 0;
   STATUS_BUF = 0;
   
#if !_USB_HUB
   {
      HAR = 127;
      USB_Lib_Delay();
      M_BS5(HGSR);
      USB_Lib_Delay();
      HPCONR = 145;//#0b10010001
      USB_Lib_Delay();
      M_BC0(HPSCR1);
            
      USB_Lib_Delay();
      M_BS5(GCNTR);
      USB_Lib_Delay();
      HPCONR = 137; //#0b10001001
      USB_Lib_Delay();
      M_BC4(HPSCR1);   
      USB_Lib_Delay();
   }
#endif   
   //. call macro _ADD_USB_BUS_RESET_SUB
   AddUsbBusResetSub();

 Back_To_Mloop: 
#if(_USB_AUTO_STORE_IAP0)
   {
      IAP0=STACK_IAP0;
      USB_Lib_Delay();        
   }
#endif
   
#if(_USB_DIS_ANO_INT)
      M_ENI;
#endif
      
   return;  
}


///////////////////////////////////////////////////////////
//. RX0_ISR interrupt function,interrupt vector 0x88
//  run when USB EP0 RX Event
//  If you want to add code when USB EP0 RX Event occur ,revise AddUsbSetReportSub(),
//  Call Function:AddUsbSetReportSub();
///////////////////////////////////////////////////////////
//RX0_ISR 2004/01/27 Create by Brooklin
void Int_Int0Rxe(void) interrupt INT_INT0RXE using USBBANK
{
	
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
    UsbIntPre();
#endif
    
    if(M_ISBS0(EP0RXTR))    // JBS	EP0RXTR,OUT,f_out_package
    {//. f_out_package
        EP0RXTR = 0xFE; //#0b11111110
        USB_Lib_Delay();
        //. JBC 	FC_STATUS,DATA_OUT,next_f_inout   					
        if(M_ISBC2(FC_STATUS))
            goto Next_F_Inout;
        else
        {
            M_BC2(FC_STATUS);   
            //macro  _ADD_USB_SET_REPORT_SUB
            AddUsbSetReportSub();  
            
            nwLength = 0;     
            //wLengthL = 0;
            //wLengthH = 0;
            
            //. next_f_inout
        }
    }
    //. f_setup_package
    else
    {
        if(M_ISBS1(EP0RXTR))
        {
            EP0RXTR = 0xFD; //#0b11111101        
        }
        else
        {
            EP0RXTR = 0xFB; //#0b11111011
        }

        _asm 
          NOP
          MOV A,#_bmRequestType
          MOV _IAP0,A
          NOP
        _endasm;

        
        while(M_ISBC3(IAP0))
        {
           IAC0 = EP0RXDAR;
        }

// replace wLengthH and wLengthL by nwLength 
//        if(!wLengthH && !wLengthL)
        if(!nwLength)
        {
           EP0TXCTR = 0;
           USB_Lib_Delay();
        }    
        
        M_BC1(USB_STATUS);
        M_BC0(USB_STATUS);
        M_BC2(USB_STATUS);
        M_BC5(USB_STATUS);
        
//        _asm
//          MOV A,#_bmRequestType
//        _endasm;
        StageOne();
         
        if(M_ISBS0(USB_STATUS)) 
        {//.f_stall
           M_BS1(EP0RXCSR);
           USB_Lib_Delay();
           M_BS1(EP0TXCSR); 
           USB_Lib_Delay();
           goto Back_To_Mloop;       
        }    
    } 
 
 Next_F_Inout:   
   M_BC1(EP0RXCSR);
   USB_Lib_Delay();
   M_BC1(EP0TXCSR);
   USB_Lib_Delay();
   M_BS0(EP0RXCSR);
   USB_Lib_Delay();
   M_BS0(EP0TXCSR); 

  // BACK_TO_MLOOP
Back_To_Mloop: 
#if(_USB_AUTO_STORE_IAP0)
   {
      IAP0=STACK_IAP0;
      USB_Lib_Delay();        
   }
#endif
   
#if(_USB_DIS_ANO_INT)
      M_ENI;
#endif

   return;        
}

///////////////////////////////////////////////////////////
//. IN0_ISR interrupt function,interrupt vector 0x88
//  run when EP0 USB IN Token Event occur
//  
//  Call Function: 
///////////////////////////////////////////////////////////
void Int_Int0Ine(void) interrupt INT_INT0INE using USBBANK
{
	
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
   UsbIntPre();
#endif
      
 //Clear interrupt flag   
   EPINTR = 251;//#0b11111011
   USB_Lib_Delay();

#if(_USB_AUTO_STORE_IAP0)
   {
      IAP0=STACK_IAP0;
      USB_Lib_Delay();        
   }
#endif
   
#if(_USB_DIS_ANO_INT)
      M_ENI;
#endif

   return;  
}



////////////////////////////////////////////////////////////////////////////////////////
//. TX0_ISR interrupt function,interrupt vector 0x88
//  run when USB EP0 TX Event
//  If you want to add code when USB EP0 TX Event occur ,revise AddUsbGetReportExpSub(),
//  Call Function:AddUsbGetReportExpSub();
////////////////////////////////////////////////////////////////////////////////////////
void Int_Int0Txe(void) interrupt INT_INT0TXE using USBBANK
{
#if(_USB_AUTO_SET_BANK ||_USB_AUTO_STORE_IAP0)
   UsbIntPre();
#endif
 //Clear interrupt INT_flag   
   EPINTR = 253;//#0b11111101
   USB_Lib_Delay();
   
   FAR = ADDRESS_BUFf;
   USB_Lib_Delay();
   if(!TBLL)
   {//. exit_tx01
      EP0TXCTR=0;
      USB_Lib_Delay();
   }
   else if(nwLength)
   {//. TX0_ISR1
      if(M_ISBS5(FC_STATUS))
      {//. USB_GET_REPORT_SUB
       //. call macro  _ADD_USB_GET_REPORT_EXP_SUB
         AddUsbGetReportExpSub();
      }
      else
      {
         nTable = nRomAdr;
         //HTBL = ROMADRH;
         //LTBL = ROMADRL;
         USB_Lib_Delay();
         fTransmitTable();
      }  
   }

 Next_F_Inout:   
   M_BC1(EP0RXCSR);
   USB_Lib_Delay();
   M_BC1(EP0TXCSR);
   USB_Lib_Delay();
   M_BS0(EP0RXCSR);
   USB_Lib_Delay();
   M_BS0(EP0TXCSR); 
}


////////////////////////////////////////////////////////////////////////////////////////
//. EP1_ISR interrupt function,interrupt vector 0x90
//  run when EP1 Interrupt occur
//  If you want to add code when EP1 Interrupt occur ,revise AddUsbEp1Sub(),
//  Call Function:AddUsbEp1Sub();
////////////////////////////////////////////////////////////////////////////////////////
void Int_Int1e() interrupt INT_INT1E using USBBANK
{
   //UsbIntPre();
   //M_BC1(PORTB);
   EPINTR = 247; // #0b11110111
   USB_Lib_Delay();
   //. call macro _ADD_USB_EP1_SUB
   AddUsbEp1Sub();

 Back_To_Mloop: 
#if(_USB_AUTO_STORE_IAP0)
   {
      IAP0=STACK_IAP0;
      USB_Lib_Delay();        
   }
#endif
   
#if(_USB_DIS_ANO_INT)
      M_ENI;
      
#endif
      
   return;  
}


////////////////////////////////////////////////////////////////////////////////////////
//. EP2_ISR interrupt function,interrupt vector 0x90
//  run when EP2 Interrupt occur
//  If you want to add code when EP2 Interrupt occur ,revise AddUsbEp2Sub(),
//  Call Function:AddUsbEp2Sub();
////////////////////////////////////////////////////////////////////////////////////////
void Int_Int2e() interrupt INT_INT2E using USBBANK
{
   UsbIntPre();
   EPINTR = 239; // #0b11101111
   USB_Lib_Delay();
   //. call macro _ADD_USB_EP2_SUB
   AddUsbEp2Sub();


 Back_To_Mloop: 
#if(_USB_AUTO_STORE_IAP0)
   {
      IAP0=STACK_IAP0;
      USB_Lib_Delay();        
   }
#endif
   
#if(_USB_DIS_ANO_INT)
      M_ENI;
#endif

   return; 
}




////////////////////////////////////////////////////////////////////////////////////////
//. EP3_ISR interrupt function,interrupt vector 0x90
//  run when EP3 Interrupt occur
//  If you want to add code when EP3 Interrupt occur ,revise AddUsbEp3Sub(),
//  Call Function:AddUsbEp3Sub();
////////////////////////////////////////////////////////////////////////////////////////
void Int_Int3e() interrupt INT_INT3E using USBBANK
{
   UsbIntPre();
   EPINTR = 223; // #0b11011111
   USB_Lib_Delay();
   //. call macro _ADD_USB_EP3_SUB
   AddUsbEp3Sub();


Back_To_Mloop: 
#if(_USB_AUTO_STORE_IAP0)
   {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线小视频| 国产精品免费看片| 国产美女av一区二区三区| 日韩精品在线一区二区| 免费视频一区二区| 久久久精品中文字幕麻豆发布| 男男gaygay亚洲| 一区免费观看视频| 欧美一区午夜精品| 成人午夜电影小说| 午夜视频久久久久久| 91 com成人网| 激情丁香综合五月| 日韩经典中文字幕一区| 国产三级一区二区| 成人夜色视频网站在线观看| 亚洲成在人线在线播放| 久久精品亚洲精品国产欧美 | 国产精品成人免费在线| 欧美日韩国产在线观看| 国产成人av一区二区三区在线 | 天堂在线亚洲视频| 日韩视频免费观看高清完整版| aa级大片欧美| 亚洲国产精品久久不卡毛片 | 国产精品毛片a∨一区二区三区| 91丨九色丨尤物| 激情综合网激情| 亚洲电影第三页| 日韩理论在线观看| 在线观看av不卡| 国产一区二区看久久| 久久久久久久久久看片| 亚洲第一av色| 久久精品国产秦先生| 亚洲精品国产a久久久久久| 精品久久一二三区| 欧美精品 国产精品| 五月天丁香久久| 亚洲乱码国产乱码精品精小说| 国产午夜久久久久| 欧美丝袜丝nylons| 国产suv精品一区二区三区| 一区2区3区在线看| 亚洲国产激情av| 久久蜜臀中文字幕| 精品国产乱码久久久久久蜜臀| 欧美日韩高清在线| 色香蕉成人二区免费| 美国毛片一区二区| 男女男精品视频网| 免费在线视频一区| 日韩中文字幕不卡| 亚洲亚洲人成综合网络| 成人av综合在线| 国内欧美视频一区二区| 九色porny丨国产精品| 日韩精品乱码免费| 日一区二区三区| 日韩不卡一区二区三区| 亚洲天堂免费看| 亚洲欧美一区二区三区国产精品| 国内精品免费**视频| 另类小说色综合网站| 亚洲大片一区二区三区| 亚洲精品一区在线观看| 久久综合九色综合97婷婷| 欧美三区免费完整视频在线观看| 在线中文字幕不卡| 欧美亚洲禁片免费| 欧美日本国产一区| 成人福利视频在线看| 成a人片亚洲日本久久| a4yy欧美一区二区三区| 色综合久久99| 成人污污视频在线观看| 国产成都精品91一区二区三| 自拍偷拍亚洲综合| 亚洲一区二区成人在线观看| 国产精品你懂的在线欣赏| 国产亚洲欧美在线| 国产精品久久久一区麻豆最新章节| 久久综合狠狠综合| 中文字幕在线不卡一区二区三区| 亚洲午夜av在线| 欧美肥大bbwbbw高潮| 一区二区三区加勒比av| 亚洲精品国产精品乱码不99| 一区二区三区波多野结衣在线观看 | 日本精品裸体写真集在线观看| 国产91精品免费| 精品一区二区三区在线播放视频| 高清不卡在线观看av| 91视频www| 亚洲电影一级片| 亚洲精品国产无套在线观| 国产亚洲欧美日韩在线一区| 一区二区三区.www| 国产成人自拍网| 91超碰这里只有精品国产| 中文字幕亚洲在| 精品在线视频一区| 欧美午夜一区二区三区免费大片| 久久欧美中文字幕| 三级在线观看一区二区| 日韩免费一区二区| 国产午夜精品久久| 日本午夜一区二区| 色婷婷激情一区二区三区| 精品成人在线观看| 亚洲电影第三页| 91在线观看成人| 久久精品视频一区| 蜜芽一区二区三区| 欧美最猛黑人xxxxx猛交| 日本一区二区三区dvd视频在线| 日本成人在线网站| 欧美性色综合网| 亚洲美女视频一区| 99久久久免费精品国产一区二区| 26uuu久久天堂性欧美| 丝袜美腿一区二区三区| 在线亚洲高清视频| 欧美日韩精品免费观看视频 | 一区二区三区**美女毛片| 成人sese在线| 国产日韩欧美精品综合| 国产一区二区三区精品视频| 日韩久久久久久| 久久精品噜噜噜成人av农村| 欧美一区在线视频| 国产福利视频一区二区三区| 91精品福利在线一区二区三区 | 日韩欧美的一区| 午夜天堂影视香蕉久久| 欧美做爰猛烈大尺度电影无法无天| 中文字幕制服丝袜成人av| 成人午夜在线视频| 欧美精彩视频一区二区三区| 国产99久久久国产精品免费看| 国产亚洲欧洲一区高清在线观看| 国产成人在线影院| 久久精品视频一区二区| 国产成人8x视频一区二区| 国产精品久久久久久久久免费樱桃 | 日韩电影一区二区三区四区| 欧美高清视频不卡网| 免费一级欧美片在线观看| 欧美tickling挠脚心丨vk| 精品亚洲国内自在自线福利| 久久久久久免费网| 成人午夜看片网址| 成人激情小说乱人伦| 欧美精品高清视频| 麻豆精品新av中文字幕| 2021中文字幕一区亚洲| 国产精品亚洲一区二区三区在线| 国产精品无遮挡| 91黄色激情网站| 亚洲成人午夜电影| 精品国产成人在线影院| 成人综合婷婷国产精品久久免费| 国产精品国产自产拍高清av王其 | 国产成人aaa| 一区二区三区国产| 久久精品欧美一区二区三区麻豆| 99热这里都是精品| 亚洲午夜成aⅴ人片| 日韩美女在线视频| 国产一区高清在线| 欧美亚洲综合网| 亚洲高清视频在线| 666欧美在线视频| 伦理电影国产精品| 久久免费的精品国产v∧| 成人h版在线观看| 亚洲人成7777| 欧美乱妇15p| 久久精品国产99国产精品| 久久久久国产成人精品亚洲午夜| 91久久精品国产91性色tv| 一二三区精品福利视频| 欧美精品一二三区| 国产一区二区三区在线看麻豆| 国产精品三级电影| 在线看一区二区| 久久国产精品99久久人人澡| 2014亚洲片线观看视频免费| 成人黄色在线网站| 亚洲va韩国va欧美va| 精品久久久网站| 91在线视频免费观看| 丝袜诱惑制服诱惑色一区在线观看| 精品国产一区二区三区不卡| 99麻豆久久久国产精品免费| 亚洲一区在线播放| 久久综合久色欧美综合狠狠| 99精品视频一区| 免费高清成人在线| 最近中文字幕一区二区三区|