vorne bei der Funktions- und Variablendeklaration einfügen:
(Zusammenkopiertes Beispiel, nicht unbedingt Kompilierfähig!)
' ---------------------------------------------------------------------------- ' EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM ' ---------------------------------------------------------------------------- ' eeprom parameter, nie wieder umsortieren!!!!! ' immer nur hinten anfügen!! Declare Sub Save_eeprom_params Declare Sub Load_eeprom_params Declare Sub Set_default_params Declare Sub Check_add_params Dim Dummy As Eram Long ' in some cases first byte may be wrong cause of switch on/off effects Const Maxeepromsize = 512 ' max. Größe der zu speichernden Variablen Dim Ee_store_array(maxeepromsize) As Eram Byte ' ---------------------------------------------------------------------------- ' EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM ' ---------------------------------------------------------------------------- ' Keine Werte im EEPROM ablegen, die sich permanen ändern, EEPROM hat ' BEGRENZTE ZAHL an Schreibzyklen! ' folgende Werte werden automatisch gesichert... Dim Eeprom_store_block_start As Byte ' used for address ' hier nun die autoamtisch gespeicherten Variablen.. Dim Timer_times(maxtimerarray) As Long Dim Timer_dir(maxtimerarray) As Byte Dim Timer_days(maxtimerarray) As Integer Dim Timer_length(maxtimerarray) As Integer Dim Dimbacklight_max As Integer Dim Backlight_mode As Byte ' usw. neue Variablen, die aufgehoben werden müssen, einfach ' HIER ANFÜGEN!! Dim Eeprom_store_block_end As Byte ' used for address ' ---------------------------------------------------------------------------- ' EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM ' ---------------------------------------------------------------------------- ' EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM-EEPROM ' ---------------------------------------------------------------------------- ' -------------------------------------------------------------------------
Und hier die Funktionen:
'----------------------------------------------------------------------------- ' Set Default: Wirtd durch ganz besondere Bedienung/Jumpers,... aufgerufen ' Macht sozusagen Firmware default Werte! Kann u.U. weggelassen werden, wenn der ' Rest des Programmes mit blödsinnigen Werten noch bedienbar ist und vernünftige ' Werte eingestellt werden können '----------------------------------------------------------------------------- Sub Set_default_params ' oben definierte Variablen auf Sinnvolle Vorgabewerte setzen! For I = 1 To Maxtimerarray Timer_dir(i) = Timerunused Timer_times(i) = 43200 Timer_length(i) = Def_timer_limits(3) Timer_days(i) = 0 Timer_days(i).day_wrk = 1 Timer_days(i).day_free = 1 Next I For I = 1 To Maxchannels Inputtimers(i) = 60 '' eeprom! ' 2 minuten bewegungsmelder Input_modes(i) = Inp_night '' eeprom Next I End Sub '----------------------------------------------------------------------------- ' Ceck Parameters: Prüfen, ob Parameter im gültigen Bereich sind ' verhindert Fehlfunktionen, beim ersten Start (EEPROM Undefiniert oder alles FF) ' zusätzliche Sicherheit, nach Änderungen von Variablen durch Benutzer ' kann ggfs. weggelassen werden! '----------------------------------------------------------------------------- Sub Check_add_params Local B As Byte Local Timestr As String * 10 For I = 1 To Maxtimerarray Timer_dir(i) = Timer_dir(i) And 3 If Timer_dir(i) > 2 Then Timer_dir(i) = 2 If Timer_times(i) < 0 Then Timer_times(i) = 0 If Timer_times(i) > 86439 Then Timer_times(i) = 86439 If Timer_length(i) < Def_timer_limits(1) Then Timer_length(i) = Def_timer_limits(1) If Timer_length(i) > Def_timer_limits(maxtimes) Then Timer_length(i) = Def_timer_limits(maxtimes) Next I End Sub '----------------------------------------------------------------------------- ' Lade Parameter: Eigentliche Ladefunktion, die Werte aus EEPROM-Block in die ' Variablen übernimmt, einmal bein Start aufrufen! '------------------------------------------------------------------------------ Sub Load_eeprom_params Local Tmpb As Byte Local Tmpi As Integer Local I As Integer Local Cnt As Integer Local Vadr As Integer Local I1 As Integer Local I2 As Integer I1 = Varptr(eeprom_store_block_start) I2 = Varptr(eeprom_store_block_end ) Cnt = I2 - I1 If Cnt > Maxeepromsize Then Call Debugout( "Speicherfehler") Exit Sub End If For I = I1 To I2 Tmpi = I - I1 Incr Tmpi Tmpb = Ee_store_array(tmpi) Out I , Tmpb Next I Glcd_contrastvalue = Ee_contrast_value End Sub '------------------------------------------------------------------------------ ' Eigentliche Speicherfunktion, sollte nach jeder Parameteränderung aufgerufen ' werden. Kann auch sicherheitshalber einfach so zyklisch aufgerufen werden. ' Es wird nur geschrieben, wenn sich was geändert hat (EEPROM Zellen schonen!) '------------------------------------------------------------------------------ Sub Check_eeprom_params Local Tmp As Single Local Tmpb As Byte Local Tmpi As Integer Local Tmpl As Long Local I As Integer Local Cnt As Integer Local I1 As Integer Local I2 As Integer Local Vadr As Integer I1 = Varptr(eeprom_store_block_start) I2 = Varptr(eeprom_store_block_end ) Cnt = I2 - I1 If Cnt > Maxeepromsize Then Call Debugout( "Speicherfehler") Exit Sub End If For I = I1 To I2 Tmpi = I - I1 Incr Tmpi Tmpb = Inp(i) If Ee_store_array(tmpi) <> Tmpb Then Ee_store_array(tmpi) = Tmpb Next I Tmpb = Ee_contrast_value If Tmpb <> Glcd_contrastvalue Then Ee_contrast_value = Glcd_contrastvalue End Sub ' --------------------------------------------------------------------------- ' ---------------------------------------------------------------------------
Powered by websitebaker, (c) by C. Lotze, based on a design by Chio Maisriml Nutzung der Texte oder Bilder - auch teilweise - nur nach Rücksprache, siehe Impressum!