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

📄 ax88796_8c-source.html

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