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

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

?? rtl8019.c

?? avr版本的uip(一個超小型的TCPIP棧,支持tcpudparpicmp.
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "rtl8019.h"

/*****************************************************************************
*  Module Name:       Realtek 8019AS Driver
*  
*  Created By:        Louis Beaudoin (www.embedded-creations.com)
*
*  Original Release:  September 21, 2002 
*
*  Module Description:  
*  Provides functions to initialize the Realtek 8019AS, and send and retreive
*  packets
*
*  November 16, 2003 - Louis Beaudoin
*    The rtl8019Write and Read functions/macros were changed to support
*      three methods of communcating with the NIC
*    Interfacing with the AVR ports changed from sbi/cbi/etc functions
*      to direct port names
*    Renamed functions to be more consistant with the two NIC drivers
*    Overrun function now retransmits if resend is set (thanks Krzysztof)
* 
*  November 15, 2002 - Louis Beaudoin
*    processRTL8019Interrupt() - bit mask mistake fixed
*
*  November 8, 2003 - Louis Beaudoin
*    Changed delay library function calls
*
*  September 30, 2002 - Louis Beaudoin
*    Receive functions modified to handle errors encountered when receiving a
*      fast data stream.  Functions now manually retreive data instead of
*      using the send packet command.  Interface improved by checking for
*      overruns and data in the buffer internally.
*    Corrected the overrun function - overrun flag was not reset after overrun
*    Added support for the Imagecraft Compiler
*    Added support to communicate with the NIC using general I/O ports
*
*****************************************************************************/


/*****************************************************************************
*  rtl8019Write( RTL_ADDRESS, RTL_DATA )
*  Args:        1. unsigned char RTL_ADDRESS - register offset of RTL register
*               2. unsigned char RTL_DATA - data to write to register
*  Created By:  Louis Beaudoin
*  Date:        September 21, 2002
*  Description: Writes byte to RTL8019 register.
*
*  Notes - If using the External SRAM Interface, performs a write to
*            address MEMORY_MAPPED_RTL8019_OFFSET + (RTL_ADDRESS<<8)
*            The address is sent in the non-multiplxed upper address port so
*            no latch is required.
*
*          If using general I/O ports, the data port is left in the input
*            state with pullups enabled
*
*****************************************************************************/
#if NIC_CONNECTION == MEMORY_MAPPED_HIGHADDR
#define rtl8019Write(RTL_ADDRESS,RTL_DATA) do{ *(volatile unsigned char *) \
                             (MEMORY_MAPPED_RTL8019_OFFSET \
                             + (((unsigned char)(RTL_ADDRESS)) << 8)) = \
                             (unsigned char)(RTL_DATA); } while(0)

#endif
                             
#if NIC_CONNECTION == MEMORY_MAPPED
#define rtl8019Write(RTL_ADDRESS,RTL_DATA) do{ *(volatile unsigned char *) \
                             (MEMORY_MAPPED_RTL8019_OFFSET \
                             + (unsigned char)(RTL_ADDRESS)) = \
                             (unsigned char)(RTL_DATA); } while(0)

#endif

#if NIC_CONNECTION == GENERAL_IO

void rtl8019Write(unsigned char address, unsigned char data)
{
    // assert the address, leaving the non-address pins intact
    address |= (RTL8019_ADDRESS_PORT & ~RTL8019_ADDRESS_MASK);
    RTL8019_ADDRESS_PORT = address;
    
	// set data bus as output and place data on bus
    RTL8019_DATA_DDR = 0xFF;
    RTL8019_DATA_PORT = data;
    
	// toggle write pin
    RTL8019_CONTROL_PORT &= ~_BV(RTL8019_CONTROL_WRITEPIN);
    nop();
    RTL8019_CONTROL_PORT |= _BV(RTL8019_CONTROL_WRITEPIN);

    
	// set data port back to input with pullups enabled
    RTL8019_DATA_DDR = 0x00;
    RTL8019_DATA_PORT = 0xFF;
}

#endif

/*****************************************************************************
*  rtl8019Read(RTL_ADDRESS)
*  Args:        unsigned char RTL_ADDRESS - register offset of RTL register
*  Created By:  Louis Beaudoin
*  Date:        September 21, 2002
*  Description: Reads byte from RTL8019 register
*
*  Notes - If using the External SRAM Interface, performs a read from
*            address MEMORY_MAPPED_RTL8019_OFFSET + (RTL_ADDRESS<<8)
*            The address is sent in the non-multiplxed upper address port so
*            no latch is required.
*
*          If using general I/O ports, the data port is assumed to already be
*            an input, and is left as an input port when done
*
*****************************************************************************/
#if NIC_CONNECTION == MEMORY_MAPPED_HIGHADDR
#define rtl8019Read(RTL_ADDRESS) (*(volatile unsigned char *) \
                       (MEMORY_MAPPED_RTL8019_OFFSET \
                       + (((unsigned char)(RTL_ADDRESS)) << 8)) )
#endif
                             
#if NIC_CONNECTION == MEMORY_MAPPED

#define rtl8019Read(RTL_ADDRESS) (*(volatile unsigned char *) \
                       (MEMORY_MAPPED_RTL8019_OFFSET \
                       + (unsigned char)(RTL_ADDRESS)) )
#endif

#if NIC_CONNECTION == GENERAL_IO

unsigned char rtl8019Read(unsigned char address)
{
    unsigned char byte;
   
    // assert the address, leaving the non-address pins intact
    address |= (RTL8019_ADDRESS_PORT & ~RTL8019_ADDRESS_MASK);
    RTL8019_ADDRESS_PORT = address;
   
    // assert read
    RTL8019_CONTROL_PORT &= ~_BV(RTL8019_CONTROL_READPIN);
    nop();
   
    // read in the data
    byte = RTL8019_DATA_PIN;

    // negate read
    RTL8019_CONTROL_PORT |= _BV(RTL8019_CONTROL_READPIN);

    return byte;
}

#endif                       



/*****************************************************************************
*  rtl8019SetupPorts(void);
*
*  Created By:  Louis Beaudoin
*  Date:        September 21, 2002
*  Description: Sets up the ports used for communication with the RTL8019 NIC
*                 (data bus, address bus, read, write, and reset)
*****************************************************************************/
void rtl8019SetupPorts(void)
{

#if NIC_CONNECTION == GENERAL_IO

    // make the address port output
	RTL8019_ADDRESS_DDR = RTL8019_ADDRESS_MASK;
    
    // make the data port input with pull-ups
    RTL8019_DATA_PORT = 0xFF;

	// make the control port read and write pins outputs and asserted
	RTL8019_CONTROL_DDR |= _BV(RTL8019_CONTROL_READPIN);
    RTL8019_CONTROL_DDR |= _BV(RTL8019_CONTROL_WRITEPIN);
	          
	RTL8019_CONTROL_PORT |= _BV(RTL8019_CONTROL_READPIN);
	RTL8019_CONTROL_PORT |= _BV(RTL8019_CONTROL_WRITEPIN);

#else

  	// enable external SRAM interface - no wait states
    MCUCR |= _BV(SRE);

#endif

	// enable output pin for Resetting the RTL8019
	RTL8019_RESET_DDR |= _BV(RTL8019_RESET_PIN);
}



/*****************************************************************************
*  HARD_RESET_RTL8019()
*
*  Created By:  Louis Beaudoin
*  Date:        September 21, 2002
*  Description: Simply toggles the pin that resets the NIC
*****************************************************************************/
#define HARD_RESET_RTL8019() do{ RTL8019_RESET_PORT |= _BV(RTL8019_RESET_PIN);\
                                delay_ms(10); \
                                RTL8019_RESET_PORT &= ~_BV(RTL8019_RESET_PIN);}\
                                while(0)



/*****************************************************************************
*  rtl8019Overrun(void);
*
*  Created By:  Louis Beaudoin
*  Date:        September 21, 2002
*  Description: "Canned" receive buffer overrun function originally from
*                 a National Semiconductor appnote
*  Notes:       This function must be called before retreiving packets from
*                 the NIC if there is a buffer overrun
*****************************************************************************/
void rtl8019Overrun(void);




//******************************************************************
//*	REALTEK CONTROL REGISTER OFFSETS
//*   All offsets in Page 0 unless otherwise specified
//*	  All functions accessing CR must leave CR in page 0 upon exit
//******************************************************************
#define CR		 	0x00
#define PSTART		0x01
#define PAR0      	0x01    // Page 1
#define CR9346    	0x01    // Page 3
#define PSTOP		0x02
#define BNRY		0x03
#define TSR			0x04
#define TPSR		0x04
#define TBCR0		0x05
#define NCR			0x05
#define TBCR1		0x06
#define ISR			0x07
#define CURR		0x07   // Page 1
#define RSAR0		0x08
#define CRDA0		0x08
#define RSAR1		0x09
#define CRDA1		0x09
#define RBCR0		0x0A
#define RBCR1		0x0B
#define RSR			0x0C
#define RCR			0x0C
#define TCR			0x0D
#define CNTR0		0x0D
#define DCR			0x0E
#define CNTR1		0x0E
#define IMR			0x0F
#define CNTR2		0x0F
#define RDMAPORT  	0x10
#define RSTPORT   	0x18
#define CONFIG2     0x05    // page 3
#define CONFIG3     0x06    // page 3
#define RTL_EECR        0x01    // page 3



/*****************************************************************************
*
* RTL ISR Register Bits
*
*****************************************************************************/
#define ISR_RST	7
#define ISR_OVW 4
#define ISR_PRX 0
#define ISR_RDC 6
#define ISR_PTX 1


/*****************************************************************************
*
*  RTL Register Initialization Values
*
*****************************************************************************/
// RCR : accept broadcast packets and packets destined to this MAC
//         drop short frames and receive errors
#define RCR_INIT		0x04

// TCR : default transmit operation - CRC is generated 
#define TCR_INIT		0x00

// DCR : allows send packet to be used for packet retreival
//         FIFO threshold: 8-bits (works)
//         8-bit transfer mode
#define DCR_INIT		0x58

// IMR : interrupt enabled for receive and overrun events
#define IMR_INIT		0x11

// buffer boundaries - transmit has 6 256-byte pages
//   receive has 26 256-byte pages

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产伦一区二区三区观看体验 | 久久久精品综合| 国产精品免费久久| 日本中文字幕一区二区有限公司| 国产成人av电影在线播放| 欧美二区在线观看| 国产精品久久三| 国产麻豆成人精品| 欧美一区二区在线播放| 亚洲永久免费视频| 99r精品视频| 国产拍欧美日韩视频二区| 日本sm残虐另类| 在线看国产一区| 专区另类欧美日韩| 成人免费毛片app| 久久久99久久| 韩国女主播成人在线| 欧美一区二区三区视频在线| 亚洲影视在线播放| 欧美在线视频全部完| 综合精品久久久| 99热精品国产| 亚洲免费伊人电影| 在线视频一区二区三| 亚洲一区二区三区精品在线| 97精品国产97久久久久久久久久久久| 久久嫩草精品久久久精品| 国模少妇一区二区三区| 精品国偷自产国产一区| 国产在线麻豆精品观看| 欧美v亚洲v综合ⅴ国产v| 久久精品久久精品| 2024国产精品| 成人一级黄色片| 国产喂奶挤奶一区二区三区| 国产盗摄视频一区二区三区| 久久精品夜色噜噜亚洲a∨| 国产一区美女在线| 国产精品免费网站在线观看| 国产suv一区二区三区88区| 国产精品色噜噜| 91久久免费观看| 石原莉奈一区二区三区在线观看 | 国产69精品久久久久毛片| 久久久99免费| 91美女在线观看| 午夜精品一区二区三区电影天堂| 91麻豆精品国产91久久久| 麻豆一区二区99久久久久| 久久久噜噜噜久久中文字幕色伊伊| 国产剧情av麻豆香蕉精品| 亚洲欧洲日韩综合一区二区| 在线免费精品视频| 美女在线观看视频一区二区| 久久久久久**毛片大全| 91社区在线播放| 首页亚洲欧美制服丝腿| 久久久不卡网国产精品二区| 在线观看91视频| 久久99最新地址| 中文字幕在线观看不卡| 欧美性大战xxxxx久久久| 久久se精品一区精品二区| 国产精品女主播在线观看| 欧美日本一道本在线视频| 国产福利一区在线观看| 午夜日韩在线电影| 亚洲欧洲成人精品av97| 欧美日韩午夜精品| 风间由美一区二区三区在线观看| 亚洲超碰精品一区二区| 国产亚洲午夜高清国产拍精品| 色婷婷久久综合| 国产高清不卡二三区| 亚洲h精品动漫在线观看| 中文字幕不卡在线播放| 日韩一级片网址| 99re66热这里只有精品3直播 | 理论电影国产精品| 亚洲欧美另类小说| 精品国产一区二区三区不卡| 色就色 综合激情| 岛国精品在线播放| 男女男精品网站| 亚洲大型综合色站| 一色桃子久久精品亚洲| 久久久久国色av免费看影院| 欧美日韩国产另类不卡| 91毛片在线观看| 成人综合婷婷国产精品久久蜜臀| 麻豆专区一区二区三区四区五区| 一区二区三区日韩欧美| 中文字幕中文字幕一区| 久久久久久久久97黄色工厂| 欧美丰满嫩嫩电影| 欧美三片在线视频观看| 色噜噜狠狠一区二区三区果冻| 国产91精品露脸国语对白| 国产乱妇无码大片在线观看| 久久99国内精品| 久久99久久久欧美国产| 日韩不卡一二三区| 亚洲图片欧美色图| 亚洲国产精品尤物yw在线观看| 国产精品激情偷乱一区二区∴| 久久久精品免费免费| 久久综合色播五月| 国产日本欧洲亚洲| 国产日韩精品视频一区| 国产婷婷色一区二区三区在线| 26uuu精品一区二区在线观看| 欧美一区二区三区爱爱| 91精品婷婷国产综合久久竹菊| 欧美视频日韩视频| 欧美日韩国产系列| 欧美日本韩国一区二区三区视频| 欧美性色综合网| 911精品国产一区二区在线| 欧美区在线观看| 日韩三级.com| 精品久久久久久久久久久久久久久 | 亚洲永久免费av| 视频一区免费在线观看| 蜜臀av一区二区在线免费观看| 久久99精品一区二区三区| 国产一区二区免费视频| proumb性欧美在线观看| 色视频欧美一区二区三区| 欧美天天综合网| 欧美xxxx老人做受| 亚洲国产高清不卡| 一区二区激情小说| 蜜臀av亚洲一区中文字幕| 国产精品综合二区| 色综合久久综合网97色综合 | 欧美美女黄视频| 日韩一区二区三区免费看| 欧美精品一区二区三区在线 | 蜜臀av一区二区三区| 国产一区二区视频在线播放| 成人免费高清视频在线观看| 色婷婷激情综合| 欧美一卡二卡三卡四卡| 国产女人18毛片水真多成人如厕| 亚洲女人的天堂| 久久99国产精品久久| 99免费精品视频| 欧美tickling网站挠脚心| 国产精品久久久久久久久久免费看 | 欧美一区二区免费视频| xfplay精品久久| 亚洲日本一区二区三区| 麻豆专区一区二区三区四区五区| 成人一区二区三区中文字幕| 制服视频三区第一页精品| 国产三区在线成人av| 亚洲国产日产av| eeuss鲁片一区二区三区 | 中文字幕一区二区三区不卡在线| 亚洲成人一区二区| 成人a区在线观看| 日韩欧美亚洲另类制服综合在线| 国产精品久久久久久久久图文区| 日本不卡一区二区| 93久久精品日日躁夜夜躁欧美| 欧美三级三级三级爽爽爽| 国产精品欧美一区喷水| 美女视频免费一区| 欧美亚一区二区| 中文字幕亚洲精品在线观看| 精品无码三级在线观看视频| 欧美亚洲动漫另类| 亚洲人成7777| 成人app网站| 国产日韩欧美电影| 国产精品一区二区三区四区| 欧美精品精品一区| 亚洲综合在线五月| 99久久久国产精品免费蜜臀| 精品成a人在线观看| 日韩精品国产欧美| 欧美三级一区二区| 亚洲一区二区欧美| 色婷婷精品大视频在线蜜桃视频| 国产精品家庭影院| fc2成人免费人成在线观看播放| 亚洲精品在线观看网站| 日韩av一二三| 欧美一区二区在线免费观看| 午夜精品免费在线观看| 欧美中文字幕一区二区三区 | 国产精品99久久久久久有的能看| 欧美一区二区三区的| 亚洲国产日韩精品| 欧美日本在线看| 午夜电影网亚洲视频| 4438x亚洲最大成人网| 麻豆国产91在线播放| 欧美一区二区网站|