$regfile = "m16def.dat" $crystal = 8000000 $lib "lcd4busy.lib" Const _lcdport = Portb Const _lcdddr = Ddrb Const _lcdin = Pinb Const _lcd_e = 3 Const _lcd_rs = 2 Const _lcd_rw = 1 Config Twi = 100000 Config Sda = Portc.1 Config Scl = Portc.0 I2cinit Config Lcd = 16 * 2 Dim X As String * 16 Dim Y As String * 16 Dim H As Byte , L As Byte Dim C As Byte , I As Byte , S As String * 1 , Bank1 As Byte , Bank0 As Byte , Adrr As Word Dim Lsb As Byte Declare Sub Write_eeprom(byval Adresa As Word , Byval Value As Byte) Declare Sub Read_eeprom(byval Adresa As Word , Value As Byte) X = "Pokus s EEPROM " Cls Lcd X Lowerline 'zápis obsahu X(string *16) do EEPROM24C256 ' Bank1 = 0...127(127 x 256 = 32512) ' Bank0 = 0...15 (15 x 16 + 15 = 255) ' 32512 + 255 = 32767 tj. &H7FFF Bank1 = 0 'stránka po 256byte Bank0 = 10 'stránka po 16byte Bank0 = Bank0 * 16 For I = 0 To 15 S = Mid(x , I , 1) C = Asc(s) Lsb = Bank0 + I Adrr = Makeint(lsb , Bank1) Call Write_eeprom(adrr , C) Next I Locate 2 , 1 'čtení z EEPROM a uložení do Y Bank1 = 0 Bank0 = 10 Bank0 = Bank0 * 16 For I = 0 To 15 Lsb = Bank0 + I Adrr = Makeint(lsb , Bank1) Call Read_eeprom(adrr , C) Y = Y + Chr(c) Next I 'výpis obsahu Y na LCD Lcd Y Do Wait 1 Loop 'podprogramy Sub Write_eeprom(byval Adresa As Word , Byval Value As Byte) H = High(adresa) L = Low(adresa) I2cstart I2cwbyte &B10101110 'adresa 24C256(zápis) I2cwbyte H I2cwbyte L I2cwbyte Value I2cstop Waitms 10 End Sub Sub Read_eeprom(byval Adresa As Word , Value As Byte) H = High(adresa) L = Low(adresa) I2cstart I2cwbyte &B10101110 'adresa 24C256(zápis) I2cwbyte H I2cwbyte L I2crepstart I2cwbyte &B10101111 'adresa 24C256(čtení) I2crbyte Value , Nack I2cstop Waitms 10 End Sub End