Mam problem z eeprom tzn. wszystko ładnie chodzi, ale jak wyświetlam tekst (lcd 2x16) to wyświetla mi tylko 11 znaków czyli nie całą jedną linijkę.
Jak zrobić, aby zapełniał się cały lcd tekstem (32 znaki), po 1 sekundzie czyścił lcd i wyświetlał następne 32 znaków.
Kod: Zaznacz cały
$regfile = "m8def.dat"
$crystal = 8000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portb.2 , Db7 = Portb.1 , E = Pinc.1 , Rs = Pinc.0
Config Sda = Portc.4
Config Scl = Portc.5
Declare Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)
Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte)
Dim Addressw As Byte 'slave write address
Dim Addressr As Byte 'slave read address
Dim Wyraz As String * 10
Dim B1 As Byte , Adres As Byte , Value As Byte , T As Byte 'dim byte
B1 = &HFF
Value = &H55
Cls
Lcd "Szukam urzadzen ";
Lowerline
Lcd "na szynie I2C ";
For Addressw = 2 To 254 Step 2
I2cstart
I2cwbyte Addressw
I2cstop
If Err = 0 Then Exit For
Next
Cls
If Addressw < 255 Then
Lcd "Adres &H" ; Hex(Addressw);
Lowerline
Lcd "odpowiedzial ACK";
Addressr = Addressw + 1
Wait 5
Else
Lcd "Urzadzenia nie";
Lowerline
Lcd "odpowiadaja :(";
Stop
End If
B1 = &HFF
Wyraz = ""
T = 0
Do
Call Read_eeprom(t , B1)
If B1 = &HFF Or B1 = 0 Or T > 10 Then Exit Do
Wyraz = Wyraz + Chr(b1)
Incr T
Loop
Cls
Lcd Wyraz;
Stop
'Program wykonujący odczyt z pamięci EEPROM
Sub Read_eeprom(byval Adres As Byte , Value As Byte)
I2cstart
I2cwbyte Addressw
I2cwbyte Adres
I2cstart
I2cwbyte Addressr
I2crbyte Value , Nack
I2cstop
End Sub