Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: variablen in eeprom speichern Kategorie: Programmierung Basic (von André H. - 27.12.2004 12:14)
 Als Antwort auf variablen in eeprom speichern von Michael - 27.12.2004 10:51
Hallo Michael,

> ich habe folgende frage:
> ich gebe über die 12er tastatur werte in 6 variablen ein.
> das programm läuft dann an.
> wenn jetzt ein stromausfall ist soll die c-control 1.1 automatisch wieder starten und mit den gespeicherten werten weiterrechnen.
> also wie schreibt man werte in das eeprom???

Das einfachste ist, Du benutzt die Dateifunktion:
Schreiben:
 open# for write
  print# wert1
  print# wert2
  print# wert3
  print# wert4
  print# wert5
  print# wert6
 close#


Lesen:
 open# for read
  input# wert1
  input# wert2
  input# wert3
  input# wert4
  input# wert5
  input# wert6
 close#



Alternativ kannst Du auch direkt das EEProm ansprechen, indem Du einen
kleinen ASM-Treiber benutzt. (z.B. i2c_multitreiber.zip von CCTools. Dort unter Download)
Der Vorteil wäre hier, daß die Daten nach einem Programmupdate nicht weg wären,
sofern diese z.B. ganz hinten im EEProm abgelegt werden.
Dann könnte das ganze so aussehen:

'--------------------------------------------------------------
'Einsprungadressen von "int_i2c.s19" Release 19.09.04
'--------------------------------------------------------------
' PCF8574:
define PCFwrite   &h101
define PCFread    &h107
'--------------------------------------------------------------
' Bausteine mit Byte-Adress-Register
define WrByteBReg &h123
define WrWordBReg &h12F
define RdByteBReg &h15C
define RdWordBReg &h162
'--------------------------------------------------------------
' Bausteine mit Word-Adress-Register
define WrByteWReg &h139
define WrWordWReg &h141
define RdByteWReg &h16D
define RdWordWReg &h175
'--------------------------------------------------------------
' PCFLCD:
define putCmd8Bit &h1a9
define putCmd     &h17D
define putChar    &h1a3
define prnLCD     &h1C2
'--------------------------------------------------------------

define EEPromAddr 160
define pop DA[1] 'Trick zum Auslesen des Stacks

define wert1 Byte[1]
define EEPos1 8186

define wert2 Byte[2]
define EEPos2 8187

define wert3 Byte[3]
define EEPos3 8188

define wert4 Byte[4]
define EEPos4 8189

define wert5 Byte[5]
define EEPos5 8190

define wert6 Byte[6]
define EEPos6 8191


'...
'Daten auslesen:
sys RdByteWReg,EEPos1,EEPromAddr
wert1=pop
sys RdByteWReg,EEPos2,EEPromAddr
wert2=pop
sys RdByteWReg,EEPos3,EEPromAddr
wert3=pop
sys RdByteWReg,EEPos4,EEPromAddr
wert4=pop
sys RdByteWReg,EEPos5,EEPromAddr
wert5=pop
sys RdByteWReg,EEPos6,EEPromAddr
wert6=pop


'...
'...
'Daten schreiben:
sys WrByteWReg,Wert1,EEPos1,EEPromAddr
sys WrByteWReg,Wert2,EEPos2,EEPromAddr
sys WrByteWReg,Wert3,EEPos3,EEPromAddr
sys WrByteWReg,Wert4,EEPos4,EEPromAddr
sys WrByteWReg,Wert5,EEPos5,EEPromAddr
sys WrByteWReg,Wert6,EEPos6,EEPromAddr


'----Aufrufe-Bausteine m.Word-Addr.Reg.----------------
'i2caddr immer Schreibadresse !!
'addr = Registeradresse
'Byte schreiben:
'sys WrByteWReg,wert,addr,i2caddr

'Byte lesen:
'sys RdByteWReg,addr,i2caddr
'wert=pop

'Word schreiben:
'sys WrWordWReg,Wordwert,addr,i2caddr

'Word lesen:
'sys RdWordWReg,addr,i2caddr
'Wordwert=pop

syscode "int_i2c.s19" 'nur einmal laden, dann auskommentieren



Der Vorteil ist hier, daß Du wahlfrei auf das gesamte EEProm zugreifen kannst.
(Man könnte sogar das Programm im laufenden Betrieb manipulieren ;-) )

MfG André H.

 Antwort schreiben

Bisherige Antworten:

Re: variablen in eeprom speichern (von Michael - 28.12.2004 8:41)