EngineersGarage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise
You are here: Home / Replies / Hi…  please can any one

Hi…  please can any one

|

Microcontroller › 8051 › Interfacing AT24c64 with 89c52 › Hi…  please can any one

July 29, 2013 at 6:59 am #10235
Jenifer
Participant

Hi…

  please can any one help me…

I need to interface AT24c64 with 89c52. here is my asm code… i cannot write even 00h to eeprom.
please debug my code and guide me…

org 0000h
sjmp start
start:
mov p1,#0ffh ; initializing port 1 as input
lcall none
sjmp start
none:ret
lcall write
lcall read
lcall none
;********** Write Routine*******
write:
mov r3,#00h ; mem address high ; is the address in eeprom where data will start
mov r4,#00h ;mem address low
mov r1,#00h ; byte to be send to eeprom is stored in r1
lcall bytewr
ret
bytewr:
lcall eepstart ; start to write
mov a,#0a0h ; eeprom write command
lcall send
mov a,r3
lcall send
mov a,r4
lcall send
mov a,r1
lcall send
lcall stop ;stop
ret

;********Transmission of data one by one********

send:
mov r2,#08h ; data transmission for 8 bits
bck:
rlc a
jc bck1
clr p1.1 ; if carry low clear data
setb p1.0
clr p1.0
djnz r2,bck
sjmp ack
bck1:
setb p1.1 ;if carry high set data
setb p1.0
clr p1.0
djnz r2,bck

;******** acknowledgement from eeprom*********
ack: ;ack from eeprom
setb p1.0
clr p1.0
ret
;*******read data routine********
read:
mov r3,#00h
mov r4,#00h
lcall byterd
mov r1,a
ret

byterd:
lcall eepstart ; start to read
mov a,#0a0h
lcall send
mov a,r4
lcall send
lcall stop
lcall cread
ret

cread:
lcall eepstart
mov a,#0a1h ;read command
lcall send
lcall recv
mov r1,a ; store data
lcall stop ; stop
ret
;**********receving data one by one********
recv:
mov r2,#08h
setb p1.1
rec:
clr p1.0
setb p1.0
clr c
jnb p1.1,rec1
cpl c
rec1:
rlc a
djnz r2,rec
clr p1.0
ret
;******** Start routine********
eepstart:
setb p1.1 ; high to low transistion of data with high clock
clr p1.0
setb p1.0
clr p1.1
clr p1.0
ret
; ***********Stop routine********
stop:
clr p1.1 ; low to high transistion of data with high clock
setb p1.0
setb p1.1
ret

end

Thanks in advance…

RSS Recent Posts

  • EasyEda program has a major bug April 13, 2026
  • understanding transmission line properties from TDR plot April 13, 2026
  • Search term needed for remote control hobby. April 13, 2026
  • Decoupling Cap placement. April 12, 2026
  • isolating S-params in of PCB board without connectors April 12, 2026

Stay Up To Date

Newsletter Signup
EngineersGarage

Copyright © 2026 WTWH Media LLC. All Rights Reserved. The material on this site may not be reproduced, distributed, transmitted, cached or otherwise used, except with the prior written permission of WTWH Media
Privacy Policy | Advertising | About Us

Search Engineers Garage

  • Engineers Garage Main Site
  • Visit our active EE Forums
    • EDABoard.com
    • Electro-Tech-Online
  • Projects & Tutorials
    • Circuits
    • Electronic Projects
    • Tutorials
    • Components
  • Digi-Key Store
    • Cables, Wires
    • Connectors, Interconnect
    • Discrete
    • Electromechanical
    • Embedded Computers
    • Enclosures, Hardware, Office
    • Integrated Circuits (ICs)
    • Isolators
    • LED/Optoelectronics
    • Passive
    • Power, Circuit Protection
    • Programmers
    • RF, Wireless
    • Semiconductors
    • Sensors, Transducers
    • Test Products
    • Tools
  • Advertise