
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
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 |