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

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

?? rtl8019.c

?? 一個很好的例程
?? C
?? 第 1 頁 / 共 2 頁
字號:
    					{//檢查CR寄存器的txp位是否為低,為1說明正在發送,為0說明發完或出錯放棄
        					if((Reg00&0x04)==0)  
        						{ break; }
        				}
					if((Reg04&0x01)!=0)//表示發送成功,判斷發送狀態寄存器TSR,決定是否出錯
						{break;};
					Reg00=0x3e;
				}
			delay(1);
			Reg07=0xff;
			if(TxBufFlag)
				{
  					Reg04=0x40;   //txd packet start;
  				}
			else
				{
     				Reg04=0x46;  //txd packet start;
    			}
    		delay(1);	
			Reg06=length>>8;  //high byte counter
			delay(1);
			Reg05=length&0xff;//low byte counter
			delay(1);
			Reg07=0xff;
			delay(1);
			Reg00=0x3e;       //to sendpacket;
	}

/**********************************************************************
**函數原型:    Uint16        Rec_NewPacket()
**入口參數:		無
**出口參數:		無
**返 回 值:	0          沒有新數據包
**              1          接收到新數據包
**說    明:	查詢是否有新數據包并接收進緩沖區
************************************************************************/
Uint16	RecFrame()
		{
			Uint16	i,ii;
			Uint16	Temp,length;
			union{
					Uint16	total;	
					struct{
							Uint16	high:8;
							Uint16	low:8;
						  }e;
				 }d;
			for(i=0;i<1518/2;i++)	RxNetBuf[i] = 0;				 		  		
			page(0);
			delay(10);
			bnry = Reg03;				//bnry page have read 讀頁指針
			bnry = bnry & 0x00FF;
			page(1);
			delay(10);
			curr = Reg07;				//curr writepoint 8019寫頁指針
			curr = curr & 0x00FF;
			page(0);
			delay(10);
			if((curr==0))return(0);	//讀的過程出錯
			bnry++;
			if(bnry>0x7f)	bnry=0x4c;
			if(bnry!=curr)			//此時表示有新的數據包在緩沖區里
    			{					//在任何操作都最好返回page0
     				page(0);
     				delay(10);
     //=======================================
     				Reg09=bnry;		//讀頁地址的高字節
     				delay(5);
     				Reg08=0x00; 	//讀頁地址的低字節
     				delay(5);
     				Reg0b=0x00;		//讀取字節計數高字節
     				delay(5);
     				Reg0a=18;       //讀取字節計數高字節
     				delay(5);
     				Reg00=0x0a;     //啟動Remote DMA讀操作
	 				delay(5);	
     				for(i=0;i<9;i++)	//讀取一包的前18個字節:4字節的8019頭部,6字節目的地址,6字節原地址,2字節協議
                    	{
                       		RxNetBuf[i]=Reg10;
                       		delay(1);
                      	}
 //=======================================中止DMA操作
     				Reg0b=0x00;	//
     				delay(1);
     				Reg0a=0x00;	//
     				delay(1);
     				Reg00=0x22;	//結束或放棄DMA操作
     				delay(1);
 //=======================================
					
					d.total = RxNetBuf[0];
					length = RxNetBuf[1];
     				if(((d.e.low & 0x01)==0)||(d.e.high > 0x7f) || (d.e.high < 0x4c)||( length > 1517))
    					{//接收狀態錯誤或下一數據包的起始頁地址錯誤或接收的數據包長度>1500字節
       						page(1);
       						delay(10);
							curr=Reg07; 	//page1
							page(0);		//切換回page0
							delay(10);
        					bnry = curr -1;
        					if(bnry < 0x4c) 	bnry =0x7f;
        					Reg03=bnry; 	//write to bnry     
        					delay(1);
        					Reg07=0xff;
							return(0);
              			}
//=============================================
            
     				else//表示數據包是完好的.讀取剩下的數據
     					{
     						Temp = SwapByte(RxNetBuf[8]);		
        					if((Temp == IP_FRAME)||(Temp == ARP_FRAME))
								{ //協議為IP或ARP才接收
                					Reg09 = bnry;   				//read page address high
                					delay(1);
                					Reg08 = 4;      				//read page address low
                					delay(1);
                					Reg0b = length>>8;  //read count high
                					delay(1);
                					Reg0a = length & 0xff;//read count low;
                					delay(1);
                					Reg00=0x0a;                             //read dma
                					delay(1);
						        	length=(length+1)/2;
                					for(ii=2;ii<length+2;ii++)
                						{
                							RxNetBuf[ii]=Reg10;
                						}
                        			//================終止DMA操作
                        			Reg0b=0x00;			//read count high  
                        			delay(1); 
                        			Reg0a=0x00;			//read count low;
                        			delay(1);
                        			Reg00=0x22;			//結束或放棄DMA
                        			delay(1);
                        			//============================
                        		}
                        		//=========================================
                        	d.total = RxNetBuf[0];
                        	bnry = d.e.high - 1;	
                			if(bnry<0x4c)	bnry=0x7f;
                			page(0);
                			delay(10);
	        				Reg03=bnry;      //write to bnry
	        				delay(1);
                			Reg07=0xff;
                			return(1);   //have new packet
               			}
   				}
			else	
				return(0);
		}



//============================================================
void	LoadEnetHrd(Uint16	MAC_type,Uint16	PROTO_type)
		{       
       		if(MAC_type==0)              		//添加目的MAC地址
         		memcpy(TxNetBuf,&MAC_server,3);
       		else if(MAC_type==BroadCast)
         		memcpy(TxNetBuf,&MAC_broad,3);
       		else if(MAC_type==RequestArp)
         		memcpy(TxNetBuf,&MAC_broad,3);
         	else if(MAC_type==AnswerArp)
         		memcpy(TxNetBuf,&MAC_rec,3);	
       		else if(MAC_type==Nod)
         		memcpy(TxNetBuf,&MAC_nod,3);
         
       		memcpy(TxNetBuf+3,&MAC_self,3);   //添加源MAC地址

       		if(PROTO_type==UDP)          	  //協議類型
         		*(TxNetBuf+6)=8+(0<<8);   
       		else if(PROTO_type==ARP)
         		*(TxNetBuf+6)=8+(6<<8);   
       		else if(PROTO_type==LSS)          //協議類型
         		*(TxNetBuf+6)=8+(8<<8);   
		}
			
void	LoadArp(struct	ipaddr	*ip,Uint16	type)
		{
			struct 	arp  arp1;
         	arp1.hard_type  = (Uint16)1<<8;
         	arp1.proto_type = (Uint16)((2048<<8)+(2048>>8));
         	arp1.proto_hard_length = 6;
         	arp1.proto_hard_length += (Uint16)4<<8;
         
         	arp1.send_macaddr =MAC_self;
         	arp1.send_ipaddr  =nod_ipaddr;

			if (type==RequestArp)
				{
		           	arp1.op_code = 0x01<<8;
   					arp1.rec_macaddr.addr2_1  =0;
		   			arp1.rec_macaddr.addr4_3  =0;
   					arp1.rec_macaddr.addr6_5  =0;
         		}
         	else{
         			arp1.op_code = 0x02<<8;
		   			arp1.rec_macaddr =MAC_rec; 			
         		}	
         	arp1.rec_ipaddr   =*ip;         
         	memcpy(TxNetBuf+7,&arp1,sizeof(arp1));
		
		}
		
void	LoadIp(struct	ipaddr	*ip,Uint16	protocal)
		{
			struct	iphdr	tip;
    		tip.tos_version = 0x45;
    		tip.tos_version += (Uint16)0<<8;      //usally not use
    		tip.id =20;  //++IP_id;
    		tip.id +=(Uint16)52<<8;
    
    		tip.frag_off =0;
    		tip.protocal_ttl   =128;       //usally 32 or 64
    		tip.saddr =nod_ipaddr;
    		tip.daddr = *ip;
			if	(protocal==TCP)
  		  		t_iphdr.protocal_ttl +=(Uint16)6<<8;
  		  	else if (protocal==UDP)
  		  		t_iphdr.protocal_ttl +=(Uint16)17<<8;	
			else if (protocal==ICMP)
	    		t_iphdr.protocal_ttl +=(Uint16)1<<8;
			else if (protocal==IGMP)
	    		t_iphdr.protocal_ttl +=(Uint16)2<<8;
         	memcpy(TxNetBuf+7,&tip,sizeof(tip));	    		
		}
		
				
void	ArpRequest(struct	ipaddr *ip)
		{
			LoadEnetHrd(RequestArp,ARP);         	
			LoadArp(ip,RequestArp);
         	SendFrame(TxNetBuf,30);
		}

void	ArpAnswer(struct	ipaddr *ip)
		{
			LoadEnetHrd(AnswerArp,ARP);         	
			LoadArp(ip,AnswerArp);
         	SendFrame(TxNetBuf,30);
		}

Uint16	SwapByte(Uint16	value)
		{
    		Uint16	temp;
    		temp=(value<<8)|(value>>8);
    		return(temp);
		}								

		
//======================= END ===============================

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品国产三级国产普通话99 | 久久精品夜夜夜夜久久| 色综合久久久久网| 国产美女精品人人做人人爽| 图片区小说区区亚洲影院| 亚洲人成网站影音先锋播放| 国产午夜精品一区二区三区嫩草| 日韩免费高清视频| 日韩欧美成人午夜| 欧美大片一区二区| 欧美va亚洲va香蕉在线| 日韩欧美国产wwwww| 亚洲精品一区二区三区蜜桃下载 | 日韩精品一区二| 日韩欧美一区二区免费| 欧美大尺度电影在线| 欧美成人一区二区三区片免费| 欧美日韩的一区二区| av电影一区二区| 99久久久国产精品免费蜜臀| 99久久99久久精品国产片果冻| 懂色av噜噜一区二区三区av| 粉嫩绯色av一区二区在线观看| 国产精品99久久不卡二区| 国产凹凸在线观看一区二区| 国产69精品久久久久777| 精品一区二区三区欧美| 开心九九激情九九欧美日韩精美视频电影 | 日韩专区中文字幕一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 麻豆精品久久精品色综合| 美腿丝袜亚洲色图| 久久99国内精品| 国产毛片精品国产一区二区三区| 国产成人免费xxxxxxxx| 99久久99久久免费精品蜜臀| 欧美亚洲综合久久| 精品久久久久久久久久久院品网| 2017欧美狠狠色| 中文字幕视频一区| 五月天中文字幕一区二区| 国产一区视频导航| 色综合久久久网| 日韩一级视频免费观看在线| 国产日韩一级二级三级| 中文字幕在线一区| 人人狠狠综合久久亚洲| av中文字幕一区| 日韩亚洲欧美综合| 亚洲欧美综合另类在线卡通| 青青草成人在线观看| 风间由美一区二区三区在线观看| 欧洲激情一区二区| 欧美激情资源网| 丝袜美腿成人在线| 成a人片国产精品| 日韩午夜激情免费电影| 国产欧美日韩三区| 一区二区三区国产精华| 国产麻豆精品一区二区| 欧美日本国产视频| 亚洲男人的天堂在线aⅴ视频| 久久精品国产亚洲一区二区三区| 91丨九色丨蝌蚪富婆spa| 精品国内二区三区| 日本系列欧美系列| 欧美午夜精品理论片a级按摩| 中文字幕av资源一区| 视频在线观看91| 91最新地址在线播放| 国产亚洲一本大道中文在线| 免费在线观看成人| 欧美乱妇一区二区三区不卡视频| 综合网在线视频| www.日本不卡| 亚洲国产高清不卡| 国产成人在线免费观看| 欧美变态口味重另类| 日韩影院精彩在线| 欧美日韩高清不卡| 亚洲bt欧美bt精品777| 欧美中文字幕一区二区三区亚洲| 国产精品免费视频网站| www.日本不卡| 日韩一区在线免费观看| 99re成人在线| 久久综合色综合88| 美腿丝袜亚洲三区| 欧美一区二区精美| 日韩电影免费在线看| 在线电影欧美成精品| 日韩电影免费在线观看网站| 欧美在线高清视频| 亚洲成av人综合在线观看| 欧美性猛交xxxxxxxx| 亚洲超碰97人人做人人爱| 538prom精品视频线放| 蜜桃av噜噜一区二区三区小说| 日韩一区二区在线看| 精品一区二区精品| 国产日本欧美一区二区| 99r国产精品| 日欧美一区二区| 精品女同一区二区| 成人免费视频一区二区| 日韩理论片在线| 在线视频一区二区三区| 日韩国产成人精品| 久久久久免费观看| 色狠狠桃花综合| 青青草精品视频| 国产精品欧美综合在线| 欧美日韩你懂得| 久久66热re国产| 亚洲色图在线播放| 5858s免费视频成人| 国产福利一区二区三区视频| 国产精品免费视频网站| av影院午夜一区| 亚洲午夜日本在线观看| 欧美tk—视频vk| 一本色道a无线码一区v| 三级影片在线观看欧美日韩一区二区| 久久综合色婷婷| 91久久精品一区二区三区| 久久99国产精品免费| 亚洲精品免费在线| 久久亚洲影视婷婷| 一本一道久久a久久精品| 一区二区三区小说| 久久综合狠狠综合久久综合88| 91在线porny国产在线看| 麻豆一区二区三| 一区二区三区成人在线视频| 日韩欧美国产一二三区| 欧洲另类一二三四区| 国产乱码精品一区二区三区五月婷 | 亚洲国产毛片aaaaa无费看| 欧美另类videos死尸| 99久久精品国产麻豆演员表| 亚洲国产精品久久不卡毛片| 日本一区二区三区高清不卡 | 亚洲黄色在线视频| 精品少妇一区二区三区在线视频| 国产成人午夜视频| 美女网站色91| 日日噜噜夜夜狠狠视频欧美人| 亚洲人xxxx| 国产精品国产三级国产有无不卡 | 日韩精品一区二| 日韩欧美国产麻豆| 日韩欧美的一区| 2021中文字幕一区亚洲| 国产欧美日韩另类一区| 国产精品久99| 亚洲美女偷拍久久| 日韩电影一二三区| 久久99热这里只有精品| 国产一区在线观看视频| 成人高清免费观看| 欧美自拍偷拍一区| 欧美精品色综合| 精品国产伦一区二区三区免费| 欧美精品一区二区三区久久久| 久久综合久久久久88| 国产精品久久久久久久裸模| 综合久久综合久久| 天天色天天操综合| 国产一区二区在线电影| 成人av网站免费观看| 欧美性色黄大片| 久久综合国产精品| 最好看的中文字幕久久| 水野朝阳av一区二区三区| 激情综合色播激情啊| 91网站在线观看视频| 91精品免费在线| 欧美激情一区二区三区不卡| 一区二区三区高清不卡| 极品少妇一区二区| 日本久久一区二区| 精品久久久久av影院| 亚洲精品中文字幕乱码三区| 蜜乳av一区二区三区| 色哟哟在线观看一区二区三区| 91精品国产91综合久久蜜臀| 国产精品美女视频| 美女视频黄免费的久久| caoporn国产一区二区| 日韩一级大片在线观看| 亚洲免费在线观看| 国内不卡的二区三区中文字幕| 91在线免费视频观看| 精品久久免费看| 五月婷婷久久丁香| 色综合天天视频在线观看 | 成人小视频在线观看| 91精选在线观看| 自拍偷拍亚洲综合| 国产成人av自拍|