Code:
DEFINE OSC 20
DPIN VAR PORTB.2 'I2C DATA PIN
CPIN VAR PORTB.1 'I2C CLOCK PIN
CONT1 CON %10100001 'READ CONTROL
CONT0 CON %10100000 'WRITE CONTROL
ADDR_HB VAR BYTE
ADDR_LB VAR BYTE
DATOW VAR BYTE
ACK VAR BIT
ADDR_HB = 0'%00000000
ADDR_LB = 0'%00000000
DATOW VAR BYTE
CNT VAR BYTE
CNT = 0
START:
CNT = CNT + 1
DATOW = 245
GOSUB WRITE_DATA
PAUSE 10
GOSUB READ_DATA
LCDOUT $FE,1,"TEST ",DEC CNT
lcdout $FE,$C0,"DATA IN ",DEC DATI
lcdout $FE,$90,"LB ",DEC ADDR_LB
PAUSE 250
GOTO START
WRITE_DATA:
ADDR_LB = ADDR_LB + 1
GOSUB START_ROM
SHIFTOUT DPIN,CPIN,1,[CONT0]
SHIFTIN DPIN,CPIN,0,[ACK\1]
SHIFTOUT DPIN,CPIN,1,[ADDR_HB]
SHIFTIN DPIN,CPIN,0,[ACK\1]
SHIFTOUT DPIN,CPIN,1,[ADDR_LB]
SHIFTIN DPIN,CPIN,0,[ACK\1]
SHIFTOUT DPIN,CPIN,1,[DATOW\8]
SHIFTOUT DPIN,CPIN,1,[%1\1]
GOSUB STOP_ROM
PAUSE 10
RETURN
READ_DATA:
GOSUB START_ROM
SHIFTOUT DPIN,CPIN,1,[CONT0]
SHIFTIN DPIN,CPIN,0,[ACK\1]
SHIFTOUT DPIN,CPIN,1,[ADDR_HB]
SHIFTIN DPIN,CPIN,0,[ACK\1]
SHIFTOUT DPIN,CPIN,1,[ADDR_LB]
SHIFTIN DPIN,CPIN,0,[ACK\1]
GOSUB START_ROM
SHIFTOUT DPIN,CPIN,1,[CONT1]
SHIFTIN DPIN,CPIN,0,[ACK\1]
SHIFTIN DPIN,CPIN,0,[DATI\8]
SHIFTOUT DPIN,CPIN,1,[%1\1]
GOSUB STOP_ROM
PAUSE 10
RETURN
START_ROM:
HIGH CPIN:HIGH DPIN:LOW DPIN:RETURN
STOP_ROM:
HIGH CPIN:LOW DPIN:HIGH DPIN:RETURN
Make sure you have ANALOG turned off!!
Bookmarks