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

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

?? sl811.lst

?? SL811開發資料_包含源程序_電路圖_芯片資料
?? 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一区二区三区免费野_久草精品视频
精品久久久久久无| 一区二区三区影院| 一区二区免费在线播放| 卡一卡二国产精品| 91极品视觉盛宴| 久久综合999| 免费成人美女在线观看.| 一本到高清视频免费精品| 精品福利av导航| 日本欧美一区二区三区乱码| 91视频.com| 日韩精品亚洲专区| 成年人网站91| 中日韩免费视频中文字幕| 六月丁香婷婷色狠狠久久| 欧美在线免费视屏| 亚洲美女屁股眼交| 99久久久精品| 中文字幕av一区 二区| 国产综合久久久久影院| 91精品国产综合久久久蜜臀粉嫩| 亚洲精品水蜜桃| 99精品黄色片免费大全| 国产精品私房写真福利视频| 久久99国产乱子伦精品免费| 欧美一区日本一区韩国一区| 午夜日韩在线观看| 欧美体内she精高潮| 亚洲韩国一区二区三区| 91免费视频网| 一区二区三区日韩欧美| 91美女在线看| 亚洲精品日日夜夜| 欧美性猛交xxxx黑人交| 亚洲自拍都市欧美小说| 在线观看一区不卡| 婷婷久久综合九色国产成人 | 欧美高清dvd| 日韩在线一区二区三区| 日韩一区二区视频| 蜜臀精品一区二区三区在线观看| 欧美成人激情免费网| 美女诱惑一区二区| 国产亚洲欧美日韩在线一区| 国产福利一区在线| 中文字幕一区二区三区色视频 | 激情综合色丁香一区二区| 日韩一区二区在线看| 激情五月激情综合网| 国产精品天美传媒| 91久久精品午夜一区二区| 三级久久三级久久| 久久中文娱乐网| 9i看片成人免费高清| 亚洲一区二区三区中文字幕在线| 欧美伦理影视网| 国产不卡在线播放| 亚洲一区二区三区四区在线观看 | 在线看国产一区二区| 午夜视频一区二区三区| 久久免费看少妇高潮| 一本久久精品一区二区| 蜜桃视频在线观看一区| 欧美激情在线免费观看| 欧美日韩午夜在线视频| 国模娜娜一区二区三区| 一区二区三区中文字幕精品精品 | 欧美日韩国产高清一区二区三区| 秋霞午夜av一区二区三区| 国产婷婷色一区二区三区在线| 91视频xxxx| 国产一区二区三区综合| 亚洲专区一二三| 久久精品男人的天堂| 欧美色综合影院| 粉嫩绯色av一区二区在线观看| 亚洲国产欧美在线| 国产欧美一区二区精品性| 欧美午夜精品一区| 粉嫩欧美一区二区三区高清影视| 丝袜美腿亚洲色图| 国产精品传媒视频| 欧美精品一区在线观看| 777欧美精品| 色妹子一区二区| 国产91色综合久久免费分享| 日本在线不卡一区| 亚洲精品大片www| 亚洲国产成人午夜在线一区 | 最新国产成人在线观看| 精品久久免费看| 91精品国产综合久久久久久漫画 | 中文字幕第一区综合| 欧美一区在线视频| 欧美性猛交xxxx乱大交退制版| 成人一区在线观看| 国产成人精品亚洲777人妖| 精品一区二区三区免费毛片爱| 性久久久久久久久久久久| 亚洲人成小说网站色在线| 国产视频一区在线播放| 久久日一线二线三线suv| 91精品国产高清一区二区三区蜜臀| 成人黄色av电影| 成人午夜视频在线| 成人不卡免费av| av电影天堂一区二区在线| 成+人+亚洲+综合天堂| 国产不卡免费视频| 国产激情一区二区三区| 福利一区二区在线| 成人高清视频免费观看| 波多野结衣一区二区三区| 成人污视频在线观看| 成人午夜免费电影| 91一区在线观看| 色婷婷精品大在线视频| 在线视频你懂得一区| 欧美亚洲日本国产| 欧美日韩成人在线| 日韩欧美色综合网站| 欧美r级在线观看| 国产亚洲成aⅴ人片在线观看| 久久久久久久国产精品影院| 国产日韩欧美电影| 亚洲美女少妇撒尿| 首页国产欧美久久| 精品一区二区在线免费观看| 黄色日韩三级电影| av在线播放一区二区三区| 色999日韩国产欧美一区二区| 91成人在线免费观看| 欧美精品xxxxbbbb| 欧美成人午夜电影| 18成人在线观看| 偷拍与自拍一区| 韩国欧美一区二区| 99久久久久久99| 91精品国产综合久久香蕉麻豆| 欧美哺乳videos| 日韩一区在线播放| 丝袜亚洲精品中文字幕一区| 激情久久五月天| 色av一区二区| 精品久久久久av影院| 国产精品灌醉下药二区| 日日摸夜夜添夜夜添国产精品| 狠狠网亚洲精品| 在线观看av一区| 久久综合九色综合欧美98| 亚洲欧美一区二区三区极速播放 | 免费xxxx性欧美18vr| 国产99久久久国产精品潘金 | 欧美mv日韩mv| 亚洲女爱视频在线| 国内精品不卡在线| 欧美日韩mp4| 中文字幕一区二区三区在线播放| 日产国产欧美视频一区精品| caoporm超碰国产精品| 欧美岛国在线观看| 一个色在线综合| 成人aa视频在线观看| 欧美一卡2卡三卡4卡5免费| 国产精品久久久久一区| 蜜桃视频第一区免费观看| av不卡免费电影| 26uuuu精品一区二区| 午夜影视日本亚洲欧洲精品| 99精品欧美一区二区蜜桃免费| 欧美电影免费观看高清完整版在线 | 国产精品三级视频| 日本vs亚洲vs韩国一区三区二区| 99国产精品99久久久久久| 国产午夜精品理论片a级大结局| 偷拍自拍另类欧美| 在线观看日韩一区| 国产精品短视频| 成人国产精品免费观看| 国产亚洲美州欧州综合国| 精品无码三级在线观看视频| 91麻豆精品国产91| 亚洲成人一区二区| 欧美日韩综合色| 亚洲综合丝袜美腿| 在线看国产一区二区| 国产精品国产三级国产三级人妇 | 91香蕉视频污| 欧美激情综合五月色丁香| 国产精品一区三区| 久久精品人人做人人爽人人| 国产专区综合网| 久久人人97超碰com| 国产一区二区三区四| 2020国产精品自拍| 国产精品一品二品| 国产精品乱码久久久久久| 精品亚洲成a人在线观看| 日韩欧美一区二区免费| 麻豆国产欧美一区二区三区|