⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ax88796_8c-source.html

📁 国外牛人公开的AVR代码
💻 HTML
📖 第 1 页 / 共 3 页
字号:
00480     <span class="comment">// clear remote byte count registers</span>00481     ax88796Write(RBCR0, 0x00);00482     ax88796Write(RBCR1, 0x00);00483     00484     <span class="comment">// if we were transmitting something</span>00485     <span class="keywordflow">if</span>(cmdReg &amp; TXP)00486     {00487         <span class="comment">// check if the transmit completed</span>00488         cmdReg = ax88796Read(ISR);00489         <span class="keywordflow">if</span>((cmdReg &amp; PTX) || (cmdReg &amp; TXE))00490             resend = 0;     <span class="comment">// transmit completed</span>00491         <span class="keywordflow">else</span>00492             resend = 1;     <span class="comment">// transmit was interrupted, must resend</span>00493     }00494     <span class="comment">// switch to loopback mode</span>00495     ax88796Write(TCR, LB0);00496     <span class="comment">// start the interface</span>00497     ax88796Write(CR, (RD2|START));00498     <span class="comment">// set boundary</span>00499     ax88796Write(BNRY, RXSTART_INIT);00500     <span class="comment">// go to page 1</span>00501     ax88796Write(CR, (PS0|RD2|START));00502     <span class="comment">// set current page register</span>00503     ax88796Write(CPR, RXSTART_INIT+1);00504     <span class="comment">// go to page 0</span>00505     ax88796Write(CR, (RD2|START));00506     <span class="comment">// clear the overflow int</span>00507     ax88796Write(ISR, OVW);00508     <span class="comment">// switch to normal (non-loopback mode)</span>00509     ax88796Write(TCR, TCR_INIT);00510 00511     <span class="comment">// if previous transmit was interrupted, then resend</span>00512     <span class="keywordflow">if</span>(resend)00513         ax88796Write(CR, (RD2|TXP|START));00514 00515     <span class="comment">// recovery completed</span>00516 }00517 00518 00519 <span class="preprocessor">#define set_mdc     ax88796Write(MEMR,ax88796Read(MEMR)|0x01);</span>00520 <span class="preprocessor"></span><span class="preprocessor">#define clr_mdc     ax88796Write(MEMR,ax88796Read(MEMR)&amp;0xFE);</span>00521 <span class="preprocessor"></span>00522 <span class="preprocessor">#define mii_clk     set_mdc; clr_mdc;                 </span>00523 <span class="preprocessor"></span>                    00524 <span class="preprocessor">#define set_mdir    ax88796Write(MEMR,ax88796Read(MEMR)|0x02);</span>00525 <span class="preprocessor"></span><span class="preprocessor">#define clr_mdir    ax88796Write(MEMR,ax88796Read(MEMR)&amp;0xFD);</span>00526 <span class="preprocessor"></span>                    00527 <span class="preprocessor">#define set_mdo     ax88796Write(MEMR,ax88796Read(MEMR)|0x08)</span>00528 <span class="preprocessor"></span><span class="preprocessor">#define clr_mdo     ax88796Write(MEMR,ax88796Read(MEMR)&amp;0xF7)</span>00529 <span class="preprocessor"></span>00530 <span class="preprocessor">#define mii_write   clr_mdo; mii_clk;   \</span>00531 <span class="preprocessor">                    set_mdo; mii_clk;   \</span>00532 <span class="preprocessor">                    clr_mdo; mii_clk;   \</span>00533 <span class="preprocessor">                    set_mdo; mii_clk;</span>00534 <span class="preprocessor"></span>00535 <span class="preprocessor">#define mii_read    clr_mdo; mii_clk;   \</span>00536 <span class="preprocessor">                    set_mdo; mii_clk;   \</span>00537 <span class="preprocessor">                    set_mdo; mii_clk;   \</span>00538 <span class="preprocessor">                    clr_mdo; mii_clk;</span>00539 <span class="preprocessor"></span>00540 <span class="preprocessor">#define mii_r_ta    mii_clk;            \</span>00541 <span class="preprocessor"></span>00542 <span class="preprocessor"></span><span class="preprocessor">#define mii_w_ta    set_mdo; mii_clk;   \</span>00543 <span class="preprocessor">                    clr_mdo; mii_clk;</span>00544 <span class="preprocessor"></span>            00545 <span class="keywordtype">void</span> ax88796WriteMii(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> phyad,<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> regad,<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> mii_data)00546 {00547     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> mask8;00548     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>  i,mask16;00549 00550     mii_write;00551  00552     mask8 = 0x10;00553     <span class="keywordflow">for</span>(i=0;i&lt;5;++i)00554     {00555         <span class="keywordflow">if</span>(mask8 &amp; phyad)00556             set_mdo;00557         <span class="keywordflow">else</span>00558             clr_mdo;00559         mii_clk;00560         mask8 &gt;&gt;= 1;     00561     }   00562     mask8 = 0x10;00563     <span class="keywordflow">for</span>(i=0;i&lt;5;++i)00564     {00565         <span class="keywordflow">if</span>(mask8 &amp; regad)00566             set_mdo;00567         <span class="keywordflow">else</span>00568             clr_mdo;00569         mii_clk;00570         mask8 &gt;&gt;= 1;     00571     }                       00572     mii_w_ta;00573  00574     mask16 = 0x8000;00575     <span class="keywordflow">for</span>(i=0;i&lt;16;++i)00576     {00577         <span class="keywordflow">if</span>(mask16 &amp; mii_data)00578             set_mdo;00579         <span class="keywordflow">else</span>00580             clr_mdo;00581         mii_clk;     00582         mask16 &gt;&gt;= 1;    00583     }               00584 }00585  00586 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> ax88796ReadMii(<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> phyad,<span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> regad)00587 {00588     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> mask8,i;00589     <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>  mask16,result16;00590  00591     mii_read;00592 00593     mask8 = 0x10;00594     <span class="keywordflow">for</span>(i=0;i&lt;5;++i)00595     {00596         <span class="keywordflow">if</span>(mask8 &amp; phyad)00597             set_mdo;00598         <span class="keywordflow">else</span>00599             clr_mdo;00600         mii_clk;     00601         mask8 &gt;&gt;= 1;00602     }00603     mask8 = 0x10;00604     <span class="keywordflow">for</span>(i=0;i&lt;5;++i)00605     {00606         <span class="keywordflow">if</span>(mask8 &amp; regad)00607             set_mdo;00608         <span class="keywordflow">else</span>00609             clr_mdo;00610         mii_clk;00611         mask8 &gt;&gt;= 1;00612     }00613             00614     mii_r_ta;00615  00616     mask16 = 0x8000;00617     result16 = 0x0000;00618     <span class="keywordflow">for</span>(i=0;i&lt;16;++i)00619     {00620         mii_clk;00621         <span class="keywordflow">if</span>(ax88796Read(MEMR) &amp; 0x04)00622         {00623             result16 |= mask16;00624         }00625         <span class="keywordflow">else</span>00626         {00627             <span class="keyword">asm</span> <span class="keyword">volatile</span> (<span class="stringliteral">"nop"</span>);00628             <span class="keywordflow">break</span>;00629         }00630         mask16 &gt;&gt;= 1;00631     }00632     <span class="keywordflow">return</span> result16;00633 }00634 00635 00636 <span class="keywordtype">void</span> ax88796RegDump(<span class="keywordtype">void</span>)00637 {00638     <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> result;00639     result = ax88796Read(TR);00640     00641     rprintf(<span class="stringliteral">"Media State: "</span>);00642     <span class="keywordflow">if</span>(!(result &amp; AUTOD))00643         rprintf(<span class="stringliteral">"Autonegotiation\r\n"</span>);00644     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(result &amp; RST_B)00645         rprintf(<span class="stringliteral">"PHY in Reset   \r\n"</span>);00646     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!(result &amp; RST_10B))00647         rprintf(<span class="stringliteral">"10BASE-T       \r\n"</span>);00648     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(!(result &amp; RST_TXB))00649         rprintf(<span class="stringliteral">"100BASE-T      \r\n"</span>);00650                 00651     <span class="comment">//rprintf("TR regsiter      : %x\r\n",result);</span>00652     <span class="comment">//result = read_mii(0x10,0);</span>00653     <span class="comment">//rprintf("MII regsiter 0x10: %x\r\n",result);</span>00654 00655     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"Page0: CR  BNRY PSR PST ISR TSR RSR MMR TR  GPI\r\n"</span>);00656     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"       "</span>);00657     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(CR));00658     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00659     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(BNRY));00660     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"   "</span>);00661     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(PSTART));00662     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00663     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(PSTOP));00664     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00665     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(ISR));00666     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00667     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(TSR));00668     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00669     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(RSR));00670     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00671     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(MEMR));00672     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00673     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(TR));00674     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00675     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(GPI));00676     <a class="code" href="group__rprintf.html#ga5">rprintfCRLF</a>();00677 00678     ax88796Write(CR,ax88796Read(CR)|PS0);00679 00680     rprintf(<span class="stringliteral">"Page1: CR  PAR    CPR\r\n"</span>);00681     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"       "</span>);00682     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(CR));00683     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">"  "</span>);00684     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR0));00685     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR1));00686     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR2));00687     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR3));00688     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR4));00689     <a class="code" href="group__rprintf.html#ga1">rprintfChar</a>(ax88796Read(PAR5));00690     <a class="code" href="group__rprintf.html#ga15">rprintfProgStrM</a>(<span class="stringliteral">" "</span>);00691     <a class="code" href="group__rprintf.html#ga7">rprintfu08</a>(ax88796Read(CPR));00692     00693     ax88796Write(CR,ax88796Read(CR)&amp;~PS0);00694 00695     delay_ms(25);00696 }00697 00698 <span class="comment">/*</span>00699 <span class="comment">unsigned char ax88796ReceiveEmpty(void)</span>00700 <span class="comment">{</span>00701 <span class="comment">    unsigned char temp;</span>00702 <span class="comment"></span>00703 <span class="comment">    // read CPR from page 1</span>00704 <span class="comment">    ax88796Write(CR,0x62);</span>00705 <span class="comment">    temp = ax88796Read(CPR);</span>00706 <span class="comment">    </span>00707 <span class="comment">    // return to page 0</span>00708 <span class="comment">    ax88796Write(CR,0x22);</span>00709 <span class="comment">    </span>00710 <span class="comment">    return ( ax88796Read(BNRY) == temp );</span>00711 <span class="comment">    </span>00712 <span class="comment">}*/</span>00713 00714 00715 00716 </pre></div><hr size="1"><address style="align: right;"><small>Generated on Mon Oct 24 16:03:54 2005 for Procyon AVRlib by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.2 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -