'-------------------------------------------------------------- ' (c) 1997,1998 MCS Electronics '-------------------------------------------------------------- ' file: I2C.BAS ' demo: I2CSEND and I2CRECEIVE '-------------------------------------------------------------- Declare Sub Write_eeprom(adres As Byte , Value As Byte) Declare Sub Read_eeprom(adres As Byte , Value As Byte) Dim Addressw As Const 174 , Addressr As Const 175'declare constants Dim B1 As Byte , Adres As Byte , Value As Byte'dim byte Call Write_eeprom(1 , 3) 'write value of three to address 1 of EEPROM Call Read_eeprom(1 , Value) : Print Value'read it back Call Read_eeprom(5 , Value) : Print Value'again for address 5 '-------- now write to a PCF8474 I/O expander ------- I2csend &H40 , 255 'all outputs high I2creceive &H40 , B1 'retrieve input Print "Received data " ; B1 'print it End Rem Note That The Slaveaddress Is Adjusted Automaticly With I2csend & I2creceive Rem This Means You Can Specify The Baseaddress Of The Chip. 'sample of writing a byte to EEPROM AT2404 Sub Write_eeprom(adres As Byte , Value As Byte) I2cstart 'start condition I2cwbyte Addressw 'slave address I2cwbyte Adres 'asdress of EEPROM I2cwbyte Value 'value to write I2cstop 'stop condition Waitms 10 'wait for 10 milliseconds End Sub 'sample of reading a byte from EEPROM AT2404 Sub Read_eeprom(adres As Byte , Value As Byte) I2cstart 'generate start I2cwbyte Addressw 'slave adsress I2cwbyte Adres 'address of EEPROM I2cstart 'repeated start I2cwbyte Addressr 'slave address (read) I2crbyte Value , 9 'read byte I2cstop 'generate stop End Sub