Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > > > > Hallo Kommune, > > > > Ich bin fürchterlicher Neuling in der Programmierung der Ccontrol pro Mega 128, > > > > habe mir aber zum Ziel gesetzt meine Heizung mit diesem Teil zu steuern. > > > > Das Prog-Teil zur Überwachung und Regelung der einzelnen Heizkreise habe ich zum laufen gebracht. > > > > Nun benötige ich noch eine Abfrage über die Folientastatur um den Regelwert meiner Räume > > > > in die Steuerung zu implementieren. > > > > Dafür habe ich mir eine zweistellige Variable Ref ausgedacht. > > > > In meinem kleinen Testprogramm gelingt es mir auch die Variablen g_zehner und g_einer einzu- > > > > lesen. > > > > Wo es bei mir nur hängt ist die Beiden zu verknüpfen, sodass ich aus G_zehner =2 und g_einer =3 > > > > zum B. 23 in die Variable ref bekomme. > > > > > > > > Kann mir bitte einer der Experten helfen? > > > > > > > > Nicht lachen, dies ist das Testprogramm: > > > > > > > > void Tastenabfrage(void) > > > > { > > > > do > > > > { > > > > if (count == 1) > > > > { > > > > label0: > > > > key_in=Key_Scan(); > > > > if (key_in==0) goto label0; > > > > key_ch=Key_TranslateKey(key_in); > > > > AbsDelay(200); > > > > g_zehner=key_ch; > > > > a=g_zehner; > > > > LCD_CursorPos(0x45); > > > > LCD_WriteChar(g_zehner); > > > > key_in=0; > > > > } > > > > if (count == 2) > > > > { > > > > ref = 0; > > > > label1: > > > > key_in=Key_Scan(); > > > > if (key_in==0) goto label1; > > > > key_ch=Key_TranslateKey(key_in); > > > > AbsDelay(200); > > > > g_einer=key_ch; > > > > LCD_CursorPos(0x45+1); > > > > LCD_WriteChar(g_einer); > > > > // ref =( g_zehner-48)*10+(g_einer-48); dies führt immer zu Fehlberechnungen !!!!!!! > > > > LCD_CursorPos(0x54); > > > > LCD_WriteChar(ref); > > > > key_in=0; > > > > } > > > > > > > > count++; > > > > AbsDelay(200); > > > > if (count == 3)break; > > > > > > > > }while(1); > > > > > > Hallo Ehlers, > > > > > > da du bereits ein Key_TranslateKey machst, müsste da nicht die Berrechnung so aussehen: > > > > > > ref =(g_zehner*10)+g_einer; > > > > > > kanns leider nicht testen, aber das sollte so gehen. > > > > > > Gruß > > > GEMINI1606 > > > > Danke für die schnelle Antwort. > > Funktioniert aber auch nicht, da in den Variablen bei z.B. 2 u. 6 dann einmal Dec 050 und Dec 054 > > steht und nach Berechnung in ref Dec 042 also der Asterix ausgegeben wird. > > Kann man das überhaupt so berechnen? Oder sollte man das ganze mit apend zusammensetzen? > > Wie gesagt ich bin kein erfahrener Proggi! > > Danke u. Gruß > > Hallo, > > also Key_Translate() liefert dir den ASCII-Code deiner Ziffern. Mit (g_zehner-48)*10+(g_einer-48) erhältst > du dann eine Integerzahl, welche du für deine Steuerung brauchst. Diese Zeile hast du auskommentiert > und hingeschrieben, dass dies zu einer fehlerhaften Berechnung führt. Das tut es aber nicht, sondern deine > Ausgabe mit LCD_WriteChar(ref); ist falsch. Die Funktion LCD_WriteChar() erwartet nämlich eine Variable > mit ASCII-Code. Mit LCD_WriteWord() kannst du Integervariabeln ausgeben. > > Noch ein Tipp zur Programmierung: Die Lesbarkeit von Programmcode erhöht sich drastisch, wenn man > anstatt von "gotos" und "labels" Schleifen verwendet, und den Code entsprechend einrückt. Das hilft nicht > nur den Leuten, denen du deinen Code zum lesen gibst, sondern auch dir selbst, wenn du dann mal dein > Programm nach einigen Jahren modifizieren willst. > > MfG Karl > > P.S.: Ich habe auch eine Heizungssteuerung implementiert. Um die entsprechenden Sollwerte eingeben > zu können habe ich mir einen Thread gemacht, welcher permanent die Tastatur ausliest und etwaige > Eingaben dann in einem Puffer-Array speichert. Wenn du willst, kann ich dir die Datei schicken.