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

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

?? sl811.lst

?? sl811usb芯片與51的文件系統
?? LST
?? 第 1 頁 / 共 3 頁
字號:
C51 COMPILER V6.20c  SL811                                                                 08/21/2003 22:51:04 PAGE 1   


C51 COMPILER V6.20c, COMPILATION OF MODULE SL811
OBJECT MODULE PLACED IN SL811.OBJ
COMPILER INVOKED BY: E:\WIN98\HARDWARE\KEILC\C51\BIN\C51.EXE SL811.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "common.h"
   2          #include "SL811.H"
   3          #include "HAL.H"
   4          #include "HPI.H"
   5          
   6          extern XXGFLAGS bdata bXXGFlags;
   7          
   8          XXGPKG usbstack;
   9          unsigned char remainder;
  10          extern UART_CMD_BLOCK xdata UartCmdBlock;
  11          extern UART_RSP_BLOCK xdata UartRspBlock;
  12          unsigned char xdata DBUF[BUFFER_LENGTH];
  13          extern unsigned char xdata UARTBUF[UARTBUF_LENGTH];
  14          pUSBDEV  idata	uDev;	// Multiple USB devices attributes, Max 5 devices
  15          
  16          code unsigned char cmd_test_createfile[]=
  17          	{0x07,
  18          	 0x54,0x45,0x53,0x54,0x20,0x20,0x20,0x20,
  19          	 0x44,0x41,0x54,0x20,0x20,0x75,0xcd,0xb4,
  20          	 0xe2,0x2e,0xe2,0x20,0x20,0xce,0xb4,0xe2,
  21          	 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  22          	 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  23          	 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  24          	 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  25          	 0x20,0x20,0x20,0x20,0x20,0x20,0x20
  26          	 };
  27          code unsigned char cmd_test_writefile[]=
  28          	{
  29          	0x09,
  30          	0x00,
  31          	0x00,0x70,
  32          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  33          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  34          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  35          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  36          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  37          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
  38          	0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20
  39          	};
  40          //*****************************************************************************************
  41          // SL811H variables initialization
  42          //*****************************************************************************************
  43          unsigned char SL811_GetRev(void)
  44          {
  45   1      	//SL811Write(SL811_ADDR_PORT, 0x0e);
  46   1      	return SL811Read(0x0e);
  47   1      }
  48          
  49          void USBReset(void)
  50          {
  51   1      	unsigned char temp;
  52   1          	temp=SL811Read(CtrlReg);   
  53   1       	SL811Write(CtrlReg,temp|0x08);
  54   1      	DelayMs(25);		
  55   1      	 	
C51 COMPILER V6.20c  SL811                                                                 08/21/2003 22:51:04 PAGE 2   

  56   1          	SL811Write(CtrlReg,temp);    
  57   1      }
  58          
  59          //*****************************************************************************************
  60          // usbXfer:
  61          // successful transfer = return TRUE
  62          // fail transfer = return FALSE
  63          //*****************************************************************************************
  64          unsigned char usbXfer(void)
  65          {  
  66   1      	
  67   1      	unsigned char	xferLen, data0, data1,cmd;
  68   1      	unsigned char intr,result,remainder,dataX,bufLen,addr,timeout;
  69   1      	
  70   1      	//------------------------------------------------
  71   1      	// Default setting for usb trasnfer
  72   1      	//------------------------------------------------
  73   1      	dataX=timeout=0;
  74   1      	//result 	  = SL811Read(EP0Status);	
  75   1      	data0 = EP0_Buf;					// DATA0 buffer address
  76   1      	data1 = data0 + (unsigned char)usbstack.wPayload;	// DATA1 buffer address
  77   1      	bXXGFlags.bits.DATA_STOP=FALSE;
  78   1      	bXXGFlags.bits.TIMEOUT_ERR=FALSE;
  79   1      	//------------------------------------------------
  80   1      	// Define data transfer payload
  81   1      	//------------------------------------------------
  82   1      	if (usbstack.wLen >= usbstack.wPayload)  		// select proper data payload
  83   1      		xferLen = usbstack.wPayload;			// limit to wPayload size 
  84   1      	else							// else take < payload len
  85   1      		xferLen = usbstack.wLen;			//	
  86   1      	
  87   1      	// For IN token
  88   1      	if (usbstack.pid==PID_IN)				// for current IN tokens
  89   1      	{												//
  90   2      		cmd = sDATA0_RD;			// FS/FS on Hub, sync to sof
  91   2      	}
  92   1      	// For OUT token
  93   1      	else if(usbstack.pid==PID_OUT)				// for OUT tokens
  94   1      	{  	
  95   2      		if(xferLen)									// only when there are	
  96   2      			{
  97   3      			//intr=usbstack.setup.wLength;
  98   3      			//usbstack.setup.wLength=WordSwap(usbstack.setup.wLength);
  99   3      			SL811BufWrite(data0,usbstack.buffer,xferLen); 	// data to transfer on USB
 100   3      			//usbstack.setup.wLength=intr;
 101   3      			}
 102   2      		cmd = sDATA0_WR;
 103   2      								// FS/FS on Hub, sync to sof
 104   2      	// implement data toggle
 105   2      		bXXGFlags.bits.bData1 = uDev.bData1[usbstack.endpoint];
 106   2              	uDev.bData1[usbstack.endpoint] = (uDev.bData1[usbstack.endpoint] ? 0 : 1); // DataToggle
 107   2      		
 108   2      		if(bXXGFlags.bits.bData1)
 109   2                		cmd |= 0x40;                              // Set Data1 bit in command
 110   2                	
 111   2      	}
 112   1      	// For SETUP/OUT token
 113   1      	else											// for current SETUP/OUT tokens
 114   1      	{  	
 115   2      		if(xferLen)									// only when there are	
 116   2      			{
 117   3      			intr=usbstack.setup.wLength;
C51 COMPILER V6.20c  SL811                                                                 08/21/2003 22:51:04 PAGE 3   

 118   3      			usbstack.setup.wValue=WordSwap(usbstack.setup.wValue);
 119   3      			usbstack.setup.wIndex=WordSwap(usbstack.setup.wIndex);
 120   3      			usbstack.setup.wLength=WordSwap(usbstack.setup.wLength);
 121   3      			SL811BufWrite(data0,(unsigned char *)&usbstack.setup,xferLen); 	// data to transfer on USB
 122   3      			usbstack.setup.wLength=intr;
 123   3      			}
 124   2      		cmd = sDATA0_WR;						// FS/FS on Hub, sync to sof
 125   2      	}
 126   1      	//------------------------------------------------
 127   1      	// For EP0's IN/OUT token data, start with DATA1
 128   1      	// Control Endpoint0's status stage.
 129   1      	// For data endpoint, IN/OUT data, start ????
 130   1      	//------------------------------------------------
 131   1      	if (usbstack.endpoint == 0 && usbstack.pid != PID_SETUP) 	// for Ep0's IN/OUT token
 132   1      		cmd |= 0x40; 					// always set DATA1
 133   1      	//------------------------------------------------
 134   1      	// Arming of USB data transfer for the first pkt
 135   1      	//------------------------------------------------
 136   1      	SL811Write(EP0Status,((usbstack.endpoint&0x0F)|usbstack.pid));	// PID + EP address
 137   1      	SL811Write(EP0Counter,usbstack.usbaddr);			// USB address
 138   1      	SL811Write(EP0Address,data0);					// buffer address, start with "data0"
 139   1      	SL811Write(EP0XferLen,xferLen);					// data transfer length
 140   1      	SL811Write(IntStatus,INT_CLEAR); 				// clear interrupt status
 141   1      	SL811Write(EP0Control,cmd);					// Enable ARM and USB transfer start here
 142   1      	
 143   1      	//------------------------------------------------
 144   1      	// Main loop for completing a wLen data trasnfer
 145   1      	//------------------------------------------------
 146   1      	while(TRUE)
 147   1      	{   
 148   2      		//---------------Wait for done interrupt------------------
 149   2      		while(TRUE)												// always ensure requested device is
 150   2      		{														// inserted at all time, then you will
 151   3      			//intr=SL811Read(cSOFcnt);
 152   3      			//intr=SL811Read(IntEna);
 153   3      			intr = SL811Read(IntStatus);	
 154   3      								// wait for interrupt to be done, and 
 155   3      			if((intr & USB_RESET) || (intr & INSERT_REMOVE))	// proceed to parse result from slave 
 156   3      			{													// device.
 157   4      				bXXGFlags.bits.DATA_STOP = TRUE;								// if device is removed, set DATA_STOP
 158   4      				return FALSE;									// flag true, so that main loop will 
 159   4      			}													// know this condition and exit gracefully
 160   3      			if(intr & USB_A_DONE)								
 161   3      				break;											// interrupt done !!!
 162   3      		}
 163   2      
 164   2      		SL811Write(IntStatus,INT_CLEAR); 						// clear interrupt status
 165   2      		result 	  = SL811Read(EP0Status);						// read EP0status register
 166   2      		remainder = SL811Read(EP0Counter);						// remainder value in last pkt xfer
 167   2      		//while
 168   2      		//-------------------------ACK----------------------------
 169   2      		if (result & EP0_ACK)									// Transmission ACK
 170   2      		{	
 171   3      
 172   3      			// SETUP TOKEN
 173   3      			if(usbstack.pid == PID_SETUP)								// do nothing for SETUP/OUT token 
 174   3      				break;											// exit while(1) immediately
 175   3      
 176   3      			// OUT TOKEN				
 177   3      			else if(usbstack.pid == PID_OUT)
 178   3      			{
 179   4      				usbstack.wLen  -= (WORD)xferLen;
C51 COMPILER V6.20c  SL811                                                                 08/21/2003 22:51:04 PAGE 4   

 180   4      				usbstack.buffer += xferLen;
 181   4      				//cmd ^=0x40;
 182   4      				//dataX++;
 183   4      				
 184   4      				if(!usbstack.wLen)
 185   4      					break;
 186   4      				////////////////////////////////////
 187   4      				if (usbstack.wLen >= usbstack.wPayload)  		// select proper data payload
 188   4      					xferLen = usbstack.wPayload;			// limit to wPayload size 
 189   4      				else							// else take < payload len
 190   4      					xferLen = usbstack.wLen;	
 191   4      				
 192   4      				////////////////////////////////////
 193   4      				//if(bufLen)										
 194   4      				{	
 195   5      					//addr    = (dataX & 1) ? data1:data0; 
 196   5      					addr=data0;
 197   5      					
 198   5      					SL811BufWrite(addr,usbstack.buffer,xferLen);
 199   5      					
 200   5      					cmd = sDATA0_WR;
 201   5      					bXXGFlags.bits.bData1 = uDev.bData1[usbstack.endpoint];
 202   5              				uDev.bData1[usbstack.endpoint] = (uDev.bData1[usbstack.endpoint] ? 0 : 1); // DataToggle
 203   5      		
 204   5      					if(bXXGFlags.bits.bData1)
 205   5                					cmd |= 0x40;    
 206   5      								// always sync SOF when FS, regardless 
 207   5      					SL811Write(EP0XferLen, xferLen); 		// select next xfer length
 208   5      					SL811Write(EP0Address, addr);           	// data buffer addr 
 209   5      					SL811Write(IntStatus,INT_CLEAR);		// is a LS is on Hub.
 210   5      					SL811Write(EP0Control,cmd);			// Enable USB transfer and re-arm
 211   5      				}	
 212   4      				
 213   4      			} //PID OUT
 214   3      			// IN TOKEN
 215   3      			else if(usbstack.pid == PID_IN)
 216   3      			{													// for IN token only
 217   4      				usbstack.wLen  -= (WORD)xferLen;	// update remainding wLen value
 218   4      				cmd   ^= 0x40;    			// toggle DATA0/DATA1
 219   4      				dataX++;				// point to next dataX
 220   4      
 221   4      				//------------------------------------------------	
 222   4      				// If host requested for more data than the slave 
 223   4      				// have, and if the slave's data len is a multiple
 224   4      				// of its endpoint payload size/last xferLen. Do 
 225   4      				// not overwrite data in previous buffer.
 226   4      				//------------------------------------------------	
 227   4      				if(remainder==xferLen)			// empty data detected
 228   4      					bufLen = 0;			// do not overwriten previous data
 229   4      				else					// reset bufLen to zero
 230   4      					bufLen = xferLen;		// update previous buffer length
 231   4      				
 232   4      				//------------------------------------------------	
 233   4      				// Arm for next data transfer when requested data 
 234   4      				// length have not reach zero, i.e. wLen!=0, and
 235   4      				// last xferlen of data was completed, i.e.
 236   4      				// remainder is equal to zero, not a short pkt
 237   4      				//------------------------------------------------	
 238   4      				if(!remainder && usbstack.wLen)							// remainder==0 when last xferLen
 239   4      				{												// was all completed or wLen!=0
 240   5      					addr    = (dataX & 1) ? data1:data0; 		// select next address for data
 241   5      					xferLen = (BYTE)(usbstack.wLen>=usbstack.wPayload) ? usbstack.wPayload:usbstack.wLen;	// get data len
C51 COMPILER V6.20c  SL811                                                                 08/21/2003 22:51:04 PAGE 5   

             -gth required
 242   5      					//if (FULL_SPEED)								// sync with SOF transfer
 243   5      					cmd |= 0x20;					// always sync SOF when FS, regardless 
 244   5      					SL811Write(EP0XferLen, xferLen); 		// select next xfer length

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区二区免费在线观看视频| 日韩欧美国产小视频| 欧美成人aa大片| 亚洲视频 欧洲视频| 久久99久久精品| 精品婷婷伊人一区三区三| 国产欧美日韩中文久久| 日本成人在线视频网站| 94色蜜桃网一区二区三区| 久久精品男人天堂av| 日本在线不卡一区| 91黄视频在线观看| 国产精品久久久久久妇女6080 | 亚洲激情欧美激情| 国产**成人网毛片九色 | 中文字幕国产一区二区| 精品一区二区综合| 91精品国产综合久久久蜜臀粉嫩| 一片黄亚洲嫩模| av一区二区三区四区| 中文天堂在线一区| 成人亚洲一区二区一| 久久精品亚洲乱码伦伦中文| 毛片一区二区三区| 欧美一级午夜免费电影| 亚洲国产精品久久久久婷婷884 | 91丨九色丨国产丨porny| 国产亚洲精品bt天堂精选| 久久99精品久久久久| 日韩午夜激情视频| 日本美女一区二区三区| 宅男在线国产精品| 青草av.久久免费一区| 69堂亚洲精品首页| 日韩国产精品久久久久久亚洲| 欧美探花视频资源| 午夜影视日本亚洲欧洲精品| 欧美一a一片一级一片| 亚洲综合色噜噜狠狠| 91视视频在线观看入口直接观看www | 91麻豆精品国产综合久久久久久| 亚洲成av人片在线| 欧美日韩一区二区在线观看视频| 亚洲一区中文日韩| 欧美日韩激情一区二区三区| 亚洲成av人片在线观看| 欧美日韩精品福利| 免费高清不卡av| 精品国产免费一区二区三区香蕉 | 亚洲一区二区三区自拍| 欧美视频一区在线| 天堂av在线一区| 日韩一区二区三区视频在线| 美女视频黄 久久| 久久亚洲精品小早川怜子| 国产不卡视频在线观看| 国产精品萝li| 91精品办公室少妇高潮对白| 丝袜亚洲另类欧美| 日韩久久精品一区| 国产成人在线视频免费播放| 国产精品久久久久影院亚瑟| 91尤物视频在线观看| 一区二区三区毛片| 欧美一区在线视频| 韩国av一区二区三区在线观看| 久久久99久久| 99久久精品国产网站| 亚洲自拍偷拍麻豆| 日韩区在线观看| 国产成a人亚洲精| 亚洲天堂成人网| 911精品国产一区二区在线| 免费观看一级特黄欧美大片| 中文字幕成人网| 欧美性一级生活| 久久精品国产免费| 中文字幕一区二区三区乱码在线| 欧美亚洲图片小说| 久久99精品久久久久久久久久久久| 中文字幕不卡在线观看| 欧美日韩激情一区| 国产精品一区二区在线观看不卡| 亚洲欧洲日本在线| 91精品国产综合久久小美女| 国产成人亚洲综合色影视| 亚洲一区二区精品视频| 久久综合狠狠综合久久综合88| 91色视频在线| 麻豆精品久久久| 亚洲乱码国产乱码精品精98午夜 | 精品免费一区二区三区| av在线播放成人| 另类成人小视频在线| 亚洲美女偷拍久久| 欧美va亚洲va在线观看蝴蝶网| 成人国产精品视频| 日韩国产欧美一区二区三区| 亚洲欧洲国产日韩| 日韩欧美成人午夜| 色婷婷av一区二区三区软件| 激情综合色综合久久| 亚洲综合色区另类av| 国产欧美日韩另类视频免费观看| 欧美日韩国产系列| 成人不卡免费av| 久久狠狠亚洲综合| 艳妇臀荡乳欲伦亚洲一区| 337p日本欧洲亚洲大胆精品| 在线观看国产日韩| 国产91丝袜在线观看| 日韩激情一区二区| 亚洲人妖av一区二区| 精品国产欧美一区二区| 欧美理论在线播放| 一本大道av一区二区在线播放| 国产呦精品一区二区三区网站| 亚洲午夜久久久久久久久电影网| 中文字幕欧美三区| 日韩免费观看高清完整版| 在线欧美日韩国产| 成人短视频下载| 国产综合色精品一区二区三区| 亚洲第一在线综合网站| 亚洲三级久久久| 国产精品天美传媒| 久久亚洲二区三区| 日韩美女视频一区二区在线观看| 欧美日韩二区三区| 色就色 综合激情| av电影在线观看一区| 懂色av一区二区三区蜜臀| 激情图片小说一区| 久久国产三级精品| 日韩电影在线观看电影| 亚洲成人自拍网| 一个色在线综合| 亚洲精品videosex极品| 亚洲欧洲一区二区在线播放| 久久精品日产第一区二区三区高清版| 日韩欧美中文字幕制服| 91精品国产综合久久精品性色 | 国产精品99久| 韩国一区二区视频| 老司机一区二区| 久久99精品久久久久久动态图| 日本vs亚洲vs韩国一区三区| 日韩精品成人一区二区在线| 偷拍与自拍一区| 一区二区三区四区在线| 亚洲免费观看在线视频| 亚洲欧美国产毛片在线| 亚洲图片你懂的| 亚洲品质自拍视频| 亚洲一区二区免费视频| 午夜电影网亚洲视频| 午夜精品成人在线视频| 日韩av不卡一区二区| 日本va欧美va欧美va精品| 男女男精品视频网| 久久精品久久99精品久久| 久久99精品久久久久久国产越南 | 国内精品伊人久久久久影院对白| 免费的国产精品| 国内精品在线播放| 国产成人av福利| 99久久婷婷国产精品综合| 99久久国产综合精品女不卡| 91免费看视频| 91久久精品一区二区| 欧美少妇xxx| 91精品婷婷国产综合久久竹菊| 制服丝袜亚洲播放| 2021国产精品久久精品| 国产亚洲欧美色| 亚洲欧美综合网| 亚洲一区二区三区激情| 奇米在线7777在线精品 | 亚洲高清免费视频| 青青草一区二区三区| 国产美女av一区二区三区| 成人中文字幕合集| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 亚洲va韩国va欧美va精品| 青青草国产精品亚洲专区无| 国产精品69毛片高清亚洲| 99久久综合色| 欧美裸体一区二区三区| 26uuu精品一区二区在线观看| 国产精品热久久久久夜色精品三区| 亚洲色图清纯唯美| 日韩av网站在线观看| 国产精品88av| 欧日韩精品视频| 日韩一区二区精品在线观看| 国产丝袜欧美中文另类| 亚洲精品日韩专区silk| 男女男精品视频| av一二三不卡影片| 制服丝袜成人动漫|