Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
01/10/07 21:27
Read: times


 
#130601 - No Change...
Responding to: ???'s previous message
Unfortunately, when I added the SETB SDA command (to release SDA), nothing changed. It is impossible to understand for me what is the problem. Firstly I have started to study I2C bus protocol with 24C02. There was no problem on simulation and also real application. The program which you see below is the 24C02(ST Electronics) write&read operation. The only difference is the DPH address specification sub program part for the 24C32. So, what is the reason which causes to failure? Suggestions please.
Batuhan

$MOD51
	ORG 00H
SCL	EQU P2.0
SDA	EQU P2.1
VERI	EQU 30H
	MOV IE,#00H
	MOV DPL,#10H
	MOV VERI,#01H
	ACALL EEPROM_WRITE
	NOP
	ACALL EEPROM_READ
	MOV P1,VERI
GO:	NOP
	AJMP GO

EEPROM_WRITE:
	LCALL I2C_START
	LCALL EE_ADD_WR
	JB PSW.5,EEPROM_WRITE
	MOV A,DPL
	LCALL I2C_WRITE
	LCALL ACK
	JB PSW.5,EEPROM_WRITE
	MOV A,VERI
	LCALL I2C_WRITE
	LCALL ACK
	JB PSW.5,EEPROM_WRITE
	LCALL I2C_STOP
	LCALL WAIT
	RET
EEPROM_READ:
	LCALL I2C_START
	LCALL EE_ADD_WR
	JB PSW.5,EEPROM_READ
	MOV A,DPL
	LCALL I2C_WRITE
	LCALL ACK
	JB PSW.5,EEPROM_READ
	LCALL I2C_START
	LCALL EE_ADD_RD
	LCALL I2C_READ
	LCALL NO_ACK
	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,#41d
LOOP3:	MOV R1,#0FFH
LOOP4:	NOP	
	DJNZ R1,LOOP4		
	DJNZ B,LOOP3
	RET
END


List of 13 messages in thread
TopicAuthorDate
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      

Back to Subject List