《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 24CXX系列讀寫程序(EMC指令版)大話篇

24CXX系列讀寫程序(EMC指令版)大話篇

2009-01-16
關鍵詞: 讀寫程序 單片機

24CXX系列讀寫程序(EMC指令版)大話篇

話說程序匠人,自進論壇以來,天天勤練,日日苦修(花了我東家的不少上網費!!),以《大話篇》系列,嬴得了無數MM得芳心……終于將積分修到500分以上(呵呵,以后可以貼圖片了,如果那位MM想一睹匠人的“浴”照,說一聲,小匠一定滿足)……

—— 身后突然傳來一聲呵斥:“休不休啊你?”
—— 匠人心頭一驚,驀然回首,那人(不是MM,是斑竹)正在燈火闌珊處(手中正握著那把失而復得的大砍刀)……
—— 匠人暗自慶幸還沒有把對斑竹不敬的話語說出來……

……在論壇中,小匠結識了許多高手好友,并得到不少幫助,感激不盡。但也有一些MM好報打不平,覺得小匠在《大話篇》中老是受斑竹的欺負……

—— 一道寒光映入眼簾,匠人發現自己好象說漏了嘴……
—— 再看斑竹手中的刀,已經從刀鞘中抽出了兩公分……

……其實,那都是大伙的誤解……其實,小匠一直非常感謝斑竹的厚道和寬容,沒有將小匠的一些大話帖子DELETE掉……

—— 匠人好象聽到了砍刀緩緩入鞘的金屬聲……
—— 暗呼:“好險!”
—— 匠人再次悄悄回頭,只見斑竹大人已經遠遠去了(頭上頂著一頂精致的蘭花大高帽)

……最近,連續看到好幾篇討論24CXX系列應用的帖子。正好,小匠最近用EMC的指令也做了一段程序。不如無私奉獻一下(如果哪位MM有疑問,可來函、來電、來EMAIL、來FAX、來人,或者約下第一次親密約會,探討探討……)

 


;******************************************
;** 24CXX  接口I2C總線讀/寫的程序
;**  (所有時序均基于4MHZ晶體震蕩器頻率)
;******************************************
/*
;****************************
;隨機讀寫測試程序(示范程序)
;****************************
TEST:
    MOV    A,@0XAE        ;A2=A1=A0=1
    MOV    SLAVE_24,A    ;設置器件碼
    MOV    A,@2        ;R/W LOC. = 2
    MOV    ADDR_24,A    ;設置地址碼
    MOV    A,@55        ;
    MOV    DATA_24,A    ;寫55到E2PROM
    CALL    WRBYTE        ;寫一個字節
    CALL    DL10MS        ;延時10MS,等待寫操作完成(注意,此語句非常重要)
    CALL     RDBYTE        ;讀回原數據
    MOV    A,@55        ;
    XOR    A,DATA_24    ;
    JBS    R3,Z        ;讀出數據=寫入數據跳
WRONG:
    JMP    WRONG        ;校驗失敗
CORRECT:
    JMP    CORRECT        ;校驗通過
DL10MS:
    RET   
;****************************
;存儲器定義
;****************************
PROT_I2C    EQU    0X05    ;I2C操作口
    SDA    EQU    3    ;數據腳
    SCL    EQU    2    ;時鐘腳

ADDR_24    EQU    0X1B        ;地址寄存器
DATA_24    EQU    0X1C        ;寫入/讀自I2C的數據寄存器
SLAVE_24 EQU    0X1D        ;從器件地址寄存器(1010XXX0)
DBUF_24    EQU    0X1E        ;發送/接受自SDA口的數據緩沖器
COUNT_24 EQU    0X1F        ;位計數器
TT_24    EQU    0X20        ;標志寄存器
    REND_24    EQU    1    ;讀完畢標志(0=未完畢,1=完畢)
NUM_24    EQU    0X21        ;頁寫/頁讀字節數

*/
;****************************
;宏定義
;****************************
;=================
;設置SCL,SDA為輸出口
;=================
SDA_OUT    MACRO
    MOV    A,@0B00000001  
    IOW    PROT_I2C
ENDM
;=================
;設置SCL為輸出口,SDA為輸入口
;=================
SDA_IN    MACRO
    MOV    A,@0B00001001
    IOW    PROT_I2C
ENDM
;****************************
;字節寫程序
;功能:    寫一個字節到EEPROM器件
;入口:    DATA_24    =要寫的數據
;    ADDR_24    =數據地址
;    SLAVE_24=從器件地址1010XXX0)
;****************************
WRBYTE:
    MOV    A,SLAVE_24              
    MOV    DBUF_24,A       
    CALL    BSTART            ;送起始位
    CALL    TX            ;送從器件地址并檢測應答信號
    MOV    A,ADDR_24       
    MOV    DBUF_24,A       
    CALL    TX            ;送數據地址并檢測應答信號
    MOV    A,DATA_24       
    MOV    DBUF_24,A       
    CALL    TX            ;送數據并檢測應答信號
    CALL    BSTOP            ;送停止位
    RET
;****************************
;字節讀程序
;功能:    從EEPROM器件讀一個字節
;入口:    ADDR_24    =數據地址
;    SLAVE_24=從器件地址(1010XXX0)
;出口:    DATA_24    =讀到的數據
;****************************
RDBYTE:
    MOV    A,SLAVE_24
    MOV    DBUF_24,A
    CALL    BSTART            ;送起始位
    CALL    TX            ;送從器件地址并檢測應答信號
    MOV    A,ADDR_24       
    MOV    DBUF_24,A
    CALL    TX            ;送數據地址并檢測應答信號
;轉入讀狀態   
    CALL    BSTART            ;送起始位   
    MOV    A,SLAVE_24          
    MOV    DBUF_24,A
    BS     DBUF_24,0           
    CALL    TX            ;送從器件地址并檢測應答信號
    BS    TT_24,REND_24       
    CALL    RX            ;讀數據并發送應答信號
    CALL    BSTOP            ;送停止位
    MOV    A,DBUF_24       
    MOV    DATA_24,A        ;保存數據到DATA_24
    RET
;****************************
;頁寫程序
;功能:    寫一個字節到EEPROM器件
;入口:    R4    =要寫的數據在RAM中存放首地址
;    NUM_24    =字節數
;    ADDR_24    =數據地址
;    SLAVE_24=從器件地址1010XXX0)
;****************************
WRPAGE:
    MOV    A,SLAVE_24              
    MOV    DBUF_24,A       
    CALL    BSTART            ;送起始位
    CALL    TX            ;送從器件地址并檢測應答信號
    MOV    A,ADDR_24       
    MOV    DBUF_24,A       
    CALL    TX            ;送數據地址并檢測應答信號
WRPAGE1:
    MOV    A,R0       
    MOV    DBUF_24,A       
    CALL    TX            ;送數據并檢測應答信號
    INC    R4
    DJZ    NUM_24
    JMP    WRPAGE1            ;未寫完繼續
    CALL    BSTOP            ;送停止位
    RET
;****************************
;頁讀程序
;功能:    從EEPROM器件讀一個字節
;入口:    ADDR_24    =數據地址
;    SLAVE_24=從器件地址(1010XXX0)
;    NUM_24    =字節數
;出口:    R4    =讀到的數據在RAM中存放首地址
;****************************
RDPAGE:
    MOV    A,SLAVE_24
    MOV    DBUF_24,A
    CALL    BSTART            ;送起始位
    CALL    TX            ;送從器件地址并檢測應答信號
    MOV    A,ADDR_24       
    MOV    DBUF_24,A
    CALL    TX            ;送數據地址并檢測應答信號
;轉入讀狀態   
    CALL    BSTART            ;送起始位   
    MOV    A,SLAVE_24          
    MOV    DBUF_24,A
    BS     DBUF_24,0           
    CALL    TX            ;送從器件地址并檢測應答信號
RDPAGE1:
    MOV    A,@1
    XOR    A,NUM_24
    BS    TT_24,REND_24       
    JBS    R3,Z            ;NUM_24=1跳;判斷是否最后一個字節,決定應答信號   
    BC    TT_24,REND_24       
    CALL    RX            ;讀數據并發送應答信號
    MOV    A,DBUF_24       
    MOV    R0,A            ;保存數據到R0
    INC    R4
    DJZ    NUM_24
    JMP    RDPAGE1            ;未讀完繼續
    CALL    BSTOP            ;送停止位
    RET
;****************************
;I2C操作子程序(時序)集合
;****************************
;=================
;發送起始位程序
;說明:    當SCL=1時,向SDA發一個下降沿
;=================
BSTART:
    SDA_OUT                ;設置SDA為輸出口
    BS    PROT_I2C,SDA        ;SDA=1
    NOP                ;延時0.6US
    BS    PROT_I2C,SCL        ;SCL=1
    NOP                ;延時0.6US
    BC    PROT_I2C,SDA        ;SDA=0
    NOP                ;延時0.6US
    BC    PROT_I2C,SCL        ;SCL=0
    NOP                ;延時0.6US
    RET
;=================
;發送結束位程序
;說明:    當SCL=1時,向SDA發一個上升沿
;=================
BSTOP:
    SDA_OUT                ;設置SDA為輸出口
    BC    PROT_I2C,SDA        ;SDA=0
    NOP                ;延時0.6US
    BS    PROT_I2C,SCL        ;SCL=1
    NOP                ;延時0.6US
    BS    PROT_I2C,SDA        ;SDA=1
    NOP                ;延時0.6US
    RET
;=================
;位輸入子程序
;說明:    當SCL=1時,從SDA上讀電平
;出口:    C=從SDA上讀入的位值   
;=================
BITIN:
    SDA_IN                ;設置SDA為輸入口
    BS    PROT_I2C,SDA        ;SDA=1
    NOP                ;延時0.6US
    BS    PROT_I2C,SCL        ;SCL=1
    NOP                ;延時0.6US
    BC    R3,C
    JBC    PROT_I2C,SDA       
    BS    R3,C            ;C=SDA
    NOP                ;延時0.6US
    BC    PROT_I2C,SCL        ;SCL=0
    NOP                ;延時0.6US
    RET
;=================
;位輸出子程序
;說明:    每當SCL=0時,改寫SDA上的電平
;入口:    C=要寫到SDA上的位值
;=================
BITOUT:
    SDA_OUT                ;設置SDA為輸出口
    JBS    R3,C
    JMP    BIT0
    BS    PROT_I2C,SDA        ;SDA=C=1
    JMP    CLK1       
BIT0:
    BC    PROT_I2C,SDA        ;SDA=C=0
CLK1:
    NOP                ;延時0.6US
    BS    PROT_I2C,SCL        ;SCL=1
BIT2:
    NOP
    NOP
    BC    PROT_I2C,SCL        ;SCL=0
    RET
;============================
;接收數據子程序
;入口:    TT_24.REND_24    =讀完畢標志
;出口:    DBUF_24    =接受到的數據(8_BIT)
;============================
RX:
    MOV    A,@8            ;循環次數=8
    MOV    COUNT_24,A
    CLR    DBUF_24
RXLP:
    CALL    BITIN            ;輸入1_BIT
    RLC    DBUF_24            ;左移(帶C)
    DJZ    COUNT_24        ;循環結束?
    JMP    RXLP
;設置應答信號位,如果讀完畢則送1(NO_ACK)停止接受,否則送0(ACK)繼續接受
    BS    R3,C       
    JBS    TT_24,REND_24        ;讀完畢信號->C
    BC    R3,C       
    CALL    BITOUT            ;應答           
    RET
;============================
;發送數據子程序
;入口:    DBUF_24    =要發送的數據(8_BIT)
;============================
TX:
    MOV    A,@8            ;循環次數=8
    MOV    COUNT_24,A
TXLP:
    RLC    DBUF_24            ;左移(帶C)
    CALL    BITOUT            ;輸出1_BIT
    DJZ    COUNT_24        ;循環結束?
    JMP    TXLP       
    CALL    BITIN            ;讀應答信號
    RET

;****************************
;I2C總線讀/寫的程序全部結束 !
;****************************

簽名:


如果你的‘芯’是一座作坊,
我愿做那不知疲倦的程序匠……

 freego 發表于 2002-4-21 12:53 侃單片機 ←返回版面    

小弟提問?

1、匠人兄在“TX”中讀得應答位,小弟沒看懂如果讀得值為“1”即沒有應答該如何處理?
2、匠人兄在“WRPAGE”中將寫入次數循環“NUM_24”次不知有否考慮當寫入字節數超越頁界(如每頁16BYTES、32BYTES)時數據地址溢出而覆蓋頁首的問題?
   

 程序匠人 發表于 2002-4-21 15:30 侃單片機 ←返回版面    

答復freego

1、匠人兄在“TX”中讀得應答位,小弟沒看懂如果讀得值為“1”即沒有應答該如何處理?
答:這段程序中,沒有對可能的錯誤做處理(因為我的設計中,I2C總線上只掛了一個器件),在“TX”中讀得應答位,只是為了輸出一個CLOCK。


2、匠人兄在“WRPAGE”中將寫入次數循環“NUM_24”次不知有否考慮當寫入字節數超越頁界(如每頁16BYTES、32BYTES)時數據地址溢出而覆蓋頁首的問題?
答:既然是頁寫/頁讀,當然只針對頁內進行操作了。如果要跨頁,我不是還有單字節寫/讀程序嗎?只要再做一段循環程序去調用即可。


歡迎大家把這段程序繼續完善。   

簽名:


如果你的‘芯’是一座作坊,
我愿做那不知疲倦的程序匠……

 zhhch 發表于 2002-4-21 23:40 侃單片機 ←返回版面    

向程序匠人學習,現貼上我寫24xx讀寫程序,以供交流。我有emc_wice專業漢化版(本人漢化),歡迎索取!

該程序系51程序改寫而來,我現在正用著呢!

;=====================寫EEPROM程序 ========================================
;功能:從KEY_BUF取數據,寫入EEPROM中SUB_ADR,連續寫BYTE_CNT個字節
;入口:SUB_ADR        出口:NONE                   
;影響資源:A,DATA_BUF,P6,STU,BIT_CNT,BYTE_CNT,SUB_ADR                                             
;===============================================
WR_UEE:                            ;將KEY_BUF中客密碼寫EEPROM
        MOV     SUB_ADR,@U_EE
        MOV     BYTE_CNT,@0X06            ;設置字節計數器為6
        JMP     WR_EE
;------------------------------------------------------------------------       
WR_SEE:                            ;將KEY_BUF中主密碼寫EEPROM
        MOV     SUB_ADR,@S_EE
        MOV     BYTE_CNT,@0X07            ;設置字節計數器為7
;------------------------------------------------------------------------       
WR_EE:
        MOV     EEP6_BUF,EE    ;保護EE口
        BS      EE,PW          ;EEPROM上電
        BC      EE,WP          ;清除EEPROM的寫保護       
        CALL    BSTART         ;啟動IIC
        MOV     A,@WREE        ;發送寫器件地址
        MOV     DATA_BUF,A
        CALL    SENDBYTE
        JBC     STU,GP        
        JMP     WR_RET        ;無應答返回
        MOV     A,SUB_ADR     ;發送寫單元地址
        MOV     DATA_BUF,A
        CALL    SENDBYTE
        JBC     STU,GP
        JMP     WR_RET        ;無應答返回
        MOV     A,@KEY_BUF    ;設置待寫數據區首址
        MOV     R4,A
WR_NEXT:
        MOV     A,R0
        MOV     DATA_BUF,A    ;取待寫數據
        CALL    SENDBYTE
        JBC     STU,GP
        JMP     WR_RET        ;無應答返回
        INC     R4
        DJZ     BYTE_CNT
        JMP     WR_NEXT
       
        CALL    BSTOP         ;停止IIC
        CALL    DELAY10       ;延時10MS,等待數據寫完
WR_RET:
        BC      EE,PW          ;EEPROM下電
;---------------------------------------------------------       
        IOR     EE             ;設置SDA為輸出
        AND     A,@0B11110111  ;**************************
        IOW     EE
;---------------------------------------------------------
        MOV     EE,EEP6_BUF    ;恢復EE口現場
        RET
;=====================讀EEPROM程序 ========================================
;功能:讀EEPROM,寫入PSW_BUF,連續寫BYTE_CNT個字節
;入口:SUB_ADR       出口:NONE                   
;影響資源:A,DATA_BUF,P6,STU,BIT_CNT,BYTE_CNT,SUB_ADR                                             
;==============================================
RD_UEE:                            ;讀6位客密碼到PSW_BUF
        MOV     SUB_ADR,@U_EE
        MOV     BYTE_CNT,@0X05            ;設置字節計數器為6-1
        JMP     RD_EE
;------------------------------------------------------------------------       
RD_SEE:                            ;讀7位密碼到PSW_BUF
        MOV     SUB_ADR,@S_EE
        MOV     BYTE_CNT,@0X06            ;設置字節計數器為7-1
;------------------------------------------------------------------------       
RD_EE:   
        MOV     EEP6_BUF,EE    ;保護EE口   
        BS      EE,PW          ;EEPROM上電
        BS      EE,WP          ;設置EEPROM的寫保護       
        CALL    BSTART         ;啟動IIC
        MOV     A,@WREE        ;發送寫器件地址
        MOV     DATA_BUF,A
        CALL    SENDBYTE
        JBC     STU,GP        
        JMP     RD_RET         ;無應答返回
        MOV     A,SUB_ADR      ;發送寫單元地址
        MOV     DATA_BUF,A
        CALL    SENDBYTE
        JBC     STU,GP
        JMP     RD_RET         ;無應答返回
        CALL    BSTART         ;重新啟動IIC
        MOV     A,@RDEE        ;發送讀器件地址
        MOV     DATA_BUF,A
        CALL    SENDBYTE
        JBC      STU,GP        
        JMP     RD_RET         ;無應答返回
       
        MOV     A,@PSW_BUF     ;設置讀出數據存放首址
        MOV     R4,A
RD_NEXT:
        BC      STU,GP         ;連續接收BYTE_CNT-1字節數據
        CALL    RCVBYTE        ;并發送應答信號
        MOV     A,DATA_BUF
        MOV     R0,A
        INC     R4
        DJZ     BYTE_CNT
        JMP     RD_NEXT
       
        BS      STU,GP         ;接收最后一個字節數據
        CALL    RCVBYTE        ;并發送非應答信號
        MOV     A,DATA_BUF
        MOV     R0,A
        CALL    BSTOP          ;停止IIC
       
RD_RET:
        BC      EE,PW           ;EEPROM下電
;---------------------------------------------------------       
        IOR     EE             ;設置SDA為輸出
        AND     A,@0B11110111  ;**************************
        IOW     EE
;---------------------------------------------------------        
        MOV     EE,EEP6_BUF     ;恢復EE現場
        RET
       
;============================延時子程序====================================
;功能:短延時         入口:NONE             出口:NONE                    
;影響資源:A,TEMP ,STATUS                                                     
;==================================================
DELAY:                        
        MOV         A,@0X01
        MOV         TEMP,A
        DJZ         TEMP
        JMP         $-1
        RET           
;============================延時子程序10MS================================
;功能:延時         入口:NONE             出口:NONE                    
;影響資源:A,TEMP ,STATUS                                                     
;=================================================
DELAY10:                        
        MOV         A,@0X20
        MOV         TEMP,A
        MOV         A,@250
        MOV         TEMP1,A
        DJZ         TEMP1
        JMP         $-1
        DJZ         TEMP
        JMP         $-5
        RET                   
;===============================啟用IIC總線================================
;功能:開啟IIC總線                                                       
;入口:NONE       出口:NONE   SCL=0,SDA=0
;影響資源:A,P6,STU                                                      
;==============================================
BSTART:
        BS      EE,SDA        ;拉高SDA和SCL
        BS      EE,SCL
        CALL    DELAY
        BC      EE,SDA        ;拉低SDA,啟動IIC
        CALL    DELAY
        BC      EE,SCL        ;拉低SCL
        RET
;===============================關閉IIC總線================================
;功能:關閉IIC總線                                                       
;入口:NONE       出口:NONE  ,SCL=1,SDA=1                                             
;影響資源:A,P6,STU                                                      
;====================================================
BSTOP:           
        BC      EE,SDA        ;拉低SDA
        BS      EE,SCL        ;拉高SCL
        CALL    DELAY
        BS      EE,SDA        ;拉高SDA,停止IIC
        CALL    DELAY    
        RET
;======================送出一個字節數據,高位在前===========================
;功能:從MCU發送一個字節給EEPROM,并接收應答信號                                     
;入口:發送位數放在DATA_BUF       出口:GP=0 表應答正確 GP=1 表應答錯誤                         
;影響資源:A,DATA_BUF,P6,STU,BIT_CNT                                             
;=============================================
SENDBYTE:               
        MOV     A,@0X08        ;準備位計數器為8
        MOV     BIT_CNT,A
SEND_B:       
        RLC     DATA_BUF       ;從DATA_BUF取數據送C
        JBC     STU,C          ;C->SDA
        BS      EE,SDA
        JBS     STU,C         
        BC      EE,SDA
        CALL    DELAY
        BS      EE,SCL         ;拉高SCL,通知接受數據
        CALL    DELAY
        BC      EE,SCL         ;拉低SCL,鉗住總線
        DJZ     BIT_CNT
        JMP     SEND_B         ;8位未發送完,繼續發送
       
        BS      EE,SDA         ;拉高SDA
;---------------------------------------------------------       
        IOR     EE             ;設置SDA為輸入
        OR      A,@0B00001000  ;**************************
        IOW     EE
;---------------------------------------------------------       
        BS      EE,SCL         ;拉高SCL,接收應答信號
        CALL    DELAY
        JBC     EE,SDA         ;SDA->GP:=0,OK,=1,ERR
        BS      STU,GP
        JBS     EE,SDA 
        BC      STU,GP
;---------------------------------------------------------       
        IOR     EE             ;設置SDA為輸出
        AND     A,@0B11110111  ;**************************
        IOW     EE
;---------------------------------------------------------       
        BC      EE,SCL         ;拉低SCL
        BC      EE,SDA         ;拉低SDA
        RET
;=====================接收一個字節數據,高位在前===========================
;功能:接收一個字節從EEPROM,并發送應答信號
;入口:接收數據放在DATA_BUF       出口:NONE                   
;影響資源:A,DATA_BUF,P6,STU,BIT_CNT                                             
;=============================================
RCVBYTE:               
        MOV     A,@0X08        ;準備位計數器為8
        MOV     BIT_CNT,A
        BS      EE,SDA
;---------------------------------------------------------       
        IOR     EE             ;設置SDA為輸入
        OR      A,@0B00001000  ;**************************
        IOW     EE
;---------------------------------------------------------       
RCV_B: 
        BC      EE,SCL         ;拉低SCL
        CALL    DELAY
        BS      EE,SCL         ;拉高SCL
        CALL    DELAY
        JBC     EE,SDA          ;SDA->C
        BS      STU,C
        JBS     EE,SDA         
        BC      STU,C
        RLC     DATA_BUF       ;DATA_BUF<-C
        DJZ     BIT_CNT
        JMP     RCV_B          ;8位未接收完,繼續接收
       
        BC      EE,SCL         ;拉低SCL,準備發送應答信號
        JBC     STU,GP         ;GP->SDA,0發應答信號,1發非應答信號
        BS      EE,SDA
        JBS     STU,GP 
        BC      EE,SDA
;---------------------------------------------------------       
        IOR     EE             ;設置SDA為輸出
        AND     A,@0B11110111  ;**************************
        IOW     EE
;---------------------------------------------------------       
        BS      EE,SCL         ;拉高SCL,送出應答信號
        CALL    DELAY
        BC      EE,SCL         ;拉低SCL,鉗住總線,等待后續操作
        BC      EE,SDA
        RET        
 

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
主站蜘蛛池模板: 国产卡1卡2卡三卡在线| 大ji巴cao死你高h男男gg| 亚洲av无码日韩av无码网站冲| 男女做爽爽视频免费观看| 国产一在线精品一区在线观看| 久久综合九色综合97伊人麻豆| 国产资源在线免费观看| japanese国产在线观看| 成人性视频在线| 久久久久亚洲AV成人无码电影 | 无码欧精品亚洲日韩一区| 久久精品视频91| 最近日本字幕免费高清| 亚洲国产精品免费在线观看| 波多野结衣和邻居老人| 免费无码黄网站在线观看| 精精国产www视频在线观看免费| 国产v在线播放| 被啪羞羞视频在线观看| 国产又黄又爽视频| 91精品免费看| 国产日韩欧美亚洲| 抽搐一进一出gif日本| 国产精品看高国产精品不卡| 91精品国产自产在线观看高清| 在线观看福利网站| 亚洲精品无码久久久久YW| 高清国产一级毛片国语| 国产白丝在线观看| 天堂在线免费观看| 国产精品夜间视频香蕉| 1000部拍拍拍18勿入免费凤凰福利 | 免费人成在线观看69式小视频| 精品国产免费一区二区三区| 可以免费看黄的网站| 性欧美videos高清喷水| 国产精品熟女一区二区| 91中文字幕在线| 国产美女爽到喷出水来视频| 97久久天天综合色天天综合色| 在线精品一区二区三区电影|