nikhildascl
Full Member level 3
- Joined
- Apr 15, 2012
- Messages
- 150
- Helped
- 15
- Reputation
- 30
- Reaction score
- 14
- Trophy points
- 1,318
- Location
- Kerala, India
- Activity points
- 2,115
I've written the code for EEPROM with 89c52. But it is not working. My code is given below. Please help...
Code:
ORG 00H
SDA EQU P1.4
SCL EQU P1.5
;I2C
LCALL I2C_START
MOV A,0xA0
LCALL I2C_SEND
LCALL ACK
MOV A,0x01
LCALL I2C_SEND
LCALL ACK
MOV A,#3FH ; send 3Fh
LCALL I2C_SEND
LCALL ACK
LCALL I2C_STOP
CLR P2.0
LCALL DELAY
;................
LCALL I2C_START
MOV A,0xA0
LCALL I2C_SEND
LCALL ACK
MOV A,0x10
LCALL I2C_SEND
LCALL ACK
MOV A,0xA1
LCALL I2C_SEND
LCALL ACK
MOV A,0x00
LCALL I2C_SEND
LCALL ACK
LCALL I2C_STOP
AGAIN: SJMP AGAIN
;I2C START
I2C_START:
SETB SDA
LCALL DELAY
SETB SCL
LCALL DELAY
CLR SDA
LCALL DELAY
CLR SCL
LCALL DELAY
RET
;I2C STOP
I2C_STOP:
CLR SDA
LCALL DELAY
SETB SCL
LCALL DELAY
SETB SDA
LCALL DELAY
CLR SCL
LCALL DELAY
RET
;I2C SEND BYTE
I2C_SEND:
RLC A
MOV SDA,C
LCALL DELAY
SETB SCL
LCALL DELAY
CLR SCL
LCALL DELAY
RET
;I2C RECEIVE BYTE
I2C_READ:
SETB SDA
LCALL DELAY
SETB SCL
MOVC A,@A+DPTR
LCALL DELAY
CLR SCL
CLR SDA
RET
;ACKNOWLEDGE
ACK:
SETB SCL
LCALL DELAY
LCALL DELAY
CLR SCL
RET
; DELAY PROGRAM
DELAY:
MOV R3,#255
HERE: MOV R4,#255
HERE2: DJNZ R2,HERE2
DJNZ R1,HERE
RET