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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? net.c

?? 本文件為C8051F單片機和RTL8019的源碼以及完整圖紙
?? C
?? 第 1 頁 / 共 2 頁
字號:
//********************************************
//              網(wǎng)絡(luò)通信子程序
//                2007.4.13
//                 Passion 
//********************************************
#include "c8051f020.h"
#include <string.h>
#include <stdlib.h>
#include <absacc.h>
//*************************************************************************
#define H_H_Length   pac_head[16]
#define L_H_Length   pac_head[17]
#define H_CRC        Send_Buff[24]
#define L_CRC        Send_Buff[25] 
#define H_Loc_Port   pac_head[34]
#define L_Loc_Port   pac_head[35]
#define H_Aim_Port   pac_head[36]
#define L_Aim_Port   pac_head[37]
#define H_UDP_Length pac_head[38]
#define L_UDP_Length pac_head[39]
#define HUDPCRC      Send_Buff[40]
#define LUDPCRC      Send_Buff[41]
#define reg00   XBYTE[0x8000]   //reg00- 10為isa網(wǎng)卡接口的寄存器地址300-310;
#define reg01   XBYTE[0x8001]
#define reg02   XBYTE[0x8002]
#define reg03   XBYTE[0x8003]
#define reg04   XBYTE[0x8004]
#define reg05   XBYTE[0x8005]
#define reg06   XBYTE[0x8006]
#define reg07   XBYTE[0x8007]
#define reg08   XBYTE[0x8008]
#define reg09   XBYTE[0x8009]
#define reg0a   XBYTE[0x800a]
#define reg0b   XBYTE[0x800b]
#define reg0c   XBYTE[0x800c]
#define reg0d   XBYTE[0x800d]
#define reg0e   XBYTE[0x800e]
#define reg0f   XBYTE[0x800f]
#define reg10   XBYTE[0x8010]
#define Reset_Low 	P5 &= ~(0x4); 	// P52 
#define Reset_High 	P5 |= 0x4; 		// P52
//**********************************************************************
void UDP_Send(void);                                     //UDP協(xié)議發(fā)送處理
void UDP_Recv(void);
void page_select(unsigned char pagenumber);              //RTL8019頁選擇函數(shù)
void read_mac_add(void);                                 //RTL8019網(wǎng)卡MAC讀取函數(shù)
void Reset_8019(void);                                   //RTL8019復(fù)位函數(shù)
void RTL8019_init(void);                                 //RTL8019初始化函數(shù)
bit RTL8019_receive(void);                              //RTL8019接收函數(shù)
void PORT_Init (void);                                   //C8051F020端口初始化
void write_mac_add(void);                                //寫網(wǎng)卡物理地址
void SYSCLK_Init (void);                                 //外部時鐘初始化
void RTL8019_send(void);                                 //RTL8019發(fā)送函數(shù)
void ARP_Request();                                      //ARP請求處理
//void ARP_Answer(void);                                   
void RARP(void);                                         //ARP應(yīng)答處理                                        
bit ARP_Process(void);                                   //ARP請求包處理
bit IP_Process(void);                                    //IP包處理
bit UDP_Process(void);                                   //UDP包處理
bit WRQ_Process(void);                                   //WRQ包處理
bit DATA_Process(void);                                  //DATA包處理
bit OVER_Process(void);                                  //OVER包處理
void ACK_Send(unsigned int count);                       //ACK包發(fā)送
void Pag_TimeOut(void);                                  //數(shù)據(jù)包接收超時
void Config_Timmer(void);                                //定時器配置函數(shù)                                       
unsigned int CRC_Process(unsigned char LEN,unsigned char mov,unsigned char type);        //校驗位生成函數(shù)
//***********************************************************************
unsigned int kk;
unsigned int Protocol;
unsigned int Pag_Head;                                            //包頭寄存器
unsigned int Loc_Port;                                            //源端口
unsigned int Aim_Port;                                            //目的端口
unsigned int Package=0;                                           //塊寄存器
unsigned int Count_Pag=1;                                         //塊計數(shù)器
unsigned int H_Package=0;                                         //總數(shù)據(jù)塊數(shù)
unsigned int ms=0;                                                //毫秒計時
unsigned char s=0;                                                //秒計時
unsigned char min=0;                                              //分計時
unsigned char xdata Send_Buff[558]={0x00};                     //發(fā)送緩存
unsigned char Receive_Buff[68]={0x00};                            //接收緩存
unsigned char bnry;
unsigned char curr;
unsigned char A_m_a[6]={0x00};                                //目的物理地址
unsigned char A_IP_add[4]={0x00};                                 //目的IP地址
unsigned char hard_add[6]={0x00,0x01,0x02,0x03,0x04,0x05};         //網(wǎng)卡物理地址
unsigned char IP_add[4]={0x0a,0x05,0x84,0xd9};                    //網(wǎng)卡IP地址
unsigned char xdata UDP_F_Head[12]={0x00};                              //UDP偽頭
unsigned char xdata DATA_Buff[512]={0x00};                        //接收數(shù)據(jù)緩存
unsigned char xdata pac_head[42]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02,0x03,0x04,0x05,
                                  0x08,0x00,0x45,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x11,
                                  0x00,0x00,0x0a,0x05,0x84,0xd9,0x00,0x00,0x00,0x00,0x00,0x00,
								  0x00,0x00,0x00,0x00,0x00,0x00}; //UDP數(shù)據(jù)包
//***********************************************************************
void main(void)
{
    unsigned char i;
	WDTCN = 0xDE;              // Disable watchdog timer
	WDTCN = 0xAD;
    EMI0CF =0x24;
	SYSCLK_Init ();
	PORT_Init(); 
    RTL8019_init();
    for(i=0;i<6;i++)
      hard_add[i]=i;
	while(1)
	{
        //P2=0x00;
		//if(ms>5)
			//Pag_TimeOut();
		//if(s>1)
            //Request_TimeOut();
		//if(min>=1)
			//OFF_TimeOut();
    	RTL8019_receive();                          //接收一個數(shù)據(jù)包
		Protocol=Receive_Buff[16];
	    Protocol=Protocol<<8;
		Protocol+=Receive_Buff[17];                  //取出協(xié)議類型
		if(Protocol!=0x0806&&Protocol!=0x0800)
			continue;                                  //既不是ARP包也不是IP包則丟棄
	    else if(Protocol==0x0806)                   //若為ARP包
			ARP_Process();                          //ARP包處理函數(shù)
		else 
			IP_Process();                           //IP報處理函數(shù)
	}
}
//*********************************************************************
bit ARP_Process(void)
{
	unsigned char i;
	                    
		for(i=42;i<46;i++)
		{
			if(Receive_Buff[i]!=IP_add[i-42])       //是否與本地IP地址相符              
				return 0;
		}
		for(i=0;i<6;i++)
			A_m_a[i]=Receive_Buff[i+10];        //取出客戶機物理地址
		for(i=0;i<4;i++)
            A_IP_add[i]=Receive_Buff[i+32];         //取出客戶機IP地址
		if(Receive_Buff[25]==0x01)                  //是否為ARP請求
			RARP();                                 //應(yīng)答
		return 1;
}
//*********************************************************************
bit IP_Process(void)
{
    unsigned char i;
	for(i=0;i<6;i++)
    {
		if(Receive_Buff[4+i]!=hard_add[i])
			return 0;
    }
	if(Receive_Buff[27]!=0x11)                      //上層協(xié)議是否為UDP
		return 0;
	else
	{
	    for(i=0;i<6;i++)
			A_m_a[i]=Receive_Buff[i+10];        //取出客戶機物理地址
        for(i=0;i<4;i++)
            A_IP_add[i]=Receive_Buff[i+30];         //取出客戶機IP地址
		UDP_Process();                               //UDP報處理函數(shù)
		return 1;
	}
}
//*********************************************************************
bit UDP_Process(void)
{
	unsigned int Pag_Head;
	Aim_Port=Receive_Buff[38];
	Aim_Port<<=8;
	Aim_Port+=Receive_Buff[39];                      //取出源端口裝入目的端口寄存器
    Loc_Port=Receive_Buff[40];
	Loc_Port<<=8;
	Loc_Port+=Receive_Buff[41];                      //取出目的端口裝入源端口   
	Pag_Head=Receive_Buff[46];
	Pag_Head<<=8;
	Pag_Head+=Receive_Buff[47];
	if(Pag_Head>=0x0004||Pag_Head<0x0000)          //檢驗數(shù)據(jù)包頭
		return 0;
	else if(Pag_Head==0x0000)                       //如果為寫請求WRQ
	{   
		s=0;
		ms=0;
		WRQ_Process();                              //WRQ報處理函數(shù)
		return 1;
	}
	else if(Pag_Head==0x0001)                       //如果為數(shù)據(jù)塊包
	{
		ms=0;
		DATA_Process();                             //DATA報處理函數(shù)
		return 1;
	}
	else if(Pag_Head==0x0003)                       //如果為完成標(biāo)示OVER
	{
		min=0;
		s=0;
		ms=0;
		OVER_Process();                             //OVER報處理函數(shù)
		return 1;
	}
	else
		return 0;
}
//*********************************************************************
bit WRQ_Process(void)
{
    s=0;                                            //秒計數(shù)器清零
	H_Package=Receive_Buff[48];
	H_Package<<=8;
	H_Package+=Receive_Buff[49];                     //取出總數(shù)據(jù)塊數(shù)
	ACK_Send(0);
	return 1;
}
//*********************************************************************
bit DATA_Process(void)
{
	unsigned char i;
	ms=0;                                           //毫秒計數(shù)器清零
	Package=Receive_Buff[48];
	Package<<=8;
	Package+=Receive_Buff[49];                       //取出當(dāng)前塊數(shù)
	if(Package!=Count_Pag)
		return 0;
	else
	{
		Count_Pag++;                                //計數(shù)器加一  
		for(i=0;i<512;i++)
			DATA_Buff[i]=Receive_Buff[i+50];        //取出有效數(shù)據(jù)
		ACK_Send(Package);
		return 1;
	}
}
//*********************************************************************
bit OVER_Process(void)
{
	ms=0;                                           //毫秒計數(shù)器清零                     
	H_Package=Receive_Buff[48];
	H_Package<<=8;
	H_Package+=Receive_Buff[49];                     //取出總數(shù)據(jù)塊數(shù)
	return 1;
}
//*********************************************************************
void Config_Timmer(void)
{
	TMOD=0x01;                                      //定時器零工作與16位方式
	TL0=0x66;
	TH0=0xFC;
	ET0=1;                                          //定時器零中斷使能
	EA=1;                                           //開總中斷
	TR0=1;
}
//*********************************************************************
void timmer0() interrupt 1 using 1
{
	TR0=0;
	TL0=0x66;
	TH0=0xFC;
    if(ms>=999)
	{
		ms=0;
		if(s>=59)
		{
			s=0;
			if(min>=59)
				min=0;
			else
				min++;
		}
		else
			s++;
	}
	else
		ms++;
    TR0=1;
}
//************************************************************************
void PORT_Init (void)
{
   XBR0    = 0x07;                     // Enable SMBus, SPI0, and UART0
   XBR1    = 0x00;
   XBR2    = 0x44;                     // Enable crossbar and weak pull-ups
   EMI0TC  = 0x21;
   P74OUT  = 0xFF;
   P0MDOUT = 0x15;
   //P3MDOUT=0xff;
   //P1MDOUT=0xff;
   P2MDOUT=0xff;
}
//************************************************************************
void RTL8019_init(void)
{
	unsigned char i;
	unsigned char j;
    for(i=0;i<255;i++)
	    for(j=0;j<255;j++);
    Reset_8019();          //復(fù)位8019
	//chip_select();         //片選
    page_select(0);
	reg00=0x21;            //020與8019通信禁止,發(fā)送禁止,即進入停止?fàn)顟B(tài)
    for(i=0;i<255;i++)
	    for(j=0;j<255;j++);
	reg0a=0x00;
	reg0b=0x00;            //020與8019通信字節(jié)計數(shù)器清零
	reg0c=0xe0;            //接受禁止
	reg0d=0xe2;            //發(fā)送禁止,使用CRC
	reg01=0x4c;            //配置接受緩存起始頁地址
	reg02=0x80;            //配置接收緩存結(jié)束頁地址
	reg03=0x4c;            //接收緩存邊界頁地址
	reg04=0x40;            //發(fā)送緩存起始頁地址
	reg07=0xff;            //清中斷標(biāo)志
	reg0f=0x00;            //終止所有中斷
    reg0e=0xc8;            //8位DMA
	page_select(1);        //選擇第一頁
	reg07=0x4d;            //接收緩沖區(qū)首頁地址
	reg08=0x00;
	reg09=0x00;
	reg10=0x00;
	reg0a=0x00;
	reg0b=0x00;
	reg0c=0x00;
	reg0d=0x00;
	reg0e=0x00;
	reg0f=0x00;            //地址過濾位
	reg00=0x22;            //RTL8019工作使能
//	read_mac_add();        //讀取物理地址 
	write_mac_add();       //寫物理地址至ram
	page_select(0);        //選擇第零頁
	reg0c=0xcc;            //接收使能
	reg0d=0xe0;    
	reg00=0x22;            //RTL8019工作使能
	reg07=0xff;            //清中斷位
	//read_reg(reg0f,reg00,0x00,16);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频一区在线观看| 日韩一级二级三级精品视频| 欧美经典一区二区| 成人中文字幕在线| 中文字幕一区二区在线播放 | 亚洲v中文字幕| 91精品福利在线一区二区三区 | 亚洲一区视频在线观看视频| 精品视频免费在线| 久久精品国产一区二区| 久久久av毛片精品| 91福利资源站| 捆绑变态av一区二区三区| 久久精品欧美日韩精品| 一本大道av伊人久久综合| 亚洲成av人片一区二区| 久久综合国产精品| 不卡一区二区三区四区| 亚洲午夜国产一区99re久久| 久久综合给合久久狠狠狠97色69| 97精品超碰一区二区三区| 日日摸夜夜添夜夜添国产精品| 精品久久久久久无| 99久久伊人网影院| 日本欧美在线看| 中文字幕第一区二区| 欧美日韩激情一区二区三区| 国产91高潮流白浆在线麻豆| 亚洲一区二区美女| 欧美极品少妇xxxxⅹ高跟鞋| 欧美日韩久久久一区| 国产裸体歌舞团一区二区| 亚洲裸体xxx| 精品国产乱码久久久久久免费| 99久久精品国产麻豆演员表| 肉肉av福利一精品导航| 国产精品网站在线播放| 91精品在线一区二区| www.亚洲国产| 美腿丝袜在线亚洲一区| 中文字幕日韩一区二区| 日韩精品一区二| 欧美亚洲综合网| 成人国产视频在线观看| 久久国产精品免费| 日日摸夜夜添夜夜添精品视频 | 久久久久国产一区二区三区四区 | 日韩电影在线一区| 中文字幕欧美一| 欧美精品一区二区三区很污很色的 | 久久99热国产| 亚洲福利视频一区| 欧美激情综合五月色丁香| 欧美猛男gaygay网站| 91小视频在线免费看| 国产一区二区视频在线播放| 亚洲第一在线综合网站| 18欧美乱大交hd1984| 国产亚洲精品福利| 欧美www视频| 678五月天丁香亚洲综合网| 色婷婷久久一区二区三区麻豆| 国产精一区二区三区| 久久精品国产色蜜蜜麻豆| 午夜久久久久久久久久一区二区| 亚洲激情男女视频| 日韩理论电影院| 1024国产精品| 国产精品国产精品国产专区不片| 久久久精品日韩欧美| 精品福利在线导航| 日韩精品一区二区三区在线| 欧美一区二区网站| 91精品一区二区三区久久久久久| 欧美日韩三级在线| 欧美日韩另类一区| 欧美一区二区精品久久911| 4hu四虎永久在线影院成人| 欧美年轻男男videosbes| 色狠狠一区二区| 色综合久久88色综合天天| 日本大香伊一区二区三区| 色综合欧美在线| 在线观看欧美精品| 欧美日韩一区二区三区不卡| 欧美军同video69gay| 666欧美在线视频| 欧美成人艳星乳罩| 国产欧美一区视频| 国产精品美女久久久久久久久| 成人欧美一区二区三区小说| 亚洲影视在线播放| 全国精品久久少妇| 国产一区在线精品| 99久久99久久精品免费观看| 99re66热这里只有精品3直播| 在线影院国内精品| 欧美一级电影网站| 国产情人综合久久777777| 国产精品久久免费看| 亚洲国产视频a| 免费成人结看片| 国产传媒日韩欧美成人| 91女人视频在线观看| 欧美色窝79yyyycom| 日韩一级二级三级| 中文字幕一区二区三区四区不卡 | 婷婷中文字幕一区三区| 蜜桃av噜噜一区| 不卡av免费在线观看| 欧美在线不卡视频| 精品国产乱码久久久久久牛牛| 18成人在线观看| 蜜桃av噜噜一区| 97精品久久久午夜一区二区三区| 69堂国产成人免费视频| 欧美韩国日本一区| 偷拍一区二区三区| 99热99精品| 精品免费国产二区三区| 亚洲欧美日韩一区| 精品中文字幕一区二区| 色噜噜夜夜夜综合网| 亚洲精品一线二线三线| 亚洲大片免费看| 国产高清精品久久久久| 欧美日韩一区二区三区高清| 中文字幕av在线一区二区三区| 三级一区在线视频先锋| 99在线热播精品免费| 欧美一二三区精品| 亚洲精品视频一区| 国产精品18久久久久久vr| 欧美丰满高潮xxxx喷水动漫| 国产精品视频免费看| 精品一区二区三区日韩| 欧美日韩国产小视频| 国产精品天干天干在观线| 久久99久久久欧美国产| 欧美日韩情趣电影| 亚洲精品成人在线| 粉嫩aⅴ一区二区三区四区| 日韩一二三区视频| 亚洲福利电影网| 99精品国产99久久久久久白柏| 精品国产露脸精彩对白| 爽好多水快深点欧美视频| 91丨国产丨九色丨pron| 欧美国产一区二区在线观看| 免费视频最近日韩| 欧美精品少妇一区二区三区| 一区二区三区久久久| 成人av在线资源网站| 久久精品在这里| 国产制服丝袜一区| 精品国产青草久久久久福利| 日韩精品成人一区二区在线| 欧美性极品少妇| 亚洲一区二区三区国产| 在线看国产日韩| 亚洲一区在线电影| 欧美在线观看一区| 亚洲午夜电影网| 欧美三日本三级三级在线播放| 亚洲私人黄色宅男| 一本久久a久久免费精品不卡| 国产精品久久久久一区二区三区| 丁香五精品蜜臀久久久久99网站| 精品乱人伦一区二区三区| 麻豆91精品视频| www精品美女久久久tv| 国产真实乱对白精彩久久| 久久久久久麻豆| 国产91丝袜在线18| 亚洲欧洲日韩av| 色综合久久综合网欧美综合网| 亚洲精品国产a| 精品视频在线免费看| 麻豆国产欧美一区二区三区| 欧美sm极限捆绑bd| 国产激情91久久精品导航| 中文字幕在线不卡| 欧美日韩三级在线| 久久99精品视频| 国产欧美日韩视频一区二区| 波多野洁衣一区| 亚洲一区二区在线视频| 欧美丰满嫩嫩电影| 国产精品自产自拍| 亚洲女与黑人做爰| 欧美男人的天堂一二区| 韩日精品视频一区| 国产精品初高中害羞小美女文| 色婷婷久久一区二区三区麻豆| 天天爽夜夜爽夜夜爽精品视频| 2022国产精品视频| 色综合中文字幕| 日韩国产成人精品| 国产日韩亚洲欧美综合| 91成人看片片|