
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
> > Hallo, > > ich habe eine Frage zum Beispielprogramm IIC Datenspeicher. > Ich benutze eine meinem Programm angepaßte Version um Meßdaten > in einem externen EEPROM abzuspeichern. > > Wozu dienen die Variablen CLOCKS, MASK und COUNTER ? > Wenn ich sie weglasse geht das Programm trotzdem. Die genannten Variablen werden schlicht nicht gebraucht und scheinen Überbleibsel aus Copy und Paste Aktionen zu sein. Soetwas passiert nicht nur "Die Hard" :-). Die Sache mit dem kommentieren... na ja... Dadurch, das Die Hard gerne viele Befehle in eine Zeile klatscht, wird es schon schwierig. Allerdings sind bei Kommentaren grundsätzlich innerhalb des Listings Grenzen gesetzt. Niemandem wird es gelingen hier alle Aspekte zu berücksichtigen. Aus meiner privaten Bibliothek sieht ein Beispiel so aus (in Basic++ - warum schlagen sich noch so viele mit dem unflexiblen CCBasic herum?). '--------------- I2CEEPROM ROUTINEN --------------------------------- declare function writebyte() declare function readbyte() define address as word[2] define addrhi as byte[3] define addrlo as byte[4] define data as byte const eeprom1 = 162 'ggf. anpassen '--------------- Initialisierungen --------------------------------- '------- Pullups auf beiden Ports einschalten ---------------------- config.init config.get TEMPval 'den aktuellen Wert lesen, tempval = (TEMPval or 00011000b) config.put TEMPval 'Bits setzten und zurück schreiben config.off lcd.init 'LCD initialisieren '-------------- Hauptprogramm ----------------------- 'Beispiel schreiben: 'data = 53 'zu schreibender Wert 'adress =1 'zu beschreibende Adresse 'writebyte() ' 'Beispiel lesen: 'address = 1 'Adresse des zu lesenden Wertes 'readbyte() 'in data steht nun der ' 'gelesene Wert ' '----------------------------------------------------- '- BYTE (DATA) AUF EEPROM ADRESSE (ADDRESS) SPEICHERN - '- nutzt die Variablen data und address und die Kon- '- stante eeprom1. '- address ist in addrhi und addrlo byteweise geteilt function writebyte() 'lcd.off 'falls Umleitung eingeschaltet IIC.init IIC.stop IIC.start IIC.send eeprom1 IIC.send ADDRHI IIC.send ADDRLO IIC.send DATA IIC.stop IIC.off for temp = 0 to 40 'Warteschleife zur Sicherstellung, daß next temp 'das Byte zuverlässig geschrieben wird 'Alternativ könnte auch Error abgefragt 'werden, das kostet aber mehr Speicher. 'lcd.init switchonly 'falls LCD Umleitung wieder hergestellt 'werden soll end function '----------------------------------------------------------------- '--- BYTE (DATA) VON EEPROM ADRESSE (ADDRESS) LESEN --- '----------------------------------------------------------------- function readbyte() 'lcd.off 'falls Umleitung eingeschaltet IIC.init IIC.stop IIC.start IIC.send eeprom1 IIC.send ADDRHI IIC.send ADDRLO IIC.stop IIC.start IIC.send (eeprom1 +1) 'lesen! IIC.get DATA IIC.stop IIC.off 'lcd.init switchonly 'falls LCD Umleitung wieder hergestellt 'werden soll end function '----------------------------------------------------------------- Grüße Henrik (der sich von der C-Control weitestgehend zurückgezogen hat) Meine Homepage: http://www.henrik-reimers.de/control/ |
| Antwort schreiben |