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

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

?? 143612_906089.htm

?? 本例程是描述了通過PIC33FXXX單片機的I2C接口實現對單片機外圍EEPROM的訪問
?? HTM
?? 第 1 頁 / 共 5 頁
字號:
                    IC采購</strong></font> <script language=javascript>
 document.form_search.keyword.focus();
</script></td>
                </tr>
              </form>
            </table></td>
          <td width="1%" align="right" valign="top" background="/2008images/bg03.gif"><img src="http://download.ic37.com/2008images/02.gif" width="6" height="83"></td>
        </tr>
      </table></td>
  </tr>
</table>
</td>
  </tr>
</table>
<table width="990" border="0" align="center" cellpadding="0" cellspacing="0">
  <tr> 
    <td height="3" colspan="3"></td>
  </tr>
  <tr bgcolor="#F7FBFD"> 
    <td height="30" colspan="2">&nbsp;&nbsp;您所在的位置: <a href="/" title="ic37首頁" class="black">IC37首頁</a> 
      &gt; <a href="/htm_bbs_dic/list.htm" title="技術問答 " class="black">技術問答 </a> 
      &gt; <a href="/htm_bbs_dic/285_1.htm" title="PIC 單片機" class="black">PIC 單片機</a> &gt; PIC24F之EEPROM讀寫中斷事件處理函數要點及說明</td>
  </tr>
  <tr valign="top"> 
    <td width="725"><br> <table width="99%" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#D3EBFC">
        <tr> 
          <td height="30" bgcolor="#E3F2FD" class="font14"><strong><font color="#000000">&nbsp;&nbsp;</font>PIC24F之EEPROM讀寫中斷事件處理函數要點及說明&nbsp;</strong></td>
        </tr>
        <tr> 
          <td bgcolor="#FFFFFF"><table width="100%" border="0" align="center" cellpadding="10" cellspacing="0" class="heigh22">
              <tr> 
                <td class="font13"><p style="TEXT-INDENT: 2em">/*-------------------------------------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em">PIC24F之<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀寫中斷事件處理函數要點及說明</p><p style="TEXT-INDENT: 2em">注意: 這是一個通用的I2C/SMBUS通訊中斷處理程序</p><p style="TEXT-INDENT: 2em">對于<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>來講,從機后面需要跟<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>需要讀寫的地址(I2CRegs.RWAddr)</p><p style="TEXT-INDENT: 2em">對于SMBUS來說,從機后面需要跟SMBUS需要的命令(I2CRegs.RWAddr改為I2CRegs.CMD即可)</p><p style="TEXT-INDENT: 2em">由于PIC24F的I2C不太標準,I2C1STAT被搞得很倒塌!!!一點都沒I2C的&quot;大家閨秀&quot;的樣子~~~</p><p style="TEXT-INDENT: 2em">不過它的STOP還能激活中斷確實比LPCARM/AVR好一點點~~~</p><p style="TEXT-INDENT: 2em">為什么I2C收發都用中斷呢???</p><p style="TEXT-INDENT: 2em">這主要是為了高低速靈活變化的總線通訊所做,主要是SMBUS總線的通信.</p><p style="TEXT-INDENT: 2em">菜農在LPCARM/AVR上用此程序模板可謂不怕數據被干擾~~~</p><p style="TEXT-INDENT: 2em">如果為I2cExit()也配上鉤子函數,那么任何錯誤都在手掌中~~~</p><p style="TEXT-INDENT: 2em">這個PIC程序雖沒SMBUS的PEC校驗部分,但&quot;異步&quot;還是完美的.</p><p style="TEXT-INDENT: 2em">當然也要注意對寫保護硬件管腳的控制時機的把握,原則是關保護的時間最短就更好~~~</p><p style="TEXT-INDENT: 2em">菜農本來PIC24F菜鳥已“畢業”,但還是“忍痛”發表出來~~~</p><p style="TEXT-INDENT: 2em">主要看到人們編寫MCU程序太死板~~~特別是I2C程序.網上收發全中斷的很少,可以說幾乎沒有.</p><p style="TEXT-INDENT: 2em">隨貼附老外倒塌的非中斷I2C狀態機讀寫程序i2cEmem.c~~~可以比較經典和非典的差異在何處~~~</p><p style="TEXT-INDENT: 2em">菜農近期將整理出LPCARM和AVR的I2C/SMBUS/TWI/USI收發全中斷實戰例程供大家“游玩”~~~</p><p style="TEXT-INDENT: 2em">如果精通<a href="http://www.ic37.com/DELPHI-p.htm" target="_blank" title="DELPHI PDF資料和全國供應商">DELPHI</a>程序的人一定會為“事件驅動”機制而癡迷~~~為什么不在MCU上&quot;聲東擊西&quot;呢???</p><p style="TEXT-INDENT: 2em">&quot;有事件才處理&quot;---這才是編程的硬道理~~~輪循的“癡迷等待”最終還是“單相思”~~~</p><p style="TEXT-INDENT: 2em">本程序附實戰結果圖.(因為菜農的程序從來不空談社會主義~~~)</p><p style="TEXT-INDENT: 2em">原本是在&quot;雞蛋節&quot;獻給大家,由于&quot;憶苦思甜&quot;沒發~~~就算是“臭蛋節”的禮物吧~~~</p><p style="TEXT-INDENT: 2em">菜農 HotPower@126.com2007.12.25 &quot;雞蛋節&quot;于大雁塔菜地</p><p style="TEXT-INDENT: 2em">--------------------------------------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">#include &quot;i2c.h&quot;</p><p style="TEXT-INDENT: 2em">_PERSISTENT volatile I2CREGS I2CRegs;</p><p style="TEXT-INDENT: 2em">_PERSISTENT volatile I2CBITS I2CBits;</p><p style="TEXT-INDENT: 2em">void I2cInit(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">unsigned int i;</p><p style="TEXT-INDENT: 2em">TRIS_WP= PORTOUTMODE;//定義WP為輸出IO</p><p style="TEXT-INDENT: 2em">TRIS_SCL1 = PORTOUTMODE;//定義SCL為輸出IO</p><p style="TEXT-INDENT: 2em">TRIS_SDA1 = PORTINPUTMODE;//定義SDA為輸出入IO</p><p style="TEXT-INDENT: 2em">ODC_SCL1 = 1;//OC輸出</p><p style="TEXT-INDENT: 2em">ODC_SDA1 = 1;//OC輸出</p><p style="TEXT-INDENT: 2em">WP = 1;//寫保護</p><p style="TEXT-INDENT: 2em">I2CRegs.MaxCount = 0x200;//8KByte</p><p style="TEXT-INDENT: 2em">I2CRegs.I2CAddr = 0xa0;//器件地址</p><p style="TEXT-INDENT: 2em">I2CRegs.RWAddr = 0;//<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀寫地址</p><p style="TEXT-INDENT: 2em">I2CRegs.TxCount = 0;//發送數據字節個數</p><p style="TEXT-INDENT: 2em">I2CRegs.RxCount = 0;//接收數據字節個數</p><p style="TEXT-INDENT: 2em">for (i = 0; i &lt; 16; i ++)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CRegs.TxBuffer[i] = 0;//發送緩沖區清零</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">for (i = 0; i &lt; 256; i ++)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CRegs.RxBuffer[i] = 0;//接收緩沖區清零</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">I2C1CON = 0;</p><p style="TEXT-INDENT: 2em">//I2C1CONbits.A10M = 0;//7位地址模式</p><p style="TEXT-INDENT: 2em">I2C1CONbits.SCLREL = 1;</p><p style="TEXT-INDENT: 2em">I2C1MSK = 0;</p><p style="TEXT-INDENT: 2em">I2C1STAT = 0;</p><p style="TEXT-INDENT: 2em">_MI2C1IF = 0;</p><p style="TEXT-INDENT: 2em">_SI2C1IF = 0;</p><p style="TEXT-INDENT: 2em">I2C1BRG = (FCY / (2 * I2CBAUD)) - 1;//波特率計算</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em">定義I2C串口2中斷優先級位1111)</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">IPC4bits.MI2C1P0 = 1;</p><p style="TEXT-INDENT: 2em">IPC4bits.MI2C1P1 = 1;</p><p style="TEXT-INDENT: 2em">IPC4bits.MI2C1P2 = 1;</p><p style="TEXT-INDENT: 2em">I2C1CONbits.I2CEN = 1;//允許I2C功能</p><p style="TEXT-INDENT: 2em">_MI2C1IE = 1;//允許主設備中斷</p><p style="TEXT-INDENT: 2em">//I2cStop();</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀塊函數(只能在回調函數I2CReadCallBack中得到讀出的數據)</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2CReadBuffers(unsigned int E2RomAddr, unsigned int ReadSize)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (ReadSize &amp;&amp; (ReadSize &lt;= 256))</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CRegs.TxCount = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.RxCount = ReadSize;</p><p style="TEXT-INDENT: 2em">I2CRegs.RWAddr = E2RomAddr;</p><p style="TEXT-INDENT: 2em">I2CRegs.I2CAddr |= 1;//0xa1</p><p style="TEXT-INDENT: 2em">I2cStart();</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">void I2CReadByte(unsigned int E2RomAddr)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CRegs.TxCount = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.RxCount = 1;</p><p style="TEXT-INDENT: 2em">I2CRegs.RWAddr = E2RomAddr;</p><p style="TEXT-INDENT: 2em">I2CRegs.I2CAddr |= 1;//0xa1</p><p style="TEXT-INDENT: 2em">I2cStart();</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫塊函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2CWriteBuffers(unsigned int E2RomAddr, unsigned int WriteSize)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (WriteSize &amp;&amp; (WriteSize &lt;= 16))</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CRegs.TxCount = WriteSize;</p><p style="TEXT-INDENT: 2em">I2CRegs.RxCount = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.RWAddr = E2RomAddr;</p><p style="TEXT-INDENT: 2em">I2CRegs.I2CAddr &amp;= 0xfe;//0xa0</p><p style="TEXT-INDENT: 2em">I2cStart();</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">void I2CWriteByte(unsigned int E2RomAddr, unsigned char cData)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CRegs.TxBuffer[0] = cData;</p><p style="TEXT-INDENT: 2em">I2CRegs.TxCount = 1;</p><p style="TEXT-INDENT: 2em">I2CRegs.RxCount = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.RWAddr = E2RomAddr;</p><p style="TEXT-INDENT: 2em">I2CRegs.I2CAddr &amp;= 0xfe;//0xa0</p><p style="TEXT-INDENT: 2em">I2cStart();</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em">用戶讀回調函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2CReadCallBack(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if ((I2CRegs.RWAddr + I2CRegs.RxCount) &lt;= I2CRegs.MaxCount) </p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">//I2CRegs.RWAddr += I2CRegs.RxCount;</p><p style="TEXT-INDENT: 2em">//I2CReadBuffers(I2CRegs.RWAddr, I2CRegs.RxCount);//繼續讀</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em">用戶寫回調函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2CWriteCallBack(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if ((I2CRegs.RWAddr + I2CRegs.TxCount) &lt;= I2CRegs.MaxCount) </p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">//I2CRegs.RWAddr += I2CRegs.TxCount;</p><p style="TEXT-INDENT: 2em">//I2CWriteBuffers(I2CRegs.RWAddr, I2CRegs.TxCount);//繼續寫</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀寫啟動函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2cStart(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em">//本程序在狀態I2C_MT_ADDRL_ACK下進行瞬間打開,也可在此打開,不過安全不好</p><p style="TEXT-INDENT: 2em">if (I2CRegs.TxCount)//需要寫入字節</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">WP = 0;//不寫保護</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">WP = 1;//寫保護</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">--------------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">I2C1STATbits.IWCOL = 0;</p><p style="TEXT-INDENT: 2em">I2CBits.BusyFlag = 1;</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_START;//主機準備發送啟始位</p><p style="TEXT-INDENT: 2em">I2CRegs.Count = 0;//發送數據個數</p><p style="TEXT-INDENT: 2em">I2CBits.I2CFlag = 0;</p><p style="TEXT-INDENT: 2em">I2C1CONbits.SEN = 1;//發送Start信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀再啟動函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2cReStart(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1STATbits.IWCOL = 0;</p><p style="TEXT-INDENT: 2em">I2CBits.BusyFlag = 1;</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_REP_START;//主機準備發送重新啟始位</p><p style="TEXT-INDENT: 2em">I2CRegs.Count = 0;//發送數據個數</p><p style="TEXT-INDENT: 2em">I2C1CONbits.RSEN = 1;//發送ReStart信號</p><p style="TEXT-INDENT: 2em">I2C1CONbits.ACKEN = 0;</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀寫正確停止函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2cStop(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1STATbits.IWCOL = 0;</p><p style="TEXT-INDENT: 2em">I2CBits.BusyFlag = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_SUCCEEDED;//通訊成功</p><p style="TEXT-INDENT: 2em">I2C1CONbits.PEN = 1;//發送Stop信號</p><p style="TEXT-INDENT: 2em">WP = 1;//寫保護</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀寫錯誤退出函數</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2cExit(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1STATbits.IWCOL = 0;</p><p style="TEXT-INDENT: 2em">I2CBits.BusyFlag = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_FAILED;</p><p style="TEXT-INDENT: 2em">I2C1CONbits.PEN = 1;//發送Stop信號</p><p style="TEXT-INDENT: 2em">WP = 1;//寫保護</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">/*------------------------------------------------------------------</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>讀寫中斷事件處理函數(說明見文件頭部)</p><p style="TEXT-INDENT: 2em">-------------------------------------------------------------------*/</p><p style="TEXT-INDENT: 2em">void I2CExec(void)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (I2C1STATbits.S)//收到Start過信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em"><a href="http://www.ic37.com/switch-p.htm" target="_blank" title="switch PDF資料和全國供應商">switch</a> (I2CRegs.State)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">case I2C_START://收到Start信號</p><p style="TEXT-INDENT: 2em">I2C1TRN = I2CRegs.I2CAddr &amp; 0xfe;//發送器件寫地址(通知從機只能聽)</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MT_SLA_ACK;//下次應該接收器件寫地址應答信號</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MT_SLA_ACK://收到器件寫地址應答信號</p><p style="TEXT-INDENT: 2em">if (!I2C1STATbits.ACKSTAT)//收到Ack信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (I2CRegs.MaxCount &gt; 0x100)//<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>容量超過256個字節,<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>地址需要兩次發送</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1TRN = I2CRegs.RWAddr &gt;&gt; 8;//發送<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫高8位地址</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MT_ADDRH_ACK;//下次應該接收<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫高8位地址應答信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//小容量只需一次發送!!!</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1TRN = I2CRegs.RWAddr;//發送<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫低8位地址</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MT_ADDRL_ACK;//下次應該接收<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫低8位地址應答信號</p><p style="TEXT-INDENT: 2em">I2CRegs.Count = 0;//清空發送緩沖計數器</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//收到NAck信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤的ACK信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MT_ADDRH_ACK://收到<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫高8位地址應答信號</p><p style="TEXT-INDENT: 2em">if (!I2C1STATbits.ACKSTAT)//收到Ack信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1TRN = I2CRegs.RWAddr &amp; 0xff;//發送<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫低8位地址</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MT_ADDRL_ACK;//下次應該接收<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫低8位地址應答信號</p><p style="TEXT-INDENT: 2em">I2CRegs.Count = 0;//清空發送緩沖計數器</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//收到NAck信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤的ACK信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MT_ADDRL_ACK://收到<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>寫高低8位地址應答信號</p><p style="TEXT-INDENT: 2em">if (I2CRegs.TxCount)//寫保護只在寫入期間不保護,增加了對誤寫入的安全防護能力!!!</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">WP = 0;//不寫保護</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">case I2C_MT_DATA_ACK://收到應答信號</p><p style="TEXT-INDENT: 2em">if (!I2C1STATbits.ACKSTAT)//收到Ack信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (I2CRegs.Count &lt; I2CRegs.TxCount)//緩沖區未空</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1TRN = I2CRegs.TxBuffer[I2CRegs.Count ++];//繼續發送數據</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else if (I2CRegs.Count == I2CRegs.TxCount)//緩沖區已空</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (I2CRegs.I2CAddr &amp; 1)//應該開始接收數據</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cReStart();//發送重復位命令</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//只寫退出</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cStop();//正常發送結束</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//干擾出錯</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//收到NAck信號(可能被寫保護)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤的ACK信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_REP_START://收到ReStart信號</p><p style="TEXT-INDENT: 2em">I2C1TRN = I2CRegs.I2CAddr | I2C_READ;//發送器件讀地址(通知從機可以說話)</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MR_SLA_ACK;//下次應該接收器件寫讀地址應答信號</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MR_SLA_ACK://收到器件讀地址應答信號</p><p style="TEXT-INDENT: 2em">if (!I2C1STATbits.ACKSTAT)//收到Ack信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1CONbits.RCEN = 1;//開始接收數據</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MR_DATA;//下次應該收接收數據</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//收到NAck信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤的ACK信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MR_DATA://收到接收數據</p><p style="TEXT-INDENT: 2em">if (I2CRegs.Count &lt; I2CRegs.RxCount)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">//I2C1STATbits.I2COV = 0;</p><p style="TEXT-INDENT: 2em">I2CRegs.RxBuffer[I2CRegs.Count ++] = I2C1RCV;</p><p style="TEXT-INDENT: 2em">if (I2CRegs.Count &lt; I2CRegs.RxCount)</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1CONbits.ACKDT = 0;//應答子機</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MR_DATA_EN;//下次應該收到器件允許繼續讀信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2C1CONbits.ACKDT = 1;//非應答子機</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MR_DATA_STOP;//下次應該收到退出信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">I2C1CONbits.ACKEN = 1;//向從機發送(非)應答信號</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//正確的狀態已分支到I2C_MR_DATA_STOP</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MR_DATA_EN://收到器件允許繼續讀信號</p><p style="TEXT-INDENT: 2em">I2C1CONbits.RCEN = 1;//開始接收數據</p><p style="TEXT-INDENT: 2em">I2CRegs.State = I2C_MR_DATA;//下次應該繼續接收數據</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">case I2C_MR_DATA_STOP://收到器件退出信號</p><p style="TEXT-INDENT: 2em">I2cStop();//正常接收結束</p><p style="TEXT-INDENT: 2em">break;</p><p style="TEXT-INDENT: 2em">default://其他不可預料的錯誤</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else if (I2C1STATbits.P)//收到Stop信號</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (I2CRegs.State == I2C_SUCCEEDED)//成功,回調</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">if (I2CRegs.I2CAddr &amp; 1)//讀</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CBits.ReadFlag = 1;//激活用戶讀回調函數I2CReadCallBack()</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//寫</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2CBits.WriteFlag = 1;//激活用戶寫回調函數I2CWriteCallBack()</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">else//無法確認的復雜錯誤 </p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">I2cExit();//錯誤出錯退出</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">}</p><p style="TEXT-INDENT: 2em">下附I2CReadBuffers(0, 10)結果圖</p><p style="TEXT-INDENT: 2em"><img border=0 src='http://2008sfile.ic37.com/2008file/bbs_dic/2008-2-9/0209232306_143612_0.gif'></p><p style="TEXT-INDENT: 2em"> <br> <font color="#999999">作者:hotpower&nbsp;&nbsp;2007-12-26 19:16:00</font> </td>
              </tr>
            </table></td>
        </tr>
        
        <tr> 
          <td height="25" bgcolor="#E3F2FD"><strong><font color="#000000"><font color="#FFFFFF">&nbsp;&nbsp;</font></font></strong><font color="#0066CC">回復1</font>&nbsp;&nbsp;對應的I2C.H608989</td>
        </tr>
        <tr> 
          <td height="38" bgcolor="#FFFFFF"><table width="100%" border="0" align="center" cellpadding="10" cellspacing="0" class="heigh22">
              <tr> 
                <td class="font13"><p style="TEXT-INDENT: 2em">#include &quot;main.h&quot;</p><p style="TEXT-INDENT: 2em">#ifndef __I2C_H</p><p style="TEXT-INDENT: 2em">#define __I2C_H</p><p style="TEXT-INDENT: 2em">#define I2CBAUD 800000//800KHz本程序是讀寫鐵電的,故速度很高</p><p style="TEXT-INDENT: 2em">//下面的是I2C的標準狀態表,因為PIC的不標準,故湊合著用和補充了加注解的部分~~~</p><p style="TEXT-INDENT: 2em">enum enum_I2CState</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">/* <a href="http://www.ic37.com/Master-p.htm" target="_blank" title="Master PDF資料和全國供應商">Master</a> */</p><p style="TEXT-INDENT: 2em">I2C_START =0x08,//啟動</p><p style="TEXT-INDENT: 2em">I2C_REP_START=0x10,//重啟動</p><p style="TEXT-INDENT: 2em">/* <a href="http://www.ic37.com/Master-p.htm" target="_blank" title="Master PDF資料和全國供應商">Master</a> Transmitter */</p><p style="TEXT-INDENT: 2em">I2C_MT_SLA_ACK=0x18,//主發模式下得到從機地址應答信號</p><p style="TEXT-INDENT: 2em">I2C_MT_SLA_NACK=0x20,</p><p style="TEXT-INDENT: 2em">I2C_MT_DATA_ACK=0x28,//主發模式下得到從機數據應答信號</p><p style="TEXT-INDENT: 2em">I2C_MT_DATA_NACK=0x30,</p><p style="TEXT-INDENT: 2em">I2C_MT_ARB_LOST=0x38,</p><p style="TEXT-INDENT: 2em">/* <a href="http://www.ic37.com/Master-p.htm" target="_blank" title="Master PDF資料和全國供應商">Master</a> <a href="http://www.ic37.com/Receiver-p.htm" target="_blank" title="Receiver PDF資料和全國供應商">Receiver</a> */</p><p style="TEXT-INDENT: 2em">I2C_MR_ARB_LOST=0x38,</p><p style="TEXT-INDENT: 2em">I2C_MR_SLA_ACK=0x40,//主收模式下得到從機地址應答信號</p><p style="TEXT-INDENT: 2em">I2C_MR_SLA_NACK=0x48,</p><p style="TEXT-INDENT: 2em">I2C_MR_DATA_ACK=0x50,</p><p style="TEXT-INDENT: 2em">I2C_MR_DATA_NACK=0x58,</p><p style="TEXT-INDENT: 2em">/* Slave Transmitter */</p><p style="TEXT-INDENT: 2em">I2C_ST_SLA_ACK=0xA8,</p><p style="TEXT-INDENT: 2em">I2C_ST_ARB_LOST_SLA_ACK=0xB0,</p><p style="TEXT-INDENT: 2em">I2C_ST_DATA_ACK=0xB8,</p><p style="TEXT-INDENT: 2em">I2C_ST_DATA_NACK=0xC0,</p><p style="TEXT-INDENT: 2em">I2C_ST_LAST_DATA=0xC8,</p><p style="TEXT-INDENT: 2em">/* Slave <a href="http://www.ic37.com/Receiver-p.htm" target="_blank" title="Receiver PDF資料和全國供應商">Receiver</a> */</p><p style="TEXT-INDENT: 2em">I2C_SR_SLA_ACK=0x60,</p><p style="TEXT-INDENT: 2em">I2C_SR_ARB_LOST_SLA_ACK=0x68,</p><p style="TEXT-INDENT: 2em">I2C_SR_GCALL_ACK=0x70,</p><p style="TEXT-INDENT: 2em">I2C_SR_ARB_LOST_GCALL_ACK=0x78,</p><p style="TEXT-INDENT: 2em">I2C_SR_DATA_ACK=0x80,</p><p style="TEXT-INDENT: 2em">I2C_SR_DATA_NACK=0x88,</p><p style="TEXT-INDENT: 2em">I2C_SR_GCALL_DATA_ACK=0x90,</p><p style="TEXT-INDENT: 2em">I2C_SR_GCALL_DATA_NACK=0x98,</p><p style="TEXT-INDENT: 2em">I2C_SR_STOP=0xA0,</p><p style="TEXT-INDENT: 2em">/* Misc */</p><p style="TEXT-INDENT: 2em">I2C_NO_INFO=0xF8,</p><p style="TEXT-INDENT: 2em">I2C_MT_ADDRH_ACK=0x3a,//主發模式下得到從機高位<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>地址應答信號</p><p style="TEXT-INDENT: 2em">I2C_MT_ADDRL_ACK=0x3b,//主發模式下得到從機高低位<a href="http://www.ic37.com/EEPROM-p.htm" target="_blank" title="EEPROM PDF資料和全國供應商">EEPROM</a>地址應答信號</p><p style="TEXT-INDENT: 2em">I2C_MR_DATA=0x5a,//主收模式下接收數據</p><p style="TEXT-INDENT: 2em">I2C_MR_DATA_EN=0x5b,//主收模式下使能接收數據功能</p><p style="TEXT-INDENT: 2em">I2C_MR_DATA_STOP=0x5c,//主收模式下接收數據完成</p><p style="TEXT-INDENT: 2em">I2C_FAILED=0xcc,//讀寫操作失敗</p><p style="TEXT-INDENT: 2em">I2C_SUCCEEDED=0x00,//讀寫操作成功</p><p style="TEXT-INDENT: 2em">I2C_RWBIT=0,//</p><p style="TEXT-INDENT: 2em">I2C_READ=1,//</p><p style="TEXT-INDENT: 2em">I2C_WRITE=0//</p><p style="TEXT-INDENT: 2em">};</p><p style="TEXT-INDENT: 2em">#define TRIS_SCL1 _TRISG2 //SCL方向控制</p><p style="TEXT-INDENT: 2em">#define TRIS_SDA1 _TRISG3 //SDA方向控制</p><p style="TEXT-INDENT: 2em">#define ODC_SCL1 _ODG2 //SCL開漏控制</p><p style="TEXT-INDENT: 2em">#define ODC_SDA1 _ODG3 //SDA開漏控制</p><p style="TEXT-INDENT: 2em">/*-----------------------------------------</p><p style="TEXT-INDENT: 2em">寫保護管腳定義,需要硬件的支持</p><p style="TEXT-INDENT: 2em">------------------------------------------*/</p><p style="TEXT-INDENT: 2em">#define TRIS_WP_TRISD0 //WP方向控制</p><p style="TEXT-INDENT: 2em">#define WP _LATD0//寫保護</p><p style="TEXT-INDENT: 2em">typedef struct tagI2CBITS</p><p style="TEXT-INDENT: 2em">{ </p><p style="TEXT-INDENT: 2em">union</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">unsigned char I2CFlag;</p><p style="TEXT-INDENT: 2em">struct</p><p style="TEXT-INDENT: 2em">{</p><p style="TEXT-INDENT: 2em">unsigned charBusyFlag:1;//忙標志</p><p style="TEXT-INDENT: 2em">unsigned charReadFlag:1;//讀回調標志</p><p style="TEXT-INDENT: 2em">unsigned charWriteFlag:1;//寫回調標志</p><p style="TEXT-INDENT: 2em">};</p><p style="TEXT-INDENT: 2em">};</p><p style="TEXT-INDENT: 2em">}I2CBITS;</p><p style="TEXT-INDENT: 2em">extern volatile I2CBITS I2CBits;</p><p style="TEXT-INDENT: 2em">typedef struct tagI2CREGS</p><p style="TEXT-INDENT: 2em">{ </p><p style="TEXT-INDENT: 2em">unsigned char State;//運行狀態編碼</p><p style="TEXT-INDENT: 2em">unsigned char I2CAddr;//器件地址0xa1,0xa0</p><p style="TEXT-INDENT: 2em">unsigned int RWAddr;//器件讀寫地址(自動根據MaxCount判斷長短地址)</p><p style="TEXT-INDENT: 2em">unsigned int Count;//運行計數器</p><p style="TEXT-INDENT: 2em">unsigned int TxCount;//發送(寫)個數</p><p style="TEXT-INDENT: 2em">unsigned int RxCount;//接收(讀)個數</p><p style="TEXT-INDENT: 2em">unsigned int MaxCount;//器件最大容量</p><p style="TEXT-INDENT: 2em">unsigned char TxBuffer[16];//發送緩沖區</p><p style="TEXT-INDENT: 2em">unsigned char RxBuffer[256];//接收緩沖區</p><p style="TEXT-INDENT: 2em">}I2CREGS;</p><p style="TEXT-INDENT: 2em">extern volatile I2CREGS I2CRegs;</p><p style="TEXT-INDENT: 2em">void I2cInit(void);</p><p style="TEXT-INDENT: 2em">void I2CReadBuffers(unsigned int, unsigned int);</p><p style="TEXT-INDENT: 2em">void I2CReadByte(unsigned int);</p><p style="TEXT-INDENT: 2em">void I2CWriteBuffers(unsigned int, unsigned int);</p><p style="TEXT-INDENT: 2em">void I2CWriteByte(unsigned int, unsigned char);</p><p style="TEXT-INDENT: 2em">void I2CReadCallBack(void);</p><p style="TEXT-INDENT: 2em">void I2CWriteCallBack(void);</p><p style="TEXT-INDENT: 2em">void I2cStart(void);</p><p style="TEXT-INDENT: 2em">void I2cReStart(void);</p><p style="TEXT-INDENT: 2em">void I2cStop(void);</p><p style="TEXT-INDENT: 2em">void I2CExec(void);</p><p style="TEXT-INDENT: 2em">#endif//__I2C_H</p><p style="TEXT-INDENT: 2em"> <font color="#0066CC"><br>
                  <font color="#999999">作者:hotpower&nbsp;&nbsp;2007-12-26 19:17:00</font></font></td>
              </tr>
            </table></td>
        </tr>
        

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜视频一区在线观看| 国产日韩欧美制服另类| 亚洲自拍欧美精品| 91福利在线导航| 五月综合激情婷婷六月色窝| 91精品国产色综合久久不卡蜜臀| 爽好多水快深点欧美视频| 欧美一级高清大全免费观看| 狠狠色2019综合网| 国产精品视频你懂的| 91在线观看美女| 亚洲国产综合在线| 日韩亚洲电影在线| 成人一区二区三区视频在线观看| 国产精品久久久久9999吃药| 色噜噜狠狠一区二区三区果冻| 视频一区视频二区中文| 国产亚洲污的网站| 色94色欧美sute亚洲线路二| 麻豆国产精品视频| 国产精品乱码人人做人人爱| 欧美性感一类影片在线播放| 韩国在线一区二区| 一区二区三区在线观看国产| 欧美一区二区视频在线观看2020| 国产酒店精品激情| 亚洲小说欧美激情另类| 久久久青草青青国产亚洲免观| 91网站视频在线观看| 男人的j进女人的j一区| 亚洲手机成人高清视频| 欧美一级午夜免费电影| youjizz久久| 美国十次了思思久久精品导航| 国产精品久久毛片a| 91精品国产黑色紧身裤美女| 成人av在线一区二区| 蜜桃久久久久久| 夜夜亚洲天天久久| 欧美国产日韩一二三区| 91精品欧美一区二区三区综合在| 日韩免费在线观看| 91精彩视频在线观看| 丁香天五香天堂综合| 婷婷综合另类小说色区| 综合自拍亚洲综合图不卡区| 久久只精品国产| 欧美日本一区二区在线观看| 成人精品小蝌蚪| 国产一区二区精品久久99| 五月天亚洲精品| 亚洲欧美日韩在线| 国产女主播一区| 久久婷婷综合激情| 日韩视频国产视频| 欧美精品日日鲁夜夜添| 色综合久久久网| 播五月开心婷婷综合| 国产一区二区不卡| 久88久久88久久久| 视频精品一区二区| 亚洲成人先锋电影| 亚洲最新视频在线观看| **欧美大码日韩| 亚洲欧洲日韩在线| 亚洲国产电影在线观看| 国产三级欧美三级| 久久―日本道色综合久久| 精品国产乱码久久久久久影片| 91.成人天堂一区| 欧美日韩电影一区| 欧美丰满一区二区免费视频 | 极品瑜伽女神91| 婷婷六月综合亚洲| 日本中文字幕不卡| 热久久免费视频| 蜜桃视频一区二区| 国产一区二区日韩精品| 国精产品一区一区三区mba视频 | 欧美在线观看18| 色噜噜狠狠色综合欧洲selulu| 97se亚洲国产综合自在线观| 99国产精品久久久久| 91久久人澡人人添人人爽欧美| 一本高清dvd不卡在线观看| 99精品在线免费| 色偷偷久久人人79超碰人人澡| 91网站最新地址| 欧美日本在线看| 欧美mv和日韩mv的网站| 久久九九国产精品| 中文字幕中文在线不卡住| 亚洲柠檬福利资源导航| 亚洲成人精品一区| 蜜桃久久精品一区二区| 国产 日韩 欧美大片| 99re这里只有精品首页| 欧美日精品一区视频| 欧美一区三区二区| 国产偷国产偷精品高清尤物| 中文字幕在线观看不卡| 亚洲一区二区三区中文字幕在线| 五月天国产精品| 国产美女久久久久| 91美女视频网站| 欧美精品黑人性xxxx| 亚洲精品一区二区三区福利| 国产精品美女久久久久aⅴ| 一区二区三区四区精品在线视频| 日韩国产精品大片| 国产不卡视频一区二区三区| 在线视频欧美精品| 日韩精品一区在线| 亚洲婷婷国产精品电影人久久| 日韩不卡一二三区| 成人福利视频在线看| 在线成人小视频| 一区免费观看视频| 日韩成人免费在线| eeuss鲁片一区二区三区在线看| 欧美日韩1区2区| 136国产福利精品导航| 久久机这里只有精品| 一本到一区二区三区| 久久免费的精品国产v∧| 亚洲一区自拍偷拍| 国产成人免费在线视频| 欧美人xxxx| 中文字幕一区在线观看视频| 蜜臀av一区二区在线免费观看| 99久久国产免费看| 337p日本欧洲亚洲大胆精品| 亚洲国产婷婷综合在线精品| 成人涩涩免费视频| 日韩三级av在线播放| 亚洲一区二区av电影| 风间由美一区二区av101| 日韩亚洲欧美一区| 亚洲亚洲精品在线观看| 91性感美女视频| 国产人成一区二区三区影院| 美女视频黄a大片欧美| 欧美日韩精品一区二区三区| 综合精品久久久| 国产成人精品亚洲777人妖| 日韩你懂的在线播放| 日韩成人av影视| 欧美日韩国产不卡| 亚洲成人一区二区在线观看| 色激情天天射综合网| 国产精品国产精品国产专区不蜜| 国产精品91一区二区| 日韩欧美一级片| 奇米影视在线99精品| 欧美日本国产视频| 亚洲高清久久久| 欧美视频在线播放| 亚洲电影视频在线| 欧美视频中文字幕| 亚洲一区二区三区四区在线 | 欧美一级淫片007| 日韩在线a电影| 欧美高清视频在线高清观看mv色露露十八 | 亚洲国产欧美一区二区三区丁香婷| gogo大胆日本视频一区| 国产精品理论片| www.久久久久久久久| 国产精品精品国产色婷婷| 成人h动漫精品一区二| 国产三级精品视频| 国产jizzjizz一区二区| 国产婷婷色一区二区三区四区| 风流少妇一区二区| 综合激情网...| 欧美午夜电影一区| 日韩中文字幕一区二区三区| 欧美精品欧美精品系列| 久久精品免费观看| 久久精品亚洲乱码伦伦中文| 成人免费视频app| 一区二区三区精品视频在线| 欧美日韩国产综合一区二区三区 | 欧美区在线观看| 免费在线观看视频一区| 精品日韩成人av| 成熟亚洲日本毛茸茸凸凹| 亚洲天堂成人在线观看| 欧美亚洲综合色| 蜜桃视频在线一区| 欧美极品aⅴ影院| 色天天综合色天天久久| 亚洲高清免费观看高清完整版在线观看| 制服丝袜日韩国产| 国产精品一区二区不卡| 亚洲三级电影全部在线观看高清| 欧美日韩一区国产| 韩国v欧美v亚洲v日本v| 亚洲天堂中文字幕| 久久久久国色av免费看影院| 亚洲成人自拍一区|