
|
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. Wozu dient das Unterprogramm #CHECK_ERROR ? Wenn ich es lösche kommt zwischen meinen Meßwerten öfters eine 255. Noch eine Anmerkung an "die Hard" Wieso machen Sie sich die Mühe Beispielprogramme zu schreiben und kommentieren die dann so schlecht, daß Anfänger keinen Nutzen davon haben. Aber gleichzeitig beschimpft "die Hard" dann Fragesteller im Forum deren Programm sei nicht gut genug kommentiert.(Auch wenn dies oft zutrifft) '------ I/O PORTS --------- '-------------------------- define SDA port[9] define SCL port[10] define LIGHT port[16] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- define ADDRESS word[1] define ADDRHI byte[1] define ADDRLO byte[2] define DEV1 byte[3] define DEV2 byte[4] define COUNTER byte[5] define CONFIG byte[6] define TEMP byte[7] define DATA byte[8] define ERROR byte[9] define CLOCKS byte[10] define MASK byte[11] #INIT LIGHT=off gosub BP1ENABLE print"#ON_LCD#"; print"#INIT#"; print"EEPROM DATASAVE";:pause 50 print"#CLR#";:print"#OFF#"; DEV1=174 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '--------- 100 BYTES IN EEPROM SCHREIBEN --------------- For ADDRESS=0 to 100 DATA=ADDRESS*2:gosub WRITEBYTE next '-------- 100 BYTES VOM EEPROM LESEN UND ANZEIGEN------- for ADDRESS=0 to 100 gosub READBYTE print"#ON_LCD#";:print"#L101#";:print DATA;:print" ";:print"#OFF#"; pause 30 next 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII end '----------------------------------------------------- '- BYTE (DATA) AUF EEPROM ADRESSE (ADDRESS) SPEICHERN - '----------------------------------------------------- #WRITEBYTE print"#ON_IIC#";:print"#STOP#";:print"#START#";:put DEV1 put ADDRHI:put ADDRLO:put DATA:print"#STOP#";:print"#OFF#"; #WAITREADY print"#ON_IIC#";:print"#START#";:put DEV1:print"#STOP#";:print"#OFF#"; gosub CHECK_ERROR if ERROR=1 then goto WAITREADY return '----------------------------------------------------- '- BYTE (DATA) VON EEPROM ADRESSE (ADDRESS) LESEN - '----------------------------------------------------- #READBYTE print"#ON_IIC#";:print"#STOP#";:print"#START#";:put DEV1 put ADDRHI:put ADDRLO:print"#STOP#"; print"#START#";:put DEV1+1:get DATA:print"#STOP#";:print"#OFF#"; return '----------------------------------------------------- '-- IIC-FEHLER ABFRAGEN ---- '----------------------------------------------------- #CHECK_ERROR print"#ON_CONFIG#"; 'UMLEITUNG ZUM CONFIG MODULE get CONFIG 'CONFIG REGISTER LESEN put (CONFIG and &B10111111)'IIC ERROR FLAG IN CONFIG LÖSCHEN print"#OFF#"; if (CONFIG and &H40)=0 then ERROR=0 ELSE ERROR=1 print"#OFF#"; return 'IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII '------------------------------------------------- '-- SUBROUTINE ENABLE PULLUP BYTEPORT 1 - '------------------------------------------------- #BP1ENABLE print"#ON_CONFIG#"; 'UMGELEITET get TEMP 'den aktuellen Wert lesen put (TEMP or &B0001000) 'Bit setzten und zurück schreiben print"#OFF#"; 'Umleitung abschalten return |
| Antwort schreiben |