??? 01/10/07 02:51 Read: times |
#130553 - My Code Responding to: ???'s previous message |
Pull-up resistors are 4.7Kohm and microcontroller is AT89S52.
$MOD51 ORG 00H SCL EQU P2.0 SDA EQU P2.1 VERI EQU 30H MOV IE,#00H MOV DPL,#10H ;DATA will be written to 0010H MOV VERI,#0FH ;DATA is 0FH ACALL EEPROM_WRITE ;GOTO Write operation NOP ACALL EEPROM_READ ;GOTO Read operation MOV P1,VERI GO: NOP AJMP GO EEPROM_WRITE: LCALL I2C_START ;I2C Start will be given LCALL EE_ADD_WR ;Device selection will be done with R/W=0 JB PSW.5,EEPROM_WRITE MOV A,DPH ; LCALL I2C_WRITE ; LCALL ACK ; JB PSW.5,EEPROM_WRITE ; ;Address is being written MOV A,DPL ; LCALL I2C_WRITE ; LCALL ACK ; JB PSW.5,EEPROM_WRITE ; MOV A,VERI LCALL I2C_WRITE LCALL ACK ;DATA is being written to 0010H location JB PSW.5,EEPROM_WRITE LCALL I2C_STOP LCALL WAIT RET EEPROM_READ: LCALL I2C_START ;Start command LCALL EE_ADD_WR ;Device selection will be done with R/W=0 JB PSW.5,EEPROM_READ MOV A,DPH ; LCALL I2C_WRITE ; LCALL ACK ; JB PSW.5,EEPROM_READ ; ;Address location which will be read is being specified MOV A,DPL ; LCALL I2C_WRITE ; LCALL ACK ; JB PSW.5,EEPROM_READ ; LCALL I2C_START ;RepeatedStart LCALL EE_ADD_RD ;Device selection will be done with R/W=1 LCALL I2C_READ ;DATA is being read to ACC. LCALL NO_ACK ;NoACK will be given by Master LCALL I2C_STOP LCALL WAIT RET EE_ADD_WR: MOV A,#0A0H LCALL I2C_WRITE LCALL ACK RET EE_ADD_RD: MOV A,#0A1H LCALL I2C_WRITE LCALL ACK RET I2C_WRITE: MOV R7,#8D CLR C LOOP: RLC A MOV SDA,C LCALL CLOCK DJNZ R7,LOOP RET I2C_READ: MOV R7,#8D LOOP2: SETB SDA SETB SCL NOP NOP MOV C,SDA RLC A CLR SCL NOP NOP DJNZ R7,LOOP2 MOV VERI,A RET I2C_START: SETB SCL SETB SDA NOP CLR SDA NOP CLR SCL RET I2C_STOP: SETB SCL CLR SDA NOP SETB SDA NOP CLR SCL RET ACK: CLR SCL SETB SCL NOP JNB SDA,GO_ON SETB PSW.5 CLR SCL RET GO_ON: CLR SCL RET NO_ACK: CLR SCL SETB SDA SETB SCL NOP CLR SCL CLR SDA RET CLOCK: SETB SCL NOP NOP CLR SCL RET WAIT: MOV B,#20d ; LOOP3: MOV R1,#0FFH ; LOOP4: NOP ; DJNZ R1,LOOP4 ;Approximately 5mS time delay for write operation of DJNZ B,LOOP3 ;ATMEL24C32A RET ; END |
Topic | Author | Date |
I2C clock freq. | 01/01/70 00:00 | |
Incorrect | 01/01/70 00:00 | |
release SDA bit | 01/01/70 00:00 | |
My Code | 01/01/70 00:00 | |
bingo! I guessed it! | 01/01/70 00:00 | |
No Change... | 01/01/70 00:00 | |
Please can you comment your code | 01/01/70 00:00 | |
Define Bad | 01/01/70 00:00 | |
Why? | 01/01/70 00:00 | |
'scope | 01/01/70 00:00 | |
'scope | 01/01/70 00:00 | |
New Image | 01/01/70 00:00 | |
look at the I2C document...![]() | 01/01/70 00:00 |