misiekdg napisał: Zle mnie zrozumieliście Panowie. Nie chodzi mi o sam zapis i odczyt bo to prosta sprawa ale o to, że pamieć składa się z komórek które mają rozmiar 1 Bajta, tak wiec do kazdej komórki można zapisać maksymalną liczbe 256. A ja chce zapisac liczbe typu 17352965 i kiedy to chce zrobić bascom wywala błąd "Value doesn't into BYTE" co jest całkowicie zrozumiałe czemu. Można tą liczbe dzielić przez 256 i kazdy kolejny wynik zapisywac do osobnej komórki, pozniej zaś mnożyć i sumowac zeby odczytać tą liczbe z pamieci, ale może jest jakiś prostrzy sposób?? I o ten sposób właśnie pytam??
Zazwyczaj wystarcza stosowac syntax:
WRITEEEPROM var , address
Bascom rezerwuje odpowiednia ilosc komorek w eeprom, a przy odczycie przywolujesz adres pierwszej komorki gdzie zaczynales wpis./
Gdy masz do czynienia z wieloma zmiennymi i nie chcesz sie pogubic z adresami, wygodnie jest samemu dokonac tej rezerwacji, a nazwy adresow (A1, B1) nadac im bardziej sensowne do programu.
Przeanalizuj przyklad ponizej:
$regfile = "m8def.dat"
$crystal = 1000000
$framesize = 32
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Dim A As Long
Dim B As Byte
Const C = 17352965
Const D = 352
Dim A1 As Eram Long At 1
Dim B1 As Eram Byte At 5
A1 = C
B1 = D
'------------------------------
Readeeprom A , 1
Readeeprom B , 5
'------------------------------
Cls
Locate 1 , 1
Lcd "LONG: " ; A
Locate 2 , 1
Lcd "BYTE: " ; B
Nalezy pamietac ze rezerwujac miejsce dla 'String' nalezy zarezerwowac o jedno miejsce wiecej.
e marcus