I2c in At89c2051 .....

O

operator6wp

Guest
HI, Imam eno težavo pri VSMproteus ....
Včasih sem At89c2051 in 24c04a za simulacijo I2C in PFC8583 in ne morem brati I2C bajt podatkov iz EEPROM ...so jeklene 0 Vrednost ...ampak v dnevniku pogled I2C so podatki ok brati ....
I povezati SCL in SDA, P3.0, P3.1 ....

I2C_read:

SETB SDA
MOV B, # 8
I2C_R: RAZPIS I2C_wait; (nop's sub)
SETB SCL
MOV C SDA
CLR SCL
RLC A
DJNZ b, I2C_R
RETv sda ni sprememb bitov ....kako brati ...kaj je narobe ....HELP!

vendar, ko sem prekiniti Ura pcf8583 iz I2C bus, EEPROM simulacija je delo v redu ...kaj ....

 
IIC_START MAKRO
SETB SDA
SETB SCL
CLR SDA
CLR SCL
ENDM
IIC_STOP MAKRO
CLR SDA
SETB SCL
SETB SDA
CLR SCL
ENDM
IIC_DT_0 MAKRO
CLR SDA
SETB SCL
CLR SCL
ENDM
IIC_DT_1 MAKRO
SETB SDA
SETB SCL
CLR SCL
ENDM
IIC_RD_BIT MAKRO
SETB SDA
SETB SCL
CLR SCL
MOV C SDA
ENDM
IIC_DV_ADDR MAKRO
IIC_DT_1
IIC_DT_0
IIC_DT_1
IIC_DT_0
IIC_DT_0
IIC_DT_0
IIC_DT_0
ENDM

;------------------------------
IIC_READ:
IIC_START
IIC_DV_ADDR
IIC_DT_1
IIC_DT_1
MOV R2, # 8
IIC_R_L1:
IIC_RD_BIT
RLC A
DJNZ R2, IIC_R_L1
MOV IIC_BUF, A
IIC_STOP
RET
;------------------------------
IIC_WR_ADDR:
IIC_START
IIC_DV_ADDR
IIC_DT_0
IIC_DT_1; ACK
MOV A, R7
MOV R2, # 8
IIC_WA_L1:
RLC A
MOV SDA, C
SETB SCL
CLR SCL
DJNZ R2, IIC_WA_L1
IIC_DT_1; ACK
IIC_STOP
RET
;------------------------------
IIC_WRITE:
IIC_START
IIC_DV_ADDR
IIC_DT_0
IIC_DT_1; ACK
MOV A, R7
MOV R2, # 8
IIC_W_L1:
RLC A
MOV SDA, C
SETB SCL
CLR SCL
DJNZ R2, IIC_W_L1
IIC_DT_1; ACK
MOV A, R6
MOV R2, # 8
IIC_W_L2:
RLC A
MOV SDA, C
SETB SCL
CLR SCL
DJNZ R2, IIC_W_L2
IIC_DT_1; ACK
IIC_STOP
RET

 

Welcome to EDABoard.com

Sponsor

Back
Top