|
|||||||||||
| 技術(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 欄目:單片機 |
當讀一個字節(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 于 2005/3/30 9:46:00 發(fā)布:
找到了 |
|
| 3樓: | >>參與討論 |
| 作者: sxkun 于 2005/4/4 11:46:00 發(fā)布:
弱弱的問一下,請教一下! 請問該程序為什么要先(發(fā)送)I2cSendByte,然后在I2cReceiveByte(接受),請問發(fā)送的是主機的數(shù)據(jù)和地址,那么接受的又是什么呢?為什么在主機發(fā)送的過程中,還要接受數(shù)據(jù)呢?有點搞不明白! |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |