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

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

?? chap_9.lst

?? 通過PDIUSBD12對步進電機進行控制
?? LST
?? 第 1 頁 / 共 2 頁
字號:
C51 COMPILER V6.12  CHAP_9                                                                 06/08/2007 20:53:11 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE CHAP_9
OBJECT MODULE PLACED IN .\Chap_9.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE .\Chap_9.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /****************************************Copyright (c)**************************************************
   2          **                               廣州周立功單片機發展有限公司
   3          **                                     研    究    所
   4          **                                        產品一部 
   5          **
   6          **                                 http://www.zlgmcu.com
   7          ** 文   件   名: Chap_9.c
   8          ** 最后修改日期: 2004年11月15日
   9          ** 描        述: USB驅動程序軟件包: PDIUSBD12 設備端驅動程序 協議層
  10          ** 版	     本: V5.0
  11          **********************************************************************************************************
             -/
  12          
  13          #include <reg52.h>
  14          #include "D12Config.h"
  15          #include "D12CI.h"
  16          #include "Chap_9.h"
  17          #include "Descriptor.h"
  18          #include "Protozlg.h"
  19          
  20          //定義控制傳輸結構變量
  21          CONTROL_XFER ControlData;
  22          
  23          //定義USB事件標志變量
  24          EPPFLAGS bEPPflags;
  25          
  26          //*************************************************************************
  27          //USB標準設備請求入口地址指針表
  28          //*************************************************************************
  29          code void (*StandardDeviceRequest[])(void) =
  30          {
  31          	get_status,
  32          	clear_feature,
  33          	reserved,
  34          	set_feature,
  35          	reserved,
  36          	set_address,
  37          	get_descriptor,
  38          	reserved,
  39          	get_configuration,
  40          	set_configuration,
  41          	get_interface,
  42          	set_interface,
  43          	reserved,
  44          	reserved,
  45          	reserved,
  46          	reserved
  47          };
  48          
  49             //*************************************************************************
  50             // USB 協議層函數
  51             //*************************************************************************
  52             
  53          /*************************************
  54          ** 函數名稱: void stall_ep0(void)
C51 COMPILER V6.12  CHAP_9                                                                 06/08/2007 20:53:11 PAGE 2   

  55          ** 功能描述: 使控制端點處于停止狀態
  56          **************************************/
  57          void stall_ep0(void)
  58          {
  59   1      	D12_SetEndpointStatus(0, 1);
  60   1      	D12_SetEndpointStatus(1, 1);
  61   1      }
  62             
  63             
  64          /*************************************
  65          ** 函數名稱: void reserved(void)
  66          ** 功能描述: 保留子程序
  67          **************************************/   
  68          void reserved(void)
  69          {
  70   1      	stall_ep0();				//返回STALL
  71   1      }
  72          
  73          
  74          /**********************************************
  75          ** 函數名稱: void init_unconfig(void)
  76          ** 功能描述: 進入地址狀態,禁止0除外的所有端點
  77          ***********************************************/
  78          void init_unconfig(void)
  79          {
  80   1      	D12_SetEndpointEnable(0);	//禁止0除外的所有端點
  81   1      }
  82          
  83          /**********************************************
  84          ** 函數名稱: void init_config(void)
  85          ** 功能描述: 配置處理,允許端點收發
  86          ***********************************************/
  87          void init_config(void)
  88          {
  89   1      	D12_SetEndpointEnable(1);	//使能普通/同步端點使能
  90   1      }
  91          
  92          
  93          /*********************************************************
  94          ** 函數名稱: void single_transmit(INT8U * buf, INT8U len)
  95          ** 功能描述: 通過端點索引 1 發送數據(DATA 類型)
  96          ** 輸	 入: INT8U * buf:	發送數據指針
  97          			 INT8U len:		發送數據長度
  98          ** 輸	 出: 無
  99          **********************************************************/
 100          void single_transmit(INT8U * buf, INT8U len)
 101          {
 102   1      	if( len <= EP0_PACKET_SIZE) {			//長度小于EP0最大信息包大小才允許發送
 103   2      		D12_WriteEndpoint(1, len, buf);
 104   2      	}
 105   1      }
 106          
 107          /*************************************************************
 108          ** 函數名稱: void code_transmit(INT8U * pRomData, INT16U len)
 109          ** 功能描述: 通過端點索引 1 發送數據(CODE類型)
 110          ** 輸	 入: INT8U  *pRomData:	發送數據指針
 111          			 INT16U len:		發送數據長度
 112          ** 輸	 出: 無
 113          **************************************************************/
 114          void code_transmit(INT8U *pRomData, INT16U len)
 115          {
 116   1      	ControlData.wCount = 0;								//傳輸字節數計數器清0
C51 COMPILER V6.12  CHAP_9                                                                 06/08/2007 20:53:11 PAGE 3   

 117   1      	if(ControlData.wLength > len)
 118   1      		ControlData.wLength = len;						//傳輸數據總字節數不得超過len
 119   1      
 120   1      	ControlData.pData = pRomData;						//傳輸數據指針指向pRomData
 121   1      	if( ControlData.wLength >= EP0_PACKET_SIZE) {		//傳輸數據總字節數大于端點0最大信息包大小
 122   2      		D12_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);	//發送端點0最大信息包大小個字節
 123   2      		ControlData.wCount += EP0_PACKET_SIZE;						//統計已發送字節數
 124   2      
 125   2      		DISABLE();
 126   2      		bEPPflags.bits.control_state = USB_TRANSMIT;				//標志數據發送狀態			
 127   2      		ENABLE();
 128   2      	}
 129   1      	else {
 130   2      		D12_WriteEndpoint(1, ControlData.wLength, pRomData);		//寫入傳輸數據總字節數
 131   2      		ControlData.wCount += ControlData.wLength;					//統計已發送字節數
 132   2      		DISABLE();
 133   2      		bEPPflags.bits.control_state = USB_IDLE;					//標志空閑狀態
 134   2      		ENABLE();
 135   2      	}
 136   1      }
 137          
 138             //*************************************************************************
 139             // USB 標準設備請求服務程序
 140             //*************************************************************************
 141          
 142          /********************************************************************
 143          ** 函數名稱: void get_status(void)
 144          ** 功能描述: 主機要求獲取狀態,設備返回16位的狀態描述給主機
 145          *********************************************************************/
 146          void get_status(void)
 147          {
 148   1      	INT8U endp, txdat[2], c;
 149   1      	INT8U bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;	
 150   1      																//取得設備請求類型	
 151   1      	if (bRecipient == USB_RECIPIENT_DEVICE) {					//對設備請求
 152   2      		if(bEPPflags.bits.remote_wakeup == 1)			
 153   2      			txdat[0] = 3;										//支持遠程喚醒、自供電
 154   2      		else
 155   2      			txdat[0] = 1;										//不支持遠程喚醒、自供電
 156   2      		txdat[1]=0;												//高8位為0
 157   2      		single_transmit(txdat, 2);								//發送16位的狀態到主機
 158   2      		
 159   2      	} else if (bRecipient == USB_RECIPIENT_INTERFACE) {			//對接口請求
 160   2      		txdat[0]=0;
 161   2      		txdat[1]=0;
 162   2      		single_transmit(txdat, 2);	
 163   2      									//發送16位的狀態到主機
 164   2      	} else if (bRecipient == USB_RECIPIENT_ENDPOINT) {			//對端點請求
 165   2      		endp = (INT8U)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 166   2      		if (ControlData.DeviceRequest.wIndex & (INT8U)USB_ENDPOINT_DIRECTION_MASK)
 167   2      			c = D12_SelectEndpoint(endp*2 + 1);					//讀取輸入端點狀態
 168   2      		else
 169   2      			c = D12_SelectEndpoint(endp*2);						//讀取輸出端點狀態
 170   2      		if(c & D12_STALL)
 171   2      			txdat[0] = 1;										//端點禁止
 172   2      		else
 173   2      			txdat[0] = 0;										//端點有效
 174   2      		txdat[1] = 0;
 175   2      		single_transmit(txdat, 2);								//發送16位的狀態到主機
 176   2      
 177   2      	} else
 178   1      		stall_ep0();					//非標準請求,發STALL
C51 COMPILER V6.12  CHAP_9                                                                 06/08/2007 20:53:11 PAGE 4   

 179   1      }
 180          
 181          
 182          /****************************************
 183          ** 函數名稱: void clear_feature(void)
 184          ** 功能描述: 清除特性
 185          *****************************************/
 186          void clear_feature(void)
 187          {
 188   1      	INT8U endp;												//讀取請求類型中的接收方
 189   1      	INT8U bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 190   1      															//讀取請求類型
 191   1      	if (bRecipient == USB_RECIPIENT_DEVICE					//對設備請求
 192   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
 193   2      		DISABLE();								//清除遠程喚醒特性	
 194   2      		bEPPflags.bits.remote_wakeup = 0;					//清0遠程喚醒標志
 195   2      		ENABLE();
 196   2      		single_transmit(0, 0);								//返回一個空的數據表示執行完畢
 197   2      	}
 198   1      	
 199   1      	else if (bRecipient == USB_RECIPIENT_ENDPOINT			//對端點請求
 200   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
 201   2      		//清除端點禁止特性,恢復其使用
 202   2      		endp = (INT8U)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 203   2      		if (ControlData.DeviceRequest.wIndex & (INT8U)USB_ENDPOINT_DIRECTION_MASK)
 204   2      			D12_SetEndpointStatus(endp*2 + 1, 0);			//清除控制輸入端點STALL特性
 205   2      		else
 206   2      			D12_SetEndpointStatus(endp*2, 0);				//清除控制輸出端點STALL特性
 207   2      		single_transmit(0, 0);								//返回一個空的數據表示執行完畢
 208   2      	} else
 209   1      		stall_ep0();					//沒有該請求,返回STALL							
 210   1      }
 211          
 212          
 213          /****************************************
 214          ** 函數名稱: void set_feature(void)
 215          ** 功能描述: 設置特性
 216          *****************************************/
 217          void set_feature(void)
 218          {
 219   1      	INT8U endp;											//讀取請求類型中的接收方
 220   1      	INT8U bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
 221   1      														//讀取請求類型
 222   1      	if (bRecipient == USB_RECIPIENT_DEVICE				//對設備請求
 223   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_REMOTE_WAKEUP) {
 224   2      														//設置遠程喚醒特性
 225   2      		DISABLE();
 226   2      		bEPPflags.bits.remote_wakeup = 1;				//置1遠程喚醒標志
 227   2      		ENABLE();
 228   2      		single_transmit(0, 0);							//返回一個空的數據表示執行完畢
 229   2      	}	
 230   1      	
 231   1      	else if (bRecipient == USB_RECIPIENT_ENDPOINT		//對端點請求
 232   1      		&& ControlData.DeviceRequest.wValue == USB_FEATURE_ENDPOINT_STALL) {
 233   2      		//禁止端點
 234   2      		endp = (INT8U)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
 235   2      		if (ControlData.DeviceRequest.wIndex & (INT8U)USB_ENDPOINT_DIRECTION_MASK)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一卡二卡三卡四卡| 一本到一区二区三区| 国产一区二区三区免费看| 激情另类小说区图片区视频区| 韩国成人精品a∨在线观看| 国产xxx精品视频大全| 成人精品电影在线观看| 91丝袜美女网| 欧美日韩一区视频| 欧美精品一区二区三区一线天视频| 亚洲国产欧美日韩另类综合| 午夜不卡在线视频| 国产精品一区二区x88av| 99在线视频精品| 制服丝袜激情欧洲亚洲| 国产亚洲成av人在线观看导航 | 国产麻豆视频一区| 色呦呦国产精品| 日韩免费在线观看| 国产精品视频九色porn| 午夜影院久久久| 国产精品一二三| 欧美日韩日日摸| 欧美经典一区二区| 婷婷六月综合网| 成人免费av资源| 日韩一区二区三区在线观看 | 成人av在线影院| 欧美日韩成人高清| 国产精品久久一卡二卡| 日韩av一区二区在线影视| 高清成人免费视频| 欧美精品色综合| 国产精品久久久久久妇女6080| 日韩高清中文字幕一区| 91视频xxxx| 久久久美女艺术照精彩视频福利播放| 亚洲精品国产视频| 国产盗摄一区二区| 日韩午夜在线观看视频| 亚洲免费观看在线视频| 国产精品一二二区| 日韩欧美国产综合一区 | 欧美三级蜜桃2在线观看| 久久精品欧美一区二区三区不卡| 日韩欧美一二区| 亚洲国产日韩一区二区| av一区二区三区在线| 亚洲精品在线观看视频| 午夜激情一区二区三区| 91久久精品一区二区三| 国产精品蜜臀在线观看| 国内成人精品2018免费看| 欧美日韩国产一二三| 一区二区三区欧美激情| 成人av午夜影院| 久久嫩草精品久久久精品| 免费成人你懂的| 91精品婷婷国产综合久久性色| 亚洲精品中文字幕在线观看| 成人午夜碰碰视频| 国产偷国产偷亚洲高清人白洁| 美女高潮久久久| 7777精品伊人久久久大香线蕉经典版下载 | 一区二区免费看| 欧美一区二区三区影视| 亚洲综合激情网| 在线观看一区二区视频| 中文字幕字幕中文在线中不卡视频| 国产成人在线影院| 久久久久久久久久久黄色| 久久er99热精品一区二区| 日韩欧美一区二区视频| 蜜桃视频在线一区| 欧美大片免费久久精品三p| 免费观看久久久4p| 日韩欧美在线网站| 久久机这里只有精品| 日韩免费观看2025年上映的电影| 视频一区免费在线观看| 欧美精品免费视频| 日韩国产欧美在线视频| 欧美一区二区三区系列电影| 日韩高清不卡一区| 日韩一区二区三区视频在线观看 | 884aa四虎影成人精品一区| 午夜伊人狠狠久久| 在线播放日韩导航| 秋霞午夜av一区二区三区| 日韩一区二区免费高清| 美女久久久精品| 精品成人一区二区| 国产盗摄一区二区| 亚洲欧洲av色图| 在线观看国产日韩| 亚洲影视在线播放| 3atv一区二区三区| 国内精品免费在线观看| 中文字幕av一区二区三区| 成人手机在线视频| 亚洲精品午夜久久久| 欧美日韩情趣电影| 久久er精品视频| 国产精品色噜噜| 91小视频免费看| 亚洲成年人影院| 欧美成人官网二区| 成人国产精品免费观看视频| 亚洲女与黑人做爰| 717成人午夜免费福利电影| 国产自产v一区二区三区c| 国产精品久久久99| 91精品国产91久久久久久最新毛片 | 在线看一区二区| 午夜伊人狠狠久久| 久久久久久一二三区| 91小视频在线| 美日韩一级片在线观看| 国产欧美日韩麻豆91| 在线精品亚洲一区二区不卡| 免费看欧美女人艹b| 中文字幕av在线一区二区三区| 欧美日韩在线免费视频| 国产一区在线视频| 亚洲成人精品一区二区| 久久久综合九色合综国产精品| 色婷婷综合在线| 韩国一区二区在线观看| 亚洲最色的网站| 久久九九久久九九| 精品视频一区三区九区| 国产成人aaaa| 丝袜美腿亚洲综合| 国产精品污污网站在线观看| 欧美裸体bbwbbwbbw| 丰满亚洲少妇av| 男男gaygay亚洲| 亚洲欧美偷拍另类a∨色屁股| 精品三级av在线| 91福利在线播放| 国产福利一区在线| 免费精品视频在线| 亚洲精选免费视频| 国产精品欧美久久久久一区二区| 91精品国产综合久久婷婷香蕉| 亚洲美女一区二区三区| 亚洲精品一区二区三区99| 色哦色哦哦色天天综合| 国产精品一二二区| 麻豆精品视频在线| 亚洲成人黄色小说| 成人欧美一区二区三区黑人麻豆 | 激情图片小说一区| 三级久久三级久久久| 亚洲天堂中文字幕| 久久久亚洲精品一区二区三区| 美日韩一区二区三区| 亚洲成人激情av| 亚洲男同性恋视频| 欧美激情一区二区三区在线| 精品入口麻豆88视频| 这里只有精品99re| 欧美性猛交xxxx黑人交 | 亚洲一级不卡视频| 亚洲色图欧美激情| 国产日产欧产精品推荐色 | 久久精品国产网站| 午夜av一区二区三区| 亚洲乱码中文字幕| 国产精品久久免费看| 国产校园另类小说区| 欧美成人激情免费网| 日韩视频一区二区| 欧美一区二区三区成人| 欧美日韩一区二区三区四区| 在线免费视频一区二区| 91久久人澡人人添人人爽欧美| 本田岬高潮一区二区三区| 国产精品亚洲视频| 国产成人综合网站| 国产精品1024| 国产白丝网站精品污在线入口| 国产寡妇亲子伦一区二区| 激情小说亚洲一区| 国产在线看一区| 国产一区福利在线| 欧美日韩黄色一区二区| 欧美日韩欧美一区二区| 欧美三级日韩在线| 欧美人牲a欧美精品| 欧美日本免费一区二区三区| 91精品啪在线观看国产60岁| 欧美日本一区二区三区四区| 欧美一区二区在线看| 日韩视频一区二区三区在线播放| 欧美成人乱码一区二区三区| 欧美成人精品二区三区99精品| 久久美女高清视频| 中文字幕免费不卡| 成人免费在线视频观看|