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

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

?? isr.c

?? 單片機MSP430與PDIUSBD12的固件代碼,PDIUSBd12的驅動以及上位機與usb之間的通訊測試程序(使用easyd12.dll編寫),已經完全編譯通過,測試成功的圖片見文件內.
?? C
字號:
#include <msp430x14x.h>
#include "d12ci.h"
#include "mainloop.h"
#include "USB100.h"
#include "epphal.h"

void bus_reset(void);
 void ep0_txdone(void);
 void ep0_rxdone(void);
 void dma_eot(void);
 void ep1_txdone(void);
 void ep1_rxdone(void);
 void main_txdone(void);
 void main_rxdone(void);
 void fn_usb_isr(void);


#pragma vector=PORT1_VECTOR
__interrupt void Port1(void)
//interrupt[PORT1_VECTOR] void usb_isr(void)
{
     
	_DINT();
    
	P1IFG = 0;                                
    while((P1IN & D12_INT) == 0)
      fn_usb_isr();
  
    _EINT();

}

void fn_usb_isr()
{
	unsigned int i_st;

	bEPPflags.bits.in_isr = 1;

	i_st = D12_ReadInterruptRegister();//讀取中斷寄存器

	if(i_st != 0) {
		if(i_st & D12_INT_BUSRESET) {
			bus_reset();//USB總線服務
			bEPPflags.bits.bus_reset = 1;
		}

		if(i_st & D12_INT_EOT)
			dma_eot();//DMA傳輸結束

		if(i_st & D12_INT_SUSPENDCHANGE)
			bEPPflags.bits.suspend = 1;//掛起改變

		if(i_st & D12_INT_ENDP0IN)
			ep0_txdone();//端點0IN中斷
		if(i_st & D12_INT_ENDP0OUT)
			ep0_rxdone();//端點0OUT中斷
		if(i_st & D12_INT_ENDP1IN)
			ep1_txdone();//端點1IN中斷
		if(i_st & D12_INT_ENDP1OUT)
			ep1_rxdone();//端點1OUT中斷
		if(i_st & D12_INT_ENDP2IN)
			main_txdone();//端點2IN中斷
		if(i_st & D12_INT_ENDP2OUT)
			main_rxdone();//端點2OUT中斷
	}

	bEPPflags.bits.in_isr = 0;
}
  

  
void ep0_txdone(void)
{
  int i = ControlData.wLength - ControlData.wCount;
  
  LastState_1[CNT_1++] = D12_ReadLastTransactionStatus(1);                     //Clear Endpoint Interrupt Flags
  
  if(bEPPflags.bits.control_state != USB_TRANSMIT)      //Non Transmit_state,return
    return;                                             
  if(i >= EP0_PACKET_SIZE)                              //Transmit 16B
  {
    D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData + ControlData.wCount);
    ControlData.wCount += EP0_PACKET_SIZE;
    bEPPflags.bits.control_state = USB_TRANSMIT;
  }   
  else if(i != 0)                                       //Transmit remains
  {
    D12_WriteEndpoint(1, i, ControlData.pData + ControlData.wCount);
    ControlData.wCount += i;
    bEPPflags.bits.control_state = USB_IDLE;
  }
  else if(i == 0)                                       //Transmission completed
  {
    D12_WriteEndpoint(1, 0, 0);
    bEPPflags.bits.control_state = USB_IDLE;
  }
}

/*------------Endpoint 0 OUT Interrupt-----------*/
void ep0_rxdone(void)
{
  unsigned char ep_last, i;
  ep_last = D12_ReadLastTransactionStatus(0);           //Clear Endpoint Interrupt Flags
  LastState_0[CNT] = ep_last;
  if(ep_last & D12_SETUPPACKET)                         //Received Setup Packet
  { 
    ControlData.wLength = 0;
    ControlData.wCount = 0;
    if(D12_ReadEndpoint(0, sizeof(ControlData.DeviceRequest),(unsigned char *)(&(ControlData.DeviceRequest))) != sizeof(DEVICE_REQUEST))
    {    
      D12_SetEndpointStatus(0,1);
      D12_SetEndpointStatus(1,1);
      bEPPflags.bits.control_state = USB_IDLE;
      return; 
    }
        
    //Acknowlege EndPoint0
    D12_AcknowledgeEndpoint(0);
    D12_AcknowledgeEndpoint(1);
    ControlData.wLength = ControlData.DeviceRequest.wLength;
    ControlData.wCount = 0;    
    if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK)
    {
      //Device --> Host
      bEPPflags.bits.setup_packet = 1;
      bEPPflags.bits.control_state = USB_TRANSMIT;
    }
    else
    { 
      //Host --> Device
      if(ControlData.DeviceRequest.wLength == 0)
      {
        bEPPflags.bits.setup_packet = 1;
        bEPPflags.bits.control_state = USB_IDLE;
      }
      else
      {
        if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE)
        {
          bEPPflags.bits.control_state = USB_IDLE;
          D12_SetEndpointStatus(0,1);
          D12_SetEndpointStatus(1,1);
        } 
        else  bEPPflags.bits.control_state = USB_RECEIVE;
      }//SET COMMAND WITH DATA
    }//ELSE SET COMMAND   
  }//IF SETUP PACKET
  else if(bEPPflags.bits.control_state == USB_RECEIVE)  
  {
    i = D12_ReadEndpoint(0, EP0_PACKET_SIZE, ControlData.dataBuffer + ControlData.wCount);
    ControlData.wCount += i;
    if(i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength)               //Data Receiving completed
    {
      bEPPflags.bits.setup_packet = 1;
      bEPPflags.bits.control_state = USB_IDLE;
    }
  }
  else  bEPPflags.bits.control_state = USB_IDLE;
  
  //trace the request
  DeviceRequest[CNT].bmRequestType = ControlData.DeviceRequest.bmRequestType;
  DeviceRequest[CNT].bRequest = ControlData.DeviceRequest.bRequest;
  DeviceRequest[CNT].wValue = ControlData.DeviceRequest.wValue;
  DeviceRequest[CNT].wIndex = ControlData.DeviceRequest.wIndex;
  DeviceRequest[CNT].wLength = ControlData.DeviceRequest.wLength;
  CNT++;
}
void bus_reset(void)
{
}

void dma_eot(void)
{
}

void ep1_txdone(void)
{
  D12_ReadLastTransactionStatus(3);
}

void ep1_rxdone(void)
{
  unsigned char len;
  D12_ReadLastTransactionStatus(2);
  len = D12_ReadEndpoint(2, EP1_PACKET_SIZE, GenEpBuf);
  if(len != 0)
    bEPPflags.bits.ep1_rxdone = 1;
}

void main_txdone(void)
{
  D12_ReadLastTransactionStatus(5);
}

void main_rxdone(void)
{
  unsigned char len, epstatus;
  D12_ReadLastTransactionStatus(4);
  epstatus = D12_ReadEndpointStatus(4);
  epstatus &= 0X60;
  
  len = D12_ReadEndpoint(4, 64, EpBuf);
  if(epstatus == 0X60)
    len = D12_ReadEndpoint(4, 64, EpBuf);                 //Read From Double Buffer
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品粉嫩高潮一区二区| 99热精品国产| 亚洲国产欧美日韩另类综合| 国产精品网站在线| 中文字幕在线观看不卡| 国产精品成人免费精品自在线观看| 精品国产a毛片| 久久久精品国产99久久精品芒果| 精品99999| 国产精品毛片无遮挡高清| 国产精品美女久久久久aⅴ| 亚洲欧洲在线观看av| 一区二区三区自拍| 亚洲.国产.中文慕字在线| 日韩高清不卡一区| 激情综合一区二区三区| 国产99久久精品| 91免费小视频| 制服丝袜国产精品| 久久亚洲捆绑美女| 亚洲婷婷在线视频| 日韩国产欧美视频| 国产成人在线观看| 91福利国产精品| 精品国免费一区二区三区| 国产免费久久精品| 亚洲尤物在线视频观看| 久草在线在线精品观看| 丁香天五香天堂综合| 色狠狠综合天天综合综合| 9191久久久久久久久久久| 久久精品网站免费观看| 亚洲欧美一区二区三区国产精品 | 日本丶国产丶欧美色综合| 欧美视频一区在线观看| 久久久蜜桃精品| 亚洲一区二区三区免费视频| 激情伊人五月天久久综合| caoporn国产精品| 日韩视频一区二区三区| 亚洲天堂成人在线观看| 美女一区二区三区| 91久久人澡人人添人人爽欧美| 日韩欧美在线网站| 一区二区三区小说| 国产高清精品网站| 7777精品伊人久久久大香线蕉最新版 | 久久精品久久久精品美女| 不卡av电影在线播放| 欧美不卡在线视频| 午夜影院在线观看欧美| 成人视屏免费看| 精品电影一区二区三区| 亚洲成人免费在线| 99re这里只有精品6| 精品福利av导航| 日本视频一区二区| 欧美色图片你懂的| 亚洲精品日日夜夜| 成人国产在线观看| 国产婷婷精品av在线| 国内欧美视频一区二区| 91精品国产手机| 一区二区三区中文字幕精品精品| 国产二区国产一区在线观看| 欧美xxx久久| 美国av一区二区| 日韩欧美激情在线| 日本 国产 欧美色综合| 欧美美女bb生活片| 日韩精品电影在线观看| 欧美色老头old∨ideo| 亚洲狠狠爱一区二区三区| 国产成人精品免费看| 久久亚洲捆绑美女| 国产剧情在线观看一区二区| 精品国内片67194| 精品亚洲成a人| 26uuu久久综合| 国产精品自拍在线| 久久蜜桃av一区二区天堂| 精一区二区三区| 国产视频在线观看一区二区三区 | 中文字幕成人网| 不卡的电影网站| 一区二区三区四区在线| 欧美偷拍一区二区| 日韩av电影免费观看高清完整版 | 日本不卡在线视频| 日韩欧美亚洲一区二区| 精品午夜久久福利影院| 欧美韩国日本不卡| 色综合色综合色综合| 亚洲一本大道在线| 欧美一区二区三区公司| 国产高清在线精品| 亚洲同性同志一二三专区| 欧美三级资源在线| 精品一区二区三区在线观看国产| 国产欧美日韩在线| 欧美综合天天夜夜久久| 美女在线视频一区| 国产精品毛片高清在线完整版| 在线视频综合导航| 久久精品国产亚洲高清剧情介绍| 国产欧美精品一区二区三区四区| 欧美蜜桃一区二区三区| 久草中文综合在线| 中文文精品字幕一区二区| 欧美日韩中文字幕一区| 激情伊人五月天久久综合| 亚洲日本在线观看| 日韩美女在线视频| 99久久久国产精品| 玖玖九九国产精品| 一区二区成人在线视频| 久久综合九色综合欧美就去吻| 91麻豆精东视频| 国产一区二区三区久久久| 亚洲一区二区黄色| 中文字幕av一区二区三区高| 欧美老年两性高潮| 成人app下载| 国产中文字幕精品| 午夜私人影院久久久久| 国产精品乱码一区二三区小蝌蚪| 在线不卡中文字幕| 色婷婷综合久久久| 国产高清精品在线| 极品美女销魂一区二区三区免费| 亚洲国产一二三| 亚洲品质自拍视频网站| 亚洲国产成人在线| 日韩欧美黄色影院| 欧美日韩国产高清一区二区三区| 99久久综合色| 成人夜色视频网站在线观看| 久久草av在线| 美国十次了思思久久精品导航| 亚洲va欧美va人人爽| 亚洲乱码国产乱码精品精小说 | 欧美福利视频一区| 欧美写真视频网站| 精品国精品国产| 欧美猛男gaygay网站| 在线亚洲一区二区| 91色|porny| 色婷婷一区二区三区四区| 大胆欧美人体老妇| 国产白丝精品91爽爽久久| 黄一区二区三区| 精品一区二区国语对白| 另类小说综合欧美亚洲| 久久精工是国产品牌吗| 免费在线视频一区| 久久aⅴ国产欧美74aaa| 青娱乐精品视频| 久久99精品视频| 久久97超碰色| 国产91精品精华液一区二区三区 | 欧美一二三四区在线| 日韩欧美另类在线| 久久综合色婷婷| 国产欧美日韩视频一区二区| 国产精品国产a| 一区二区三区在线观看网站| 亚洲成人福利片| 久久精品久久精品| 成人毛片在线观看| 色婷婷综合视频在线观看| 欧美三电影在线| 日韩一级二级三级| 中文字幕不卡的av| 亚洲午夜久久久久中文字幕久| 亚洲成av人片一区二区| 久久97超碰色| 99热99精品| 欧美一级高清大全免费观看| 国产三级精品三级| 亚洲精品成人天堂一二三| 热久久一区二区| 成人v精品蜜桃久久一区| 欧美日韩国产在线播放网站| 国产精品国产三级国产aⅴ入口| 亚洲精品精品亚洲| 毛片av一区二区三区| 91免费版在线| 日韩美女视频一区二区在线观看| 国产精品丝袜在线| 日韩av网站免费在线| 成人av在线一区二区| 91精品国产综合久久婷婷香蕉| 久久精品一区四区| 亚洲1区2区3区4区| 成人国产视频在线观看| 欧美电视剧在线看免费| 亚洲综合色噜噜狠狠| 国产suv精品一区二区6| 这里只有精品免费| 一区二区三区四区中文字幕|