Witam
Czy moze mi ktoś powiedzieć jak w poniższym programie do pamieci eeprom wew do komórki o adresie 1 jest wpisywana długość (adres ostatniej danej data)?
Ściślej skąd pod adresem 1 bieże sie ilość danych data?
Readeeprom Dlugosc , 1 'odczytuje adres końca napisu
Pozdrawiam
Pawli
'C019d 'Wyświetlanie biegnącego napisu z pomieci EEPROM
'teraz długość wyświetlanego napisu jest określona w pamięci EEPROM
'i można ją zmienić w trakcie pracy programu:
'na początku, w komórce o adresie 1 jest długość napisu
'komórki 0 nie wykorzystujemy, bo teoretycznie może zmienić swą zawartość
$eeprom 'dane do zapisania w EEPROMie mają być na początku pliku
Napis1: 'tu jest jeden napis
Data 136 , 136 , 136 , 136 , 136 , 136 , 136 , 136
'tu kończy się zawartość EEPROMa i zaczyna "zwykły" program
Dim R1 As Byte , R2 As Byte , R3 As Byte , R4 As Byte
Dim Licznik As Byte , Mux As Byte , Dlugosc As Byte
Config Portb = 255 : Portb = 255 : Config Portd = &B1111100 : Portd = &B1111111
Config Timer0 = Timer , Prescale = 64 : Config Timer1 = Timer , Prescale = 64
Enable Interrupts : Enable Timer0 : Enable Timer1 'odblokowanie przerwań
On Timer0 Co4ms : On Timer1 Skok 'po przepełnieniu liczników skocz
R4 = 255 : R3 = 255 : R2 = 255 : R1 = 255 'Wygasza wyświetlacz na początek
Licznik = 2 'zaczyna od trzeciej komórki pamięci EEPROM
Do : Loop : End 'to jest główny program - pusta nieskończona pętla
Skok:
Timer1 = 45000 'czas ok. 0,33s
R4 = R3 : R3 = R2 : R2 = R1 'przesuwamy zawartość
Readeeprom R1 , Licznik 'do R1 nowa literka
Incr Licznik
Readeeprom Dlugosc , 1 'odczytuje adres końca napisu
If Licznik = Dlugosc Then Licznik = 2 'wraca do początku napisu
Return
Co4ms: 'przerwanie co 4,096ms (bez skracania cyklu)
Mux = Mux + 1 : If Mux = 4 Then Mux = 0 : Portd = &B1111111
Select Case Mux ' obsługa wyświetlacza
Case 0:
Portb = R1 : Portd.3 = 0 '
Case 1:
Portb = R2 : Portd.4 = 0
Case 2:
Portb = R3 : Portd.5 = 0
Case 3:
Portb = R4 : Portd.6 = 0
End Select : Return 'koniec obsługi przerwania od T/C0 co 4,096ms