can anyone please let me know what could be the problem or error in this code (interfacing of serial eeprom at24c02 with at89s52)...i want the output to be read in hyper terminal,,so i have written the following program for that,,,plz anyone here check this out and let my know the errors in the code,,I shall be very very thankful..::::
$mod51
org 0h
main:
sda equ P2.1
scl equ P2.2
mov dpl,#00h
mov dph,#00h
mov r5,#'3'
eeprom_write:
lcall i2c_start
lcall eeprom_write_addr
lcall ack
mov a,dpl
lcall i2c_write
lcall ack
mov a,dph
lcall i2c_write
lcall ack
mov a,r5
lcall i2c_write
lcall ack
lcall i2c_stop
lcall delay
eeprom_read:
lcall i2c_start
lcall eeprom_write_addr
lcall ack
mov a,dpl
lcall i2c_write
lcall ack
lcall i2c_start
lcall eeprom_read_addr
lcall ack
lcall i2c_read
lcall no_ack
lcall i2c_stop
lcall serial
eeprom_read_addr:
mov a,#10100001b
lcall i2c_write
ret
eeprom_write_addr:
mov a,#10100000b
lcall i2c_write
ret
i2c_read:
mov r0,#8
read: setb sda
nop
setb scl
nop
mov c,sda
rrc a
clr scl
djnz r0,read
mov r6,a
ret
i2c_write:
mov r1,#8
write:
rlc a
mov sda,c
lcall clock
djnz r1,write
ret
i2c_start:
setb scl
nop
setb sda
nop
clr sda
nop
clr scl
nop
ret
i2c_stop:
setb scl
nop
clr sda
nop
setb sda
nop
clr scl
ret
clock: setb scl
nop
clr scl
nop
ret
ack: setb sda
nop
setb scl
nop
cc: jb sda,cc
clr scl
ret
no_ack: setb sda
nop
setb scl
nop
dd: jnb sda,dd
clr scl
nop
ret
delay:
loopB: mov r2,#200
loopA: mov r3,#250
nop
nop
nop
aa: djnz r3,aa
bb: djnz r2,bb
;////////////////////////////////
; INDICATE FOR SERIAL TRANSMISSION
serial: MOV TMOD,#20H ; TIMER 1 MODE 2
MOV TH1,#-3 ; FOR Baud rate
MOV SCON,#50h
main1: setb tr1 ;START TIMER
mov sbuf,r6
here:jnb ti,here
clr ti ;clear TI flag
sjmp main1
end