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

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

?? ip51_mac.c

?? 完整的TCP/IP源代碼,絕對好用
?? C
?? 第 1 頁 / 共 2 頁
字號:
  BTCTRL	|=	0x80;

  //update tout_ptr pointer
  tout_ptr.p.low =	BTSCPL;
  tout_ptr.p.high=	BTSCPH;
   //update txbuf_lft
  txbuf_lft	+=	2;
  txbuf_lft	+=	len.i;

  COUTEN	&=	0xcf;//select MDMA
  MTLENH	=	len.u8.u8_1;
  MTLENL	=	len.u8.u8_2;
  len.i		=	(UINT8 xdata *)&mtx_cache[2];//use len as temp varab
  MTBAL		=	len.u8.u8_2;
  MTBAH		=	len.u8.u8_1;
//  printf("tx%x %x %x %x\n",(UINT16)mtx_cache[34],(UINT16)mtx_cache[35],(UINT16)mtx_cache[36],(UINT16)mtx_cache[37]);  
  MTPG		|=	0x80;
  tx_pkt_nums	--;



  COUTEN	= couten_bk;
  EA	=	1;
  return;
}

err_t
 Wr_pkt(UINT8  *eth_addr,UINT16 len,UINT8  *tptr,UINT16 flag)
{
  unsigned char	couten_bk;
  int_2_c	length;
  ptr_2_c	tmp_ptr;
  if(txbuf_lft > (len + 10))//have enough space for the next pkt
  {
	//put the data to buffer
	EA	=	0;

	length.i	=	len	+	8;
	couten_bk	=	COUTEN;
	COUTEN	|=	0x30; //select BOOT DMA
	tmp_ptr.ptr  =   &length;
	BTSPAG	=	tmp_ptr.p.type;//Attention
	BTSCPL	=	tmp_ptr.p.low;
	BTSCPH	=	tmp_ptr.p.high;
	//結(jié)束指針
    BTSEDL	=	0xff;
    BTSEDH	=	0xff;
    //目的當(dāng)前指針
	BTTPAG	=	tin_ptr.p.type;//
	BTTCPL	=	tin_ptr.p.low;
	BTTCPH	=	tin_ptr.p.high;
	//目的啟始指針
	BTTHDL	=	mtbuf_header.p.low;
	BTTHDH	=	mtbuf_header.p.high;
	//目的結(jié)束指針
	BTTEDL	=	mtbuf_tailer.p.low;
	BTTEDH	=	mtbuf_tailer.p.high;
	//數(shù)據(jù)長度
	BTLTHL	=	2;
	BTLTHH	=	0;
	//啟動
	BTCTRL	|=	0x80;

    tmp_ptr.ptr = eth_addr;
	BTSPAG	=	tmp_ptr.p.type;//Attention
	BTSCPL	=	tmp_ptr.p.low;
	BTSCPH	=	tmp_ptr.p.high;
	BTLTHL	=	6;
	BTLTHH	=	0;
	BTCTRL	|=	0x80;//write eth addr
		
	tmp_ptr.ptr     =   &flag;
	BTSPAG	=	tmp_ptr.p.type;//Attention
	BTSCPL	=	tmp_ptr.p.low;
	BTSCPH	=	tmp_ptr.p.high;
	BTLTHL	=	2;
	BTLTHH	=	0;
	BTCTRL	|=	0x80;

	length.i	=	len;
	BTLTHL		=	length.u8.u8_2;
	BTLTHH		=	length.u8.u8_1;
	tmp_ptr.ptr  = tptr;
	BTSPAG	=	tmp_ptr.p.type;//Attention
	BTSCPL	=	tmp_ptr.p.low;
	BTSCPH	=	tmp_ptr.p.high;
	BTCTRL		|=	0x80;
		
	//update tin_ptr
	tin_ptr.p.low	=	BTTCPL;	//get the addr
	tin_ptr.p.high	=	BTTCPH;	//get the addr
	//update txbuf_lft
	txbuf_lft	-=	10;
	txbuf_lft	-=	len;
	tx_pkt_nums	++;

	//when TXDMA is stop and all last pkt has been sent out
	COUTEN	&=	0xcf;//select MAC DMA
	if((tx_pkt_nums > 0) && 
		((MTPG & 0x80)==0))
	{
	  restart	=	1;
	  EXIF	|=	0x80;//generate MAC interrupt
		}
		
	COUTEN	=	couten_bk;
	EA	=	1;
	return ERR_OK;
	}
	else
	{
		return ERR_MTXBFF;
	}
}

void MAC_interupt(void)  interrupt 11 //using 3
{
  UINT8	int_flag;
  UINT8	couten_bk;

  EA = 0;
  EXIF	&=	0x7F;//soft clear interrupt
 //read to clear INTST
  int_flag	=	INTST;
  couten_bk	=	COUTEN;
  COUTEN	&=	0xCF;

/*	SFR		
*	INTST:	| bit7	| bit6	| bit5	| bit4	| bit3	| bit2	| bit1	| bit0
*			   --	   --	  TxDN	 HOSTAB	  RxDN	  RxOF	  --	  BOV
*/

/*****************************************************************/
/*********************        RX INT          ********************/
/*****************************************************************/
  //when RXDN || RXOF || BOV int
  if(int_flag & 0x0d)
  {
//  	rin_stk[2]	=	rin_stk[1];
//	rin_stk[1]	=	rin_stk[0];
//	rin_stk[0]	=	rin_ptr;
	if(int_flag &INT_RX_DN)
	{
//	  ((mdma_hdr *)rin_ptr.ptr)->RxSTA	=	RxSTA;
	  if(((RxSTA & 0x1C) == 0) &&
	    (((mdma_hdr *)(rin_ptr.ptr))->sta & 0x80) == 0)
	  {
	  	rxbuf_lft		-=	(((mdma_hdr *)rin_ptr.ptr)->len).i + 4;
	    rin_ptr.p.low	=	MRBAL;
	    rin_ptr.p.high=	MRBAH;
	    rx_pkt_nums	++;
	  }
	  else
	  {
	  	MRBAL	=	rin_ptr.p.low;
		MRBAH	=	rin_ptr.p.high;
	//printf("E%x\n",(UINT16)RxSTA);
		P6	^=	0x06;
	  }
	}
	else if(int_flag & INT_RX_OB)//received buffer overflow interrupt
	{
	  //When receive buffer overflow,this must mean 
	  //*that the write pointer(MRBAH,MRBAL)
	  //have reached the end of the buffer
	  if((rin_ptr.p.low == MRBAL) && 
	    (rin_ptr.p.high == MRBAH))//
		//This must mean the alloated buffer is less than
		//5 bytes,and at the end of the receive buffer
		//write 0xAA at this byte,
	  {
	    ((mdma_hdr *)rin_ptr.ptr)->sta = 0xaa;
	    rxbuf_lft	-=	mrbuf_tailer.ptr - rin_ptr.ptr;
	    rin_ptr	=	mrbuf_header;
	  }
	  MRBAL	=	mrbuf_header.p.low;//adjust the  MRBAL,MRBAH 
	  MRBAH	=	mrbuf_header.p.high;//to rx buffer start if have space
	}
	else  //do nothing when  INT_RX_OF
	{
	  MRBAL	=	rin_ptr.p.low;
	  MRBAH	=	rin_ptr.p.high;
 printf("EF\n");
	}
//	if(rxbuf_lft < 0x3C00)
//	if(in_indx > 66)
//	while(1);
	if((rxbuf_lft > ETH_MTU) && (rx_pkt_nums < 255))
	//have enough space to receive the next packet
	{
 	  MRPG	|=	0x80;//enable MDMA
	}
	else
	  printf("STOP!!!\n");

	if(rxbuf_lft < MAC_RXBUF_THRE)
	{
		PAUSE_ON	=	1;
#ifdef FULL_DX
    	Rx_pause(1);
#else
		Rx_bkp(0x0f);
#endif//FULL_DX*/
	}

//	printf("%x	  %x\n",rxbuf_lft,(UINT16)int_flag);
//	printf("%d    %x\n",(UINT16)rx_pkt_nums,MRPG);

  }

/*****************************************************************/
/*********************        TX INT          ********************/
/*****************************************************************/
  //when TxDN || HOSTAB int 
  if(int_flag & 0x30)
  {
	if(int_flag & INT_TX_DN) //one frame is sent out
	  if(tx_pkt_nums)
	  {
  	    Tx_pkt();
		restart	=	0;	
	  }
  }
  else//one frame is not sent out due to abort
  {
	//restart TXDMA
	MTPG	|=	0x80;
  }

  if(restart == 1)
  {
	restart	=	0;
	Tx_pkt();
  }

	COUTEN	=	couten_bk;
	EA	=	1;
}


void	MII_init(UINT8 init)
{
	MADDR	=	0x08;
	MDATL	=	init;
}

void	MII_config(UINT8 addr,UINT16 config)
{
  MADDR	=	0x0a;//MII Mgmt Address
  MDATH	=	0;//PHY address =0;
  MDATL	=	addr;//reg address

  MADDR	=	0x0b;//MII mgmt write data
  MDATH	=	(UINT8)(config >> 8);

  MADDR	=	0x0d;//MII mgmt indicator
  while(MDATL & 0x01);//wait untill write is not busy

  MADDR	=	0x0b;//MII mgmt write data
  MDATL	=	(UINT8)config;

  MADDR	=	0x0d;//MII mgmt indicator
  while(MDATL & 0x01);//wait untill write is not busy

  return;
}


UINT16	MII_status(UINT8 addr)
{
  UINT16	res;

  MADDR	=	0x0a;//MII mgmt address
  MDATH	=	0x00;
  MDATL	=	addr;//reg address

  MADDR	=	0x09;//MII mgmt command 
  MDATL	=	0x01;//read command

  MADDR	=	0x0d;//MII mgmt indicator
  while(MDATL & 0x04);

  MADDR	=	0x0d;//MII mgmt indicator
  while(MDATL & 0x01);//wait untill read cycle is end

  MADDR	=	0x0c;//MII mgmt read data
  res	=	((MDATH << 8) | MDATL);

  MADDR	=	0x09;//MII mgmt command 
  MDATL	=	0x0;//read command

  return res;
}



void MII_mcoinit(UINT8* hash)
{
  MADDR	=	0x14;
  MDATH	=	*hash;
  hash	++;
  MDATL	=	*hash;
  hash	++;

  MADDR	=	0x15;
  MDATH	=	*hash;
  hash	++;
  MDATL	=	*hash;
  hash	++;

  MADDR	=	0x16;
  MDATH	=	*hash;
  hash	++;
  MDATL	=	*hash;
  hash	++;

  MADDR	=	0x17;
  MDATH	=	*hash;
  hash	++;
  MDATL	=	*hash;
}



void Ext_int0(void) interrupt 1
{
	static	i;
	i	++;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩国产欧美在线观看| 亚洲国产毛片aaaaa无费看| 日韩一区二区免费在线观看| 色av成人天堂桃色av| www.欧美精品一二区| 久久精品国产99国产精品| 日本欧美一区二区三区| 五月婷婷欧美视频| 亚洲第一av色| 五月婷婷久久综合| 蜜桃视频一区二区三区| 日韩激情一区二区| 美女爽到高潮91| 久久精品免费看| 黄网站免费久久| 国产+成+人+亚洲欧洲自线| 国产成人夜色高潮福利影视| 成人综合在线观看| 99国产精品国产精品毛片| 26uuu成人网一区二区三区| 精品福利二区三区| 国产清纯白嫩初高生在线观看91| 国产欧美日韩中文久久| 中文字幕亚洲综合久久菠萝蜜| 亚洲人吸女人奶水| 亚洲一区二区三区不卡国产欧美| 亚洲aaa精品| 蜜臀av性久久久久蜜臀av麻豆| 精品午夜一区二区三区在线观看| 国产成人午夜电影网| 99综合影院在线| 欧美日韩另类一区| 欧美电视剧免费观看| 欧美韩日一区二区三区| 一区二区三区中文字幕在线观看| 全部av―极品视觉盛宴亚洲| 狠狠久久亚洲欧美| 粉嫩av亚洲一区二区图片| 91免费国产视频网站| 欧美区在线观看| 欧美精品一区二区三区高清aⅴ| 国产视频一区不卡| 一个色在线综合| 久草这里只有精品视频| 91亚洲午夜精品久久久久久| 91精品国产综合久久香蕉的特点 | 国产精品久久福利| 亚洲综合在线免费观看| 毛片基地黄久久久久久天堂| 国产成人精品影视| 欧美午夜理伦三级在线观看| 精品久久久久久久人人人人传媒 | 艳妇臀荡乳欲伦亚洲一区| 老司机精品视频一区二区三区| 成人国产精品免费网站| 在线成人免费视频| 国产精品理论在线观看| 日韩精品免费视频人成| 懂色av一区二区夜夜嗨| 欧美日韩国产美女| 中文幕一区二区三区久久蜜桃| 肉丝袜脚交视频一区二区| 国产99精品视频| 3751色影院一区二区三区| 国产精品久久久久久久久久久免费看 | 欧美日韩在线三级| 久久九九全国免费| 性久久久久久久久久久久| 成人午夜又粗又硬又大| 欧美一区二区二区| 亚洲男女毛片无遮挡| 成人性生交大片免费看视频在线| 色综合 综合色| 国产午夜一区二区三区| 水野朝阳av一区二区三区| 91欧美激情一区二区三区成人| 精品国产免费人成电影在线观看四季| 一区二区三区免费观看| 懂色av一区二区三区蜜臀 | 国产精品全国免费观看高清| 青青草成人在线观看| 色狠狠色狠狠综合| 国产精品视频一二| 国内精品免费在线观看| 日韩欧美一级特黄在线播放| 亚洲午夜成aⅴ人片| 99精品视频免费在线观看| 久久五月婷婷丁香社区| 蜜臀va亚洲va欧美va天堂| 在线免费不卡电影| 综合婷婷亚洲小说| 成人午夜碰碰视频| 久久久欧美精品sm网站| 韩国视频一区二区| 日韩一区二区三区精品视频| 亚洲午夜精品久久久久久久久| 99精品久久免费看蜜臀剧情介绍| 国产日本欧美一区二区| 国产精品一区二区免费不卡| 久久久综合网站| 国产自产2019最新不卡| 欧美一区二区三区在线电影 | 成人黄色网址在线观看| 国产日韩欧美精品一区| 国产成人在线视频网站| 久久精品视频在线看| 国产一区二区三区免费在线观看| 日韩欧美国产午夜精品| 青娱乐精品视频在线| 日韩午夜精品电影| 日本一区中文字幕| 日韩免费观看2025年上映的电影| 蜜桃av一区二区| 91精品久久久久久久久99蜜臂| 日韩高清在线不卡| 91精品国产入口| 久久精品99国产精品日本| 精品国产一区久久| 国产精品系列在线观看| 国产精品色呦呦| 色婷婷综合久色| 一区二区三区日韩欧美| 欧美色综合网站| 五月天亚洲精品| 日韩欧美黄色影院| 极品美女销魂一区二区三区| 久久久国产综合精品女国产盗摄| 福利电影一区二区三区| 亚洲免费在线视频| 欧美日韩国产经典色站一区二区三区| 午夜日韩在线电影| 精品乱人伦小说| 成人av在线播放网址| 亚洲精品视频免费看| 欧美日韩一本到| 国内精品免费**视频| 国产精品美女久久久久久久| 91免费小视频| 五月天丁香久久| 国产亚洲欧美日韩日本| 99视频一区二区| 日韩电影免费一区| 国产校园另类小说区| 91久久精品日日躁夜夜躁欧美| 污片在线观看一区二区| 26uuu亚洲| 一本久久综合亚洲鲁鲁五月天| 91视视频在线直接观看在线看网页在线看 | 不卡视频在线观看| 亚洲国产裸拍裸体视频在线观看乱了| 欧美精品久久99久久在免费线| 久久成人免费日本黄色| 亚洲欧洲av色图| 精品免费99久久| 91在线看国产| 日产欧产美韩系列久久99| 欧美激情一区在线| 欧美日韩一区二区在线观看视频 | 国产一区二区三区日韩| 一区二区三区精品| 久久综合色婷婷| 欧美三级韩国三级日本三斤| 国产精品一二三在| 午夜激情综合网| 亚洲欧美一区二区不卡| 欧美成人乱码一区二区三区| 色欧美88888久久久久久影院| 久久成人综合网| 婷婷综合久久一区二区三区| 国产精品免费久久久久| 日韩欧美自拍偷拍| 91国内精品野花午夜精品| 国产伦精品一区二区三区免费迷 | 91亚洲精品久久久蜜桃| 久久99久久久久久久久久久| 亚洲最大的成人av| 一色桃子久久精品亚洲| 久久亚洲春色中文字幕久久久| 欧美色手机在线观看| 99久久精品免费精品国产| 国内欧美视频一区二区| 日韩影院免费视频| 一区二区视频在线| 国产精品福利影院| 久久精品视频免费观看| 日韩你懂的在线播放| 欧美日韩视频在线观看一区二区三区 | 欧美曰成人黄网| 成人高清av在线| 国产麻豆精品95视频| 天天综合日日夜夜精品| 一区二区三区不卡在线观看 | 久久综合狠狠综合久久综合88 | 日韩精品资源二区在线| 欧美日韩精品二区第二页| 日本韩国一区二区三区| www.亚洲色图| av在线这里只有精品| 成人丝袜18视频在线观看| 高清国产一区二区三区|