This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

24c04 Read & Write

Hi,

I am looking for simple read and write routines for I2C interface between Atmel low-end 89C55 microcontroller and 24C04 serial EEPROM.(esp. assembly code)

Any help would be great .

Thanks in Advance.

Parents
  • If you are interested in improving your knowledge follow what others have mentioned above...but if you just need the code...

    
    ;RAM LOCATION USED IN THIS MODULE 70H
    ;THIS IS A WORKING PROGRAM, TESTED ON 24C04 SERIAL MEMORY IC
    ;THE SAME CODE CAN BE USED FOR OTHER I2C IC'S WITH MODIFICATION.
    
    
    
    WTCMD 	EQU 10100000B		;24C04 WRITE COMMAND
    RDCMD 	EQU 10100001B		;24C04 READ COMMAND
    ADDRS	EQU 70H
    
    SCL 	EQU P3.6		;SERIAL CLOCK PIN
    SDA 	EQU P3.7		;SERIAL DATA PIN
    
    
    	ORG 0000H
    	LJMP START
    
    	ORG 0030H
    START:
    	MOV P1,#01H
    
    	MOV R1,#55H		;
    	MOV A,#00		;WRITE THE DATA IN R1 REGISTER INTO
    	MOV ADDRS,A		;ADDRESS POINTED BY ADDRS INTO TEH 24C04
    	LCALL WRITE		;
    
    	LCALL L_DELAY
    
    	MOV A,#00		;
    	MOV ADDRS,A		;READ THE DATA FROM 24C04 FROM THE MEMORY
    	LCALL READ		;LOCATION POINTED BY ADDRS AND STORE IN R2
    	MOV A,R2		;
    
    	MOV P1,A		;MOVE THE RED BACK DATA ONTO P0
    
    	LCALL L_DELAY
    
    	LJMP START
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ;THIS IS USED TO WRITE INTO 24C04
    ;ARGUMENTS1 --> ADDRS => ADDRESS TO BE WRITTEN INTO,IN 24C04 MEMORY
    ;ARGUMENTS2 --> R1 ==> DATA TO BE WRITTEN
    ;RETURN  --> NONE
    
    WRITE:
    	MOV A,#WTCMD
    	CALL OUTS
    
    	MOV A,ADDRS
    	CALL OUT
    
    	MOV A,R1
    	CALL OUT
    
    	CALL STOP
    
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ;THIS SUB ROUTINE IS USED TO READ DATA FROM THE 24C04
    ;ARGUMENTS --> ADDRS ==> ADDRESS IN 24C04,THE DATA SHOULD BE READ FROM.
    ;RETURN --> R2(DATA THAT WAS READ)
    READ:
    	MOV A,#WTCMD
    	CALL OUTS
    
    	MOV A,ADDRS
    	LCALL OUT
    
    	MOV A,#RDCMD
    	LCALL OUTS
    
    	LCALL IN
    	MOV R2,A
    
    	LCALL STOP
    
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    OUTS:
    	MOV B,#8
    	SETB SDA
    	SETB SCL
    	NOP
    	CLR SDA
    	NOP
    	CLR SCL
    
    OSLOOP:
    	RLC A
    	MOV SDA,C
    	SETB SCL
    	NOP
    	CLR SCL
    	DJNZ B,OSLOOP
    	SETB SDA
    	NOP
    	SETB SCL
    	NOP
    	CLR SCL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    OUT:
    	MOV B,#8
    OLOOP:
    	RLC A
    	MOV SDA,C
    	SETB SCL
    	NOP
    	CLR SCL
    	DJNZ B,OLOOP
    	SETB SDA
    	NOP
    	SETB SCL
    	NOP
    	CLR SCL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IN:
    	MOV B,#8
    	SETB SDA
    INLOOP:
    	CLR SCL
    	NOP
    	SETB SCL
    	MOV C,SDA
    	RLC A
    	DJNZ B,INLOOP
    	CLR SCL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    STOP:
    	CLR SDA
    	NOP
    	SETB SCL
    	NOP
    	SETB SDA
    	LCALL DLAYms
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    DLAYms:
    	MOV R6,#150
    	MOV B,#00
    MS1:	DJNZ B,$	;((2*255)+(2*255)*150
    	DJNZ B,$	;=153 MILLI SECONDS
    	DJNZ R6,MS1
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    L_DELAY:
    	MOV R7,#0AH	;153 MILLISECONDS * 10
    LLL:	LCALL DLAYms	;1.53 SECONDS
    	DJNZ R7,LLL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    	END
    

Reply
  • If you are interested in improving your knowledge follow what others have mentioned above...but if you just need the code...

    
    ;RAM LOCATION USED IN THIS MODULE 70H
    ;THIS IS A WORKING PROGRAM, TESTED ON 24C04 SERIAL MEMORY IC
    ;THE SAME CODE CAN BE USED FOR OTHER I2C IC'S WITH MODIFICATION.
    
    
    
    WTCMD 	EQU 10100000B		;24C04 WRITE COMMAND
    RDCMD 	EQU 10100001B		;24C04 READ COMMAND
    ADDRS	EQU 70H
    
    SCL 	EQU P3.6		;SERIAL CLOCK PIN
    SDA 	EQU P3.7		;SERIAL DATA PIN
    
    
    	ORG 0000H
    	LJMP START
    
    	ORG 0030H
    START:
    	MOV P1,#01H
    
    	MOV R1,#55H		;
    	MOV A,#00		;WRITE THE DATA IN R1 REGISTER INTO
    	MOV ADDRS,A		;ADDRESS POINTED BY ADDRS INTO TEH 24C04
    	LCALL WRITE		;
    
    	LCALL L_DELAY
    
    	MOV A,#00		;
    	MOV ADDRS,A		;READ THE DATA FROM 24C04 FROM THE MEMORY
    	LCALL READ		;LOCATION POINTED BY ADDRS AND STORE IN R2
    	MOV A,R2		;
    
    	MOV P1,A		;MOVE THE RED BACK DATA ONTO P0
    
    	LCALL L_DELAY
    
    	LJMP START
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ;THIS IS USED TO WRITE INTO 24C04
    ;ARGUMENTS1 --> ADDRS => ADDRESS TO BE WRITTEN INTO,IN 24C04 MEMORY
    ;ARGUMENTS2 --> R1 ==> DATA TO BE WRITTEN
    ;RETURN  --> NONE
    
    WRITE:
    	MOV A,#WTCMD
    	CALL OUTS
    
    	MOV A,ADDRS
    	CALL OUT
    
    	MOV A,R1
    	CALL OUT
    
    	CALL STOP
    
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ;THIS SUB ROUTINE IS USED TO READ DATA FROM THE 24C04
    ;ARGUMENTS --> ADDRS ==> ADDRESS IN 24C04,THE DATA SHOULD BE READ FROM.
    ;RETURN --> R2(DATA THAT WAS READ)
    READ:
    	MOV A,#WTCMD
    	CALL OUTS
    
    	MOV A,ADDRS
    	LCALL OUT
    
    	MOV A,#RDCMD
    	LCALL OUTS
    
    	LCALL IN
    	MOV R2,A
    
    	LCALL STOP
    
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    OUTS:
    	MOV B,#8
    	SETB SDA
    	SETB SCL
    	NOP
    	CLR SDA
    	NOP
    	CLR SCL
    
    OSLOOP:
    	RLC A
    	MOV SDA,C
    	SETB SCL
    	NOP
    	CLR SCL
    	DJNZ B,OSLOOP
    	SETB SDA
    	NOP
    	SETB SCL
    	NOP
    	CLR SCL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    OUT:
    	MOV B,#8
    OLOOP:
    	RLC A
    	MOV SDA,C
    	SETB SCL
    	NOP
    	CLR SCL
    	DJNZ B,OLOOP
    	SETB SDA
    	NOP
    	SETB SCL
    	NOP
    	CLR SCL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    IN:
    	MOV B,#8
    	SETB SDA
    INLOOP:
    	CLR SCL
    	NOP
    	SETB SCL
    	MOV C,SDA
    	RLC A
    	DJNZ B,INLOOP
    	CLR SCL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    STOP:
    	CLR SDA
    	NOP
    	SETB SCL
    	NOP
    	SETB SDA
    	LCALL DLAYms
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    DLAYms:
    	MOV R6,#150
    	MOV B,#00
    MS1:	DJNZ B,$	;((2*255)+(2*255)*150
    	DJNZ B,$	;=153 MILLI SECONDS
    	DJNZ R6,MS1
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    
    
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    L_DELAY:
    	MOV R7,#0AH	;153 MILLISECONDS * 10
    LLL:	LCALL DLAYms	;1.53 SECONDS
    	DJNZ R7,LLL
    	RET
    ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    	END
    

Children