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

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

?? rtl8019as.c

?? 用AVR單片機和RTL8019實現TCP/IP協議.支持ARP,PING,UDP,TCP,HTML網頁顯示等功能.
?? C
字號:
//**********************************
//*版本: Test 1.0
//*作者: XUGUOHONG
//*E-MAIL: KK20Y@YAHOO.COM.CN
//*WEBSITE:microdesign.000webhost.com
//**********************************

#include <rtl8019as.h>
#include <iom162v.h>
//**********************************
//*  系統 MAC地址設定(根據需要修正)
//**********************************
unsigned char SYSMAC[6]={0X00,0X11,0X22,0X33,0X44,0X55};
//**********************************
//*  系統 IP地址設定(根據需要修正)
//**********************************
unsigned char SYSIP[4]={192,168,0,8};

void rtl8019as_init(void);
void int0_init(void);
void int0_neton(void);
void getpacket(void);
void sendpacket(unsigned int);

//*************************
//  RTL8019AS初始化
//*************************
void rtl8019as_init(void)
{
 unsigned char temp;
 rtl8019_rst( );                           // 硬件復位
 write_8019(RSTPORT,read_8019(RSTPORT));   // 軟件復位
 delay_ms(20);                             // 復位等待建立
 if( read_8019(ISR)&0b10000000==0)
  {
                                           // 硬件故障處理
  }
 write_8019(CR,0X21);                      // 停止NIC,退出DMA,PAGE0
 delay_ms(20);                             // 等待
 write_8019(DCR,0X58);                     // 數據配置寄存器,
 write_8019(RBCR0,0X00);                   // 遠端DMA字節計數寄存器0
 write_8019(RBCR1,0X00);                   // 遠端DMA字節計數寄存器1
 write_8019(RCR,0X04);                     // 接收配置寄存器,
 //RING BUFFER中的地址分配
 //每頁 256 BYTE
 //最大幀 1518 BYTE 0X05EE
 //TPSR發送起始地址:0x4000
 //      + 0x05EE =  0X45EE
 //PSTART頁起始地址:0X4600
 //PSTOP頁結束地址:  0X6000
 write_8019(TPSR,0X40);                    // 數據包發送開始頁地址
 write_8019(TCR,0X02);                     // 發送配置寄存器,
 write_8019(PSTART,0X46);                  // 
 write_8019(BNRY,0X46);                    //
 write_8019(PSTOP,0X60);                   //
 write_8019(CR,0X61);                      // 選擇第2頁
 delay_ms(2);
 write_8019(CURR,0X46);
 for(temp=0;temp<6;temp++)
 write_8019(PAR0+temp,SYSMAC[temp]);       // 寫入MAC地址
 write_8019(CR,0X21);
 delay_ms(20);
 write_8019(CR,0X22);
 write_8019(ISR,0xFF);                     // 清除中斷標志位
 write_8019(IMR,0x11);                     // 中斷屏蔽寄存器,置"1"允許相應的位
 write_8019(TCR,0x00);
}

//****************************
//       中斷初始化
//****************************
void int0_init()
{
 MCUCR|=(0<<ISC01)|(1<<ISC00);
 GICR|=(1<<INT0);
 asm("sei");
}

//****************************
//       中斷處理子程序
//1.中斷開始說明有數據包接收
//2.首先,寫入讀命令
//3.讀取前四個字節來計算包長度
//4.根據長度來循環讀出數據
//5.在讀取的過程中可能在有數據送入,而此時檢測不到
//6.讀取當前數據后,比較BNRY和CURR判斷是否已將所有數據讀出
//7.未讀完,繼續讀取
//8.已讀完,將BNRY和CURR恢復初值
//****************************
#pragma interrupt_handler int0_neton:iv_INT0
void int0_neton(void)
{
 unsigned char temp;
 unsigned char datah;
 unsigned char datal;
 asm("cli");                                 // 關閉中斷                 
 temp= read_8019(ISR);   
 if( (temp&0b00010000)==0b00010000 )        // 是否OVERRUN
 {
   //overrun();                              // OVERRUN處理
    rtl8019as_init( );
    asm("sei");
 }
 else if( (temp&0b00000001)==0b00000001 )        // 數據包是否有錯
 {
   getpacket();                              // 接收數據包
 }
 
 // 檢測是否在8019緩存中還有其他數據包存在
 // 必須考慮在中斷處理中有其他網絡數據包接
 // 入而未檢測到
 datah=read_8019(BNRY);                    // 檢測BNRY是否等于CURR
 write_8019(CR,0x62);                      // BNRY=CURR數據已讀完成
 datal=read_8019(CURR);
 write_8019(CR,0x22);
 while(datah<datal)   
 {                       
 getpacket();                              // BNRY!=CURR數據未讀完,繼續讀 
 datah=read_8019(BNRY);                    // 檢測BNRY是否等于CURR
 write_8019(CR,0x62);                      // BNRY=CURR數據已讀完成
 datal=read_8019(CURR);
 write_8019(CR,0x22);
 }
 
 write_8019(BNRY,0X46);                    // 所有數據讀完后,歸位
 write_8019(CR,0X61);                      // 選擇第2頁
 write_8019(CURR,0X46);                    // 所有數據讀完后,歸位
 write_8019(CR,0X22);
 write_8019(ISR,0xFF); 
 asm("sei");
}

//************************************
//      數據包接收子程序
//1. 接收到一個數據包
//2. 處理一個數據包
//3. ***數據包在這里不適合用嵌套來完成檢測和讀取
//   ***因為這樣會占用大量的RAM空間,從而使堆棧益出.
//************************************
void getpacket(void)
{
 unsigned char temp;
 unsigned int counter;
 unsigned char datah;
 unsigned char datal;
 unsigned int RXLEN;                       // 接收數據長度
 unsigned char PAGEHEADER[4];              // 接收數據,頭四位數據
 write_8019(CR,0X1A);                      // 發送SEND PACKET命令來接受數據
 for(temp=0;temp<4;temp++)                 // 先讀出頭四位數據來計算數據包長度
 {
  PAGEHEADER[temp]=read_8019(RDMAPORT);    // 頭四個數據先讀出
 }
 RXLEN=PAGEHEADER[PACKETLENH];             // 計算數據包大小
 RXLEN=RXLEN<<8;
 RXLEN=RXLEN+PAGEHEADER[PACKETLENL];
 
 for(counter=0;counter<RXLEN;counter++)    // 將數據讀入SRAM 62256
 {                                         // 從SRAM地址0X0000開始
  write_62256(counter,read_8019(RDMAPORT));   // 大小64-1518Byte
  //uart_send(read_62256(counter));
 }
 
 temp= read_8019(ISR); 
 while((temp&0b01000000)==0b00000000)       // 檢測是否DMA完成
 {
  temp= read_8019(ISR);
 }
 
 //==================================================================
 //===對收到的數據包進行判斷選擇處理===   // 與協議上層接口
 datah=read_62256(12);                    // 數據包類型判斷
 datal=read_62256(13);
 if( (datah==0x08)&&(datal==0x00) )
 {
   ip();
 }
 else if( (datah==0x08)&(datal==0x06) )
 {
   arp();                                // 已完成
 }
 else if( (datah==0x80)&(datal==0x35) )
 {
   //rarp();
 }
 else if( (datah==0x86)&(datal==0xdd) )
 {
   //ipv6();
 }
 else 
 {
  ;
 }
 //================================================================== 
}

//****************************
//      數據包發送子程序
//****************************
void sendpacket(unsigned int TXLEN)
{
 unsigned char temp;
 unsigned int counter;
 write_8019(CR,0X22);
 write_8019(ISR,0xFF);                     // 清除中斷標志位  
 write_8019(RSAR0,0X00);                   // MCU寫入buffer ring 的起始地址
 write_8019(RSAR1,0X40);
 write_8019(ISR,0xFF);                     // 清除中斷標志位
 write_8019(RBCR0,TXLEN);                  // 寫入數計數,MCU TO 8019 COUNTER
 write_8019(RBCR1,TXLEN>>8);    
 write_8019(CR,0X12);                      // 執行REMOTEWRTIE指令
 for(counter=0;counter<TXLEN;counter++)
{
 write_8019(RDMAPORT,read_62256(counter));
 //uart_send(read_62256(counter));
}  
 
 temp= read_8019(ISR); 
 while(temp&0b01000000==0b00000000)        // 等待DMA完成
     ;    
 write_8019(ISR,0xFF);                     // 清除中斷標志位                
 write_8019(TBCR0,TXLEN);                  // 寫入數計數,8019 TO NET COUNTER
 write_8019(TBCR1,TXLEN>>8); 
 write_8019(CR,0X24);                      // 開始MCU TO NET 發送
 temp= read_8019(ISR);                     // 等待數據發送完成
 while(temp&0b00000010==0b00000000)        // 等待數據發送無誤結束
 temp= read_8019(ISR);                     // 
 write_8019(ISR,0xFF);                     // 清除中斷標志位     
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
岛国av在线一区| 国产在线看一区| 国产精品美日韩| 久久精品一区二区| 久久精品无码一区二区三区| 亚洲精品一区二区三区蜜桃下载| 日韩欧美一卡二卡| 精品久久久久久久久久久久久久久久久| 91精品一区二区三区在线观看| 欧美日韩中文精品| 欧美一区二区国产| 欧美成人乱码一区二区三区| 久久一区二区三区国产精品| 国产区在线观看成人精品| 日本一区二区视频在线观看| 国产精品国产三级国产三级人妇| 国产精品久久久久久久浪潮网站| 综合亚洲深深色噜噜狠狠网站| 亚洲日本一区二区| 五月天激情小说综合| 久草中文综合在线| 成人毛片视频在线观看| 色综合中文字幕| 在线成人免费视频| 久久久国产一区二区三区四区小说| 国产欧美1区2区3区| 一区二区三区四区精品在线视频| 亚洲成人在线网站| 国产麻豆精品久久一二三| 97精品国产露脸对白| 欧美日韩美女一区二区| 精品国产3级a| 亚洲欧美国产77777| 免费看黄色91| 91丝袜国产在线播放| 日韩一区二区三区精品视频| 久久精品人人做| 一区二区三区视频在线观看| 狠狠色2019综合网| 在线观看区一区二| 国产日韩欧美精品综合| 亚洲18色成人| 成人成人成人在线视频| 欧美一区二区女人| 亚洲免费观看视频| 国产一区视频在线看| 欧美在线免费播放| 国产精品情趣视频| 精品中文字幕一区二区| 在线免费av一区| 国产日韩欧美一区二区三区综合| 婷婷中文字幕一区三区| 成人毛片在线观看| 久久久国产综合精品女国产盗摄| 亚洲.国产.中文慕字在线| av亚洲精华国产精华| 久久综合久久综合亚洲| 日本欧美一区二区| 精品视频1区2区| 综合色天天鬼久久鬼色| 成人三级伦理片| 久久久久久久久蜜桃| 麻豆成人免费电影| 在线不卡的av| 亚洲一区中文在线| 日本高清不卡视频| 亚洲欧美日韩久久| 99久久国产免费看| 1000精品久久久久久久久| 成人三级伦理片| 国产精品人妖ts系列视频| 丰满亚洲少妇av| 欧美国产一区二区| 国产+成+人+亚洲欧洲自线| 久久久久99精品国产片| 国产精品自拍毛片| 久久你懂得1024| 国产精品自拍av| 国产精品网曝门| 不卡av在线网| 亚洲天堂福利av| 在线观看视频一区二区 | 精品免费日韩av| 免费精品视频在线| 久久综合99re88久久爱| 国产一区二区三区四区在线观看| 久久亚洲综合色一区二区三区 | 亚洲丝袜精品丝袜在线| 色综合天天天天做夜夜夜夜做| 成人欧美一区二区三区在线播放| 99久久久无码国产精品| 亚洲综合一区二区三区| 欧美日韩国产经典色站一区二区三区| 日韩国产一区二| 精品少妇一区二区三区视频免付费| 看电影不卡的网站| 国产精品视频免费| 一本久久a久久精品亚洲| 偷拍自拍另类欧美| 26uuu精品一区二区| 成人精品鲁一区一区二区| 亚洲精品成人a在线观看| 欧美乱妇一区二区三区不卡视频| 美女在线视频一区| 国产精品久久久久三级| 精品国产乱码91久久久久久网站| 粉嫩av亚洲一区二区图片| 一区二区三区视频在线看| 日韩一区二区精品| 成人黄色av网站在线| 五月天一区二区三区| 久久精品男人天堂av| 欧美三级中文字| 国产馆精品极品| 日韩在线一区二区三区| 欧美激情一区二区三区蜜桃视频| 欧美日韩一区三区| 国产高清精品久久久久| 亚洲bdsm女犯bdsm网站| 中文字幕精品—区二区四季| 欧美肥妇bbw| 99热99精品| 国产酒店精品激情| 蜜臀国产一区二区三区在线播放| 中文字幕一区二区三区在线不卡| 日韩一级二级三级精品视频| www.色精品| 国产成人在线观看免费网站| 肉丝袜脚交视频一区二区| 国产精品黄色在线观看| 欧美精品一区视频| 欧美剧情电影在线观看完整版免费励志电影 | 韩国欧美国产1区| 亚洲一卡二卡三卡四卡无卡久久| 欧美经典一区二区三区| 日韩一区二区三| 欧美久久久一区| 欧美综合视频在线观看| 99久久久无码国产精品| 国产69精品久久777的优势| 精品一区二区三区免费观看| 亚洲成a人片在线不卡一二三区 | 亚洲一区二区影院| 亚洲三级在线免费观看| 国产女主播一区| 国产欧美一区二区精品久导航| 日韩美女在线视频| 欧美一区二区三级| 欧美电影在线免费观看| 欧美在线观看一区二区| 欧洲人成人精品| 欧美这里有精品| 欧美视频一区在线观看| 在线看日韩精品电影| 在线免费观看日本欧美| 欧洲亚洲国产日韩| 欧美日本一道本在线视频| 精品视频免费在线| 欧美一区二区三区免费视频| 56国语精品自产拍在线观看| 91精品婷婷国产综合久久性色 | 日韩三级高清在线| 欧美成人免费网站| 久久综合久久99| 中文字幕成人网| 亚洲欧美区自拍先锋| 一区二区三区中文字幕精品精品| 亚洲精品欧美综合四区| 香蕉久久夜色精品国产使用方法| 亚洲高清免费观看| 免费视频最近日韩| 国产乱子轮精品视频| 丰满亚洲少妇av| 在线观看精品一区| 制服丝袜亚洲播放| 久久综合九色综合欧美亚洲| 中文字幕在线观看不卡视频| 樱花影视一区二区| 蜜臀va亚洲va欧美va天堂 | 日日夜夜免费精品| 久久激情五月婷婷| 成人理论电影网| 欧美日韩成人综合天天影院| 精品第一国产综合精品aⅴ| 欧美国产精品v| 亚洲一二三区不卡| 国产精品资源网| 色哟哟国产精品免费观看| 日韩三级在线观看| 亚洲色图第一区| 欧美aa在线视频| 91在线porny国产在线看| 制服.丝袜.亚洲.另类.中文| 久久久精品免费免费| 亚洲h动漫在线| 成人免费看的视频| 欧美一区二区三区男人的天堂| 国产精品免费免费| 国产做a爰片久久毛片| aaa国产一区|