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

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

?? eth.c

?? 51單片機加rt8019硬件平臺,上web方案及詳細代碼
?? C
字號:
//-------------------------eth.c----------------
#include <absacc.h>
#include<string.h>	
#include"includes.h"

uchar txbuf=0;			 //發送緩沖區選擇0,1

/*****************************************
 8019熱復位
******************************************/
void rtl8019_reset() 
{
    REG1f=0x0f;      
    delay_us(DY200MS);
} 

/*****************************************
 8019寄存器換頁
******************************************/
void page(uchar pgnum)
{
    uchar temp;
    temp=REG00;        
    temp=temp&0x3B ;//高兩位清零
    pgnum=pgnum <<6;
    temp=temp | pgnum;
    REG00=temp;
}
/*****************************************
 寫8019MAC地址
******************************************/
void write_mac()
{
    page(1);
    REG01=mymac[0];
    REG02=mymac[1];
    REG03=mymac[2];
    REG04=mymac[3];
    REG05=mymac[4];
    REG06=mymac[5];
    page(0);
}

/*****************************************
8019初始化 
*****************************************/
void init_8019()
{
    delay_us(DY10MS);
	rtl8019_reset();        
    REG00=0x21;         //選擇頁0寄存器,8019停止運行
    delay_us(DY10MS);   //延時10毫秒,確保芯片進入停止模式

    page(0);
    REG0a=0x00;    	    //清遠程DMA計數器RBCR0,RBCR1
	REG0b=0x00;

    REG0c= 0xe0;        //RCR接收配置 只檢查數據不存入緩存 
    REG0d= 0xe2;        //TCR傳輸配置 back mode 使芯片處于mon和loopback模式,跟外部網絡斷開  

//使用0x40-0x4B為網卡的發送緩沖區,共12頁,剛好可以存儲2個最大的以太網包。
    REG01=0x4c;    		//PSTART 接收緩存環開始頁地址
	REG02=0x80;    		//PSTOP	接收緩存環結束頁地址
	REG03=0x4c;			//BNRY
//使用0x4c-0x7f為網卡的接收緩沖區,共52頁。
    REG04=0x40;			//TPSR	要發送包的起始頁

    REG07=0xff;         //清除所有中斷標志位
    REG0f=0x00;         //設置中斷屏蔽寄存器,屏蔽所有中斷
    REG0e=0xc8;         //DCR數據配置 使用FIFO緩存,普通模式,8位數據DMA

    page(1);
    REG07=0x4d;    		//CURR初始化當前頁寄存器,指向當前正在寫的頁的下一頁

	REG08=0x00;    		//08-0F組播地址
	REG09=0x00;
    REG0a=0x00;    
	REG0b=0x00;    
    REG0c=0x00;    
	REG0d=0x00;    
	REG0e=0x00;
    REG0f=0x00;
    write_mac();
    page(0);
    REG0c=0xcc;          //設置接收配置寄存器,使用接收緩沖區,僅接收自己地址的數據包(以及廣播地址數據包)和多點播送地址包,小于64字節的包丟棄,校驗錯的數據包不接收
    REG0d=0xe0;			 //設置發送配置寄存器,啟用CRC自動生成和自動校驗,工作在正常模式
    REG00=0x22;          //這時讓芯片開始工作
    REG07=0xff;    
}

/*****************************************
發送以太網幀 最小為60字節,最大1514字節
*****************************************/	 
void frame_send(uchar xdata * outbuf, uint len)
{
	uchar i;
	uint cnt;

	page(0);
	if(len<60)
		len=60;		
  
	REG09=(0x40 + txbuf*6);	        //RSAR1 設置遠程DMA起始地址的高字節 	
	REG08=0x00; 		            //RSAR0 設置遠程DMA起始地址的低字節

	REG0b=len>>8;		            //RBCR1 設置遠程DMA計數器高字節
	REG0a=len&0xff;		            //RBCR0 設置遠程DMA計數器低字節
	REG00=0x12;			            //write dma, page0

	for(cnt=0;cnt<len;cnt++)	
	   REG10=*(outbuf+cnt);
	   
	REG0b=0x00;                     //read count high   中止DMA操作
	REG0a=0x00;                     //read count low;
	REG00=0x22;                     //complete dma page 0 	
	
	REG04=(0x40 + txbuf*6);	         //TPSR 設置發送包起始頁	
	REG06=len>>8;	                 //TBCR1 設置要發送包長度高字節
	REG05=len&0xff;	                 //TBCR0 設置要發送包長度低字節
	REG07=0xff;
	REG00=0x3e;		                 //to sendpacket;  

	for(i=0;i<16;i++)	             //最多重發16次
	{
		for(cnt=0;cnt<1000;cnt++)	 //檢查txp為是否為低
		{
			if ((REG00&0x04)==0) 
				break;
		}
		if ((REG04&0x01)!=0)    	 //PTX=1表示發送成功
			break;
		REG00=0x3e;
	}
	REG07=0xff;	                     //清除所有中斷標志位 		
	clean_buf(outbuf,len);
}

/*****************************************
接收以太網幀,如果收到一個有效的數據包,
返回收到的數據,否則返回NULL
*****************************************/
uint frame_receive(uchar xdata * inbuf)
{
    uchar bnry,curr,next_page,temp;    
	uint len, cnt;

    page(0);
    bnry=REG03;        //讀頁指針指向已被主機讀取了的那頁的下頁
	
    page(1);
    curr=REG07;        //寫頁指針,指向所接收包的第一頁地址
    page(0);
    if ((curr==0))     //讀的過程出錯
		return(0);    
    next_page=bnry;

    bnry=bnry + 1;

    if (bnry>0x7f)    
		bnry=0x4c;	

    if (bnry!=curr)    //此時表示有新的數據包在緩沖區里
    {
        //讀取一包的前4個字節:4字節的8019頭部
        page(0);
        REG09=bnry;     //RSAR1設置遠程DMA起始地址 high
        REG08=0x00;     //RSAR0設置遠程DMA起始地址 low

        REG0b=0x00;     //RBCR1 設置遠程DMA計數器高字節
        REG0a=4;        //RBCR1read count low;
        REG00=0x0a;     //read dma

        temp = REG10;   //接收狀態     
		temp = REG10;	//下一頁指針
		
        next_page = temp-1;  //next page start-1

        len = REG10;    //幀長度2BYTE      
		temp = REG10;
        len += temp<<8;

        REG0b=0x00; 
		REG0a=0x00;  
		REG00=0x22;//complete dma page 0

        if(len == 0)
        {
            page(1);
            curr=REG07;     //page1
            page(0);        
            bnry = curr -1;

            if(bnry < 0x4c) 
				bnry =0x7f;

            REG03=bnry;     //write to bnry   
            REG07=0xff;     //清除中斷狀態
            return(0);
        }


        REG09=bnry;    //read page address high
        REG08=4;     //read page address low

        REG0b=len>>8;    //read count high
        REG0a=len&0xff;    //read count low;
        REG00=0x0a;    //read dma

        for(cnt=0;cnt<len;cnt++)
        {
            inbuf[cnt]=REG10;
        }
        REG0b=0x00;    
		REG0a=0x00; 
		REG00=0x22;
    //dma complete  page0     
        bnry=next_page;
        if (bnry<0x4c)  bnry=0x7f;
        REG03=bnry;     //write to bnry    
        REG07=0xff;
        return (len);    
    }
    return (0);
}
/*****************************************
查詢標志位,判斷是否有新數據
*****************************************/
uchar query_8019(void)
{   
    uchar bnry,curr;
    page(0);
       bnry=REG03;     //bnry page have read 讀頁指針
    page(1);
    curr=REG07;        //curr writepoint 8019寫頁指針
    page(0);
	
    if ((curr==0))    
		return(0);
	
    bnry++;
    if (bnry>0x7f)    
		bnry=0x4c; 	
	
    if (bnry!=curr)    //此時表示有新的數據包在緩沖區里	
	   return(1);
	
	   		  
    REG0b=0x00; 
	REG0a=0x00;  
	REG00=0x22;        //complete dma page 0
	return(0);
}

/*****************************************
發送以太網幀,加上幀頭
*****************************************/
void eth_send(uchar xdata * outbuf, uchar * macaddr, uint frame_type, uint len)
{
    Eth_Header xdata * eth;

   	LED=0;	//指示燈亮				

    eth = (Eth_Header xdata *)outbuf;
    memcpy(eth->dest_macaddr, macaddr, 6);
    memcpy(eth->source_macaddr, mymac, 6); 
    eth->frame_type = frame_type; 
	 	
    frame_send(outbuf, len + 14);

//	TRACE("SEND > ETH_FRAME",NULL,0,0); 
   	LED=1;	//指示燈				
}

 
/*****************************************
接收以太網幀,轉相應的處理程序
*****************************************/
void eth_process(uchar xdata * Databuf)
{
    Eth_Header xdata * eth;

	eth = (Eth_Header xdata *)Databuf;

	if (eth->frame_type < 1518)//小于1518表示為長度,否則表示使用上層協議
        return; 
		     
     switch (eth->frame_type)
     {
        case ARP_PACKET:
			TRACE("ARP_PACKET",NULL,0,0);
            arp_receive(Databuf);				
            break;

        case IP_PACKET:
			TRACE("IP_PACKET",NULL,0,0);
            ip_receive(Databuf);
            break;

        default: 
			TRACE("UNKNOW_PACKET",NULL,0,0);
            break;
     }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美国产电影| 亚洲欧洲国产日本综合| 精品成人一区二区三区四区| 久久久久久影视| 亚洲蜜臀av乱码久久精品| 亚洲超丰满肉感bbw| 久久疯狂做爰流白浆xx| 成人一区二区三区视频在线观看 | 一级女性全黄久久生活片免费| 亚洲激情中文1区| 青草国产精品久久久久久| 国产精品自拍av| 欧美在线影院一区二区| 久久久精品欧美丰满| 亚洲国产一二三| 成人免费视频一区| 日韩一区二区在线观看视频| 亚洲天堂精品视频| 国产乱人伦精品一区二区在线观看| 日韩福利视频网| 91美女蜜桃在线| 精品国产免费一区二区三区四区 | 午夜精品一区二区三区电影天堂 | 久久久五月婷婷| 亚洲黄一区二区三区| 国产精品911| 欧美一区二区三区色| 国产精品毛片久久久久久久| 91欧美激情一区二区三区成人| 欧美一区二区三区性视频| 中文字幕在线不卡| 国产黄人亚洲片| 91精品国产高清一区二区三区蜜臀| 国产精品久久久久久久久久久免费看 | 香蕉乱码成人久久天堂爱免费| 成人一道本在线| 精品国产自在久精品国产| 石原莉奈在线亚洲三区| 色八戒一区二区三区| 国产精品女主播av| 国产精品一区专区| 久久一区二区三区国产精品| 亚洲在线视频一区| 在线观看一区二区精品视频| 亚洲色图视频免费播放| av在线综合网| 国产精品福利av| 97久久久精品综合88久久| 国产午夜精品一区二区三区视频| 久久精品噜噜噜成人88aⅴ| 日韩一区二区不卡| 天天操天天干天天综合网| 欧美日韩美少妇| 综合电影一区二区三区| 色婷婷激情久久| 亚洲综合清纯丝袜自拍| 欧美综合一区二区| 亚洲国产精品视频| 欧美日韩日日骚| 亚洲成av人综合在线观看| 欧美日韩一区在线观看| 日本一道高清亚洲日美韩| 欧美成人在线直播| 国产一区二区电影| 国产精品三级av| 91一区二区在线| 亚洲成人免费视| 欧美电影免费观看完整版| 国产精品一区二区三区网站| 国产精品国产三级国产aⅴ原创| 91麻豆精品秘密| 亚洲电影在线播放| 欧美男人的天堂一二区| 六月丁香婷婷久久| 国产女人18毛片水真多成人如厕| 成人性生交大片免费看视频在线| 亚洲色欲色欲www| 91麻豆精品国产91久久久久久 | 国产欧美日韩在线视频| 99re热视频精品| 日韩国产一区二| 国产欧美日韩一区二区三区在线观看| 99视频国产精品| 青娱乐精品视频| 久久这里只有精品视频网| 91网站最新网址| 久久国产尿小便嘘嘘| 日本成人超碰在线观看| 久久精品欧美日韩精品| 成人性视频网站| 一级精品视频在线观看宜春院 | 免费在线观看视频一区| 欧美激情一区二区三区四区| 欧美日韩一区二区在线观看视频| 国产一区二区导航在线播放| 亚洲国产cao| 国产拍揄自揄精品视频麻豆| 欧美日韩国产免费| 大胆亚洲人体视频| 日韩精品电影在线| 亚洲色图清纯唯美| 欧美mv日韩mv国产网站| 色婷婷精品大在线视频| 国产精品1区二区.| 五月天丁香久久| 亚洲另类春色国产| 精品久久一区二区三区| 欧美日韩亚洲综合| 99久久er热在这里只有精品66| 免费人成黄页网站在线一区二区| 亚洲女厕所小便bbb| 亚洲欧美另类图片小说| 一区二区在线观看不卡| 亚洲裸体xxx| 亚洲综合自拍偷拍| 亚洲一区影音先锋| 亚洲国产精品自拍| 日日夜夜免费精品视频| 亚洲.国产.中文慕字在线| 日韩一区欧美二区| 久久99精品久久久久久久久久久久| 美女国产一区二区| 国产精品 欧美精品| 国产91丝袜在线观看| 成人h动漫精品| 日本精品视频一区二区三区| 精品视频一区三区九区| 日韩一区二区三区四区| 久久久久久久久一| 国产精品欧美经典| 亚洲成人免费在线观看| 免费久久99精品国产| 国产一区二区精品在线观看| av亚洲精华国产精华| 在线观看亚洲精品视频| 日韩欧美一级在线播放| 亚洲国产成人一区二区三区| 亚洲一区在线观看网站| 蜜臀91精品一区二区三区| 国产成人精品影院| 在线视频欧美精品| 欧美一级黄色片| 国产精品欧美一区喷水| 亚洲6080在线| 国产东北露脸精品视频| 欧美影院精品一区| 欧美一区二区高清| 国产精品成人网| 偷拍一区二区三区| 国产成人无遮挡在线视频| 91国产丝袜在线播放| 欧美成人高清电影在线| 一区二区三区欧美日| 国内精品伊人久久久久av影院 | 欧美成人猛片aaaaaaa| 中文字幕一区二区视频| 日本欧美在线观看| 99久久精品免费看| 精品理论电影在线观看 | 亚洲h在线观看| 国产91色综合久久免费分享| 欧美日韩一区中文字幕| 国产午夜精品福利| 日本亚洲欧美天堂免费| 色婷婷亚洲一区二区三区| 精品精品国产高清a毛片牛牛| 一区二区三区不卡在线观看| 国产精品一线二线三线精华| 91精品国产免费| 亚洲午夜在线视频| www.亚洲色图| 久久久久久久综合色一本| 日韩国产高清影视| 91福利在线看| 亚洲日本韩国一区| 国产福利一区二区三区视频 | 国产麻豆91精品| 制服视频三区第一页精品| 亚洲精品视频在线| 成人app网站| 国产精品色噜噜| 国产精品456露脸| 欧美精品一区二区三区四区| 天涯成人国产亚洲精品一区av| 懂色av一区二区夜夜嗨| 久久青草国产手机看片福利盒子| 老司机精品视频线观看86| 欧美日韩精品系列| 亚洲成av人片在线观看| 欧美色图激情小说| 亚洲自拍偷拍欧美| 色悠悠亚洲一区二区| 国产精品国产三级国产| 99久久免费精品| 1区2区3区精品视频| 色综合久久综合中文综合网| 亚洲视频一区在线观看| 91在线精品一区二区| 亚洲精品久久嫩草网站秘色| 欧美亚洲日本一区|