音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

請大蝦看看,我這I2C的程序是那出了問題。

作者:chjman 欄目:單片機
請大蝦看看,我這I2C的程序是那出了問題。
 當讀一個字節(jié)時能正常讀出,而連續(xù)讀2字節(jié)時,只能讀出第一個字節(jié),而
第二個字節(jié)總是讀為零,疑心是應(yīng)答信號有問題。  
             ORG   0000H
             LJMP   MAIN
             ORG   0100H
           
;---------------啟動信號----------------------------
I2cStart:
        SETB    ISDA
        SETB    ISCL
        lcall   delay
        CLR     ISDA
        lcall   delay
        CLR     ISCL
        RET
;---------------停止信號----------------------------
I2cStop:
        CLR     ISDA
        lcall   delay
        SETB    ISCL
        lcall   delay
        SETB    ISDA
        lcall   delay
;        CLR     ISCL
        RET
;--------------------------------------------------
read_lm92:
I2cByteRead:
        MOV     A,#090H             
        LCALL   I2cStart
        LCALL   I2cSendByte       ;
        MOV     A,Address
        LCALL   I2cSendByte
        LCALL   I2cStart
        MOV     A,#091H
        LCALL   I2cSendByte
rdloop:
        LCALL   I2cReceiveByte

        mov     @r0,a
        inc     r0
        djnz    numb,rdack

        SETB    ISDA
        lcall   delay
        SETB    ISCL
        lcall   delay
        CLR     ISCL
        LCALL   I2cStop
        RET
rdack:                      ;疑心是這出了問題
        lcall   delay
        clr     isda        ;送應(yīng)答信號
        lcall   delay
        setb    iscl
        lcall   delay
        clr     iscl
        ljmp    rdloop       ;讀下一字節(jié)

;--------------------------------------------------
write_lm92:
I2cByteWrite:
        LCALL   I2cStart
        MOV     A,#090H
        LCALL   I2cSendByte
        MOV     A,Address
        LCALL   I2cSendByte

wrloop:
        MOV     A,@r0
        LCALL   I2cSendByte
        inc     r0
        djnz    numb,wrloop

        LCALL   I2cStop
        RET
;--------------------------------------------------
I2cSendByte:
        MOV     R7,#8
SendLP: RLC     A
        MOV     ISDA,C
        lcall   delay
        SETB    ISCL
        lcall   delay
        CLR     ISCL
        lcall   delay
        DJNZ    R7,SendLP
        SETB    ISDA
        lcall   delay
ack:                       ;應(yīng)答信號
        clr     iscl
        lcall   delay
        SETB    ISCL
        lcall   delay
        jb      ISDA,ack
        clr     iscl
        RET

;--------------------------------------------------
I2cReceiveByte:
        MOV     R7,#8
        mov     a,#00h
ReceiveLP:
        lcall   delay
        SETB    ISCL
        lcall   delay
        MOV     C,ISDA
       &nbs
2樓: >>參與討論
chjman
找到了
 
3樓: >>參與討論
sxkun
弱弱的問一下,請教一下!
請問該程序為什么要先(發(fā)送)I2cSendByte,然后在I2cReceiveByte(接受),請問發(fā)送的是主機的數(shù)據(jù)和地址,那么接受的又是什么呢?為什么在主機發(fā)送的過程中,還要接受數(shù)據(jù)呢?有點搞不明白!

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
各位高手幫我看看錯誤在哪里
關(guān)于C51中結(jié)構(gòu)體的使用問題請教
初學(xué)者,望前輩指點關(guān)于串口通信的問題
求助
89s52
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號