• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機RTL8019AS網卡驅動程序

    51單片機RTL8019AS網卡驅動程序

    作者: 時間:2010-08-23 來源:網絡 收藏

      page(0);

      reg0a=0x00;

      reg0b=0x00;

      reg0c=0xE0; //monitor mode (no packet receive)

      reg0d=0xE2; //loop back mode

      //使用0x40-0x4B為的發(fā)送緩沖區(qū),共12頁,剛好可以存儲2個最大的以太網包。

      //使用0x4c-0x7f為的接收緩沖區(qū),共52頁。

      reg01=0x4C; //Pstart 接收緩沖區(qū)范圍

      reg02=0x80; //Pstop

      reg03=0x4C; //BNRY

      reg04=0x40; //TPSR 發(fā)送緩沖區(qū)范圍

      reg07=0xFF;/*清除所有中斷標志位*/

      reg0f=0x00;//IMR disable all interrupt

      reg0e=0xC8; //DCR byte dma 8位dma方式

      page(1); //選擇頁1的寄存器

      reg07=0x4D; //CURR

      reg08=0x00; //MAR0

      reg09=0x41; //MAR1

      reg0a=0x00; //MAR2

      reg0b=0x80; //MAR3

      reg0c=0x00; //MAR4

      reg0d=0x00; //MAR5

      reg0e=0x00; //MAR6

      reg0f=0x00; //MAR7

      initNIC(); //初始化MAC地址和網絡相關參數(shù)

      //將設置成正常的模式,跟外部網絡連接

      page(0);

      reg0c=0xCC; //RCR

      reg0d=0xE0; //TCR

      reg00=0x22; //這時讓芯片開始工作?

      reg07=0xFF; //清除所有中斷標志位

      }

      void send_packet(union netcard *txdnet,unsigned int length)//ne2000發(fā)包子程序

      {//發(fā)送一個數(shù)據(jù)包的命令,長度最小為60字節(jié),最大1514字節(jié)需要發(fā)送的數(shù)據(jù)包要先存放在txdnet緩沖區(qū)

      unsigned char i;

      unsigned int ii;

      page(0);

      if(length60) length=60;

      for(i=0;i3;i++)

      txdnet->etherframe.sourcenodeid[i]=my_ethernet_address.words[i];

      txd_buffer_select=!txd_buffer_select;

      if(txd_buffer_select)

      reg09=0x40 ; //txdwrite highaddress

      else

      reg09=0x46 ; //txdwrite highaddress

      reg08=0x00; //read page address low

      reg0b=length>>8; //read count high

      reg0a=length0xFF; //read count low;

      reg00=0x12; //write dma, page0

      for(ii=4;ii reg10=txdnet->bytes.bytebuf[ii];

      for(i=0;i6;i++){ //最多重發(fā)6次

      for(ii=0;ii1000;ii++) //檢查txp為是否為低

      if((reg000x04)==0) break;

      if((reg040x01)!=0) break; //表示發(fā)送成功

      reg00=0x3E;

    51單片機相關文章:51單片機教程




    評論


    相關推薦

    技術專區(qū)

    關閉
    主站蜘蛛池模板: 湖州市| 南丹县| 淳化县| 同德县| 宁波市| 民权县| 桃园县| 宜君县| 新沂市| 迁西县| 黄陵县| 白沙| 庄浪县| 巴林右旗| 昭通市| 板桥市| 诸暨市| 克拉玛依市| 韩城市| 波密县| 西安市| 北海市| 万荣县| 新平| 平阴县| 兴安盟| 遵义县| 唐海县| 晋江市| 潮安县| 兴仁县| 丰原市| 呼伦贝尔市| 贵阳市| 襄樊市| 新安县| 黄骅市| 东光县| 金华市| 永登县| 隆林|