
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo liebe C-Controller ich habs geschafft nun geschafft mein Tastaturprogramm fertig zu stellen. Ziel war es durch Eingabe auf einer Tastatur, die am AD Eingang anliegt, zahlen ein zu geben mit denen ich dann Ein- und Ausschaltzeiten manuell eingeben kann. Nach dem Schema: 12:30 Sicher denkt ihr euch, ist nix neues alter Hut blaaaa worum ich euch bitte ist, ob ihr einen kurzen Blick auf meinen Programmcode werfen könnt. Sagt mir bitte, was schlecht ist und wo ich mir evt. Programmcode sparen kann. Da es im vollen Proramm mehrere Menuepunkte gibt die auf Datenfutter der Tastatur warten, könnte das schnell den Ramen der m-unit sprengen. (so meine Befüchtung) hier mein Programm: #MAINLOOP '+++++++++++++++T A S T A T U R +++++++++++++++++++++++++ #TASTATUR_EINGABE 'zeigt das Eeingaberesultat lcd_param = LCD_GotoLine2c6 : gosub LCD_WRITECMD lcd_param = &H30 + memory / 1000 : gosub LCD_WRITECHAR lcd_param = &H30 + (memory mod 1000) / 100 : gosub LCD_WRITECHAR lcd_param = &H30 + (memory mod 100) / 10 : gosub LCD_WRITECHAR lcd_param = &H30 + memory mod 10 : gosub LCD_WRITECHAR return #TASTATUR_AUSWERTUNG ' die Hardware der Tastatur besteht aus einem Netzwerkwiderstand, draum schwanken die Werte ein wenig if Tastatur >= 040 and Tastatur <= 048 then key_0=on else key_0=off 'Nulltaste if Tastatur >= 070 and Tastatur <= 072 then key_enter=on else key_enter=off 'Speichertaste if Tastatur >= 000 and Tastatur <= 008 then key_1=on else key_1=off'Taste 1 if Tastatur >= 170 and Tastatur <= 178 then key_2=on else key_2=off 'Taste 2 if Tastatur >= 140 and Tastatur <= 148 then key_3=on else key_3=off 'Taste 3 if Tastatur >= 028 and Tastatur <= 029 then key_4=on else key_4=off 'Taste 4 if Tastatur >= 055 and Tastatur <= 063 then key_5=on else key_5=off 'Taste 5 if Tastatur >= 084 and Tastatur <= 092 then key_6=on else key_6=off 'Taste 6 if Tastatur >= 184 and Tastatur <= 192 then key_7=on else key_7=off 'Taste 7 if Tastatur >= 155 and Tastatur <= 163 then key_8=on else key_8=off 'Taste 8 if Tastatur >= 112 and Tastatur <= 120 then key_9=on else key_9=off 'Taste 9 if Tastatur > 031 and Tastatur < 033 then gosub WARTEN_ZYKLUS ' das soll fürs entprellen gut sein if key_0 then key_value=1 if key_1 then key_value=2 if key_2 then key_value=3 if key_3 then key_value=4 if key_4 then key_value=5 if key_5 then key_value=6 if key_6 then key_value=7 if key_7 then key_value=8 if key_8 then key_value=9 if key_9 then key_value=10 return #MENUE_EINSPRUNG if key_enter then gosub MENUE goto MAINLOOP #WARTEN_ZYKLUS pause 10 return #MENUE gosub LCD_INIT #Anzeige lcd_param = LCD_GotoLine1c3 : gosub LCD_WRITECMD lcd_param = &H3A : gosub LCD_WRITECHAR wert=0 #Anzeige1000 ' hier wird die Tastatur abgefragt und so lange gewartet bis eine Eingabe kommt gosub Tastatur_auswertung wert = key_value-1 lcd_param = LCD_GotoLine1c1 : gosub LCD_WRITECMD lcd_param = &H30 + wert : gosub LCD_WRITECHAR if key_value < 1 then goto Anzeige1000 pause 20 #pruefen_1 '' ist die Eingabe falsch, kann man hier neu eingeben bzw. mit Enter zur nächsten Ziffer springen gosub Tastatur_auswertung if key_0 or key_1 or key_2 or key_3 or key_4 or key_5 or key_6 or key_7 or key_8 or key_9 then goto Anzeige1000 if key_enter=off then goto pruefen_1 pause 20 goto Speichern1000 wert=0 #Anzeige100 gosub Tastatur_auswertung wert = key_value-1 lcd_param = LCD_GotoLine1c2 : gosub LCD_WRITECMD lcd_param = &H30 + wert : gosub LCD_WRITECHAR if key_value < 1 then goto Anzeige100 pause 20 #pruefen_2 'ziffer okay oder nicht gosub Tastatur_auswertung if key_0 or key_1 or key_2 or key_3 or key_4 or key_5 or key_6 or key_7 or key_8 or key_9 then goto Anzeige100 if key_enter=off then goto pruefen_2 pause 20 goto Speichern100 wert=0 #Anzeige10 gosub Tastatur_auswertung wert = key_value-1 lcd_param = LCD_GotoLine1c4 : gosub LCD_WRITECMD lcd_param = &H30 + wert : gosub LCD_WRITECHAR if key_value < 1 then goto Anzeige10 pause 20 #pruefen_3 'ziffer okay oder nicht gosub Tastatur_auswertung if key_0 or key_1 or key_2 or key_3 or key_4 or key_5 or key_6 or key_7 or key_8 or key_9 then goto Anzeige10 if key_enter=off then goto pruefen_3 pause 20 goto Speichern10 wert=0 #Anzeige1 gosub Tastatur_auswertung wert = key_value-1 lcd_param = LCD_GotoLine1c5 : gosub LCD_WRITECMD lcd_param = &H30 + wert : gosub LCD_WRITECHAR if key_value < 1 then goto Anzeige1000 pause 20 #pruefen_4 'ziffer okay oder nicht gosub Tastatur_auswertung if key_0 or key_1 or key_2 or key_3 or key_4 or key_5 or key_6 or key_7 or key_8 or key_9 then goto Anzeige1 if key_enter=off then goto pruefen_4 pause 20 goto Speichern1 #Speichern1000 tausender=wert*1000 goto Anzeige100 #Speichern100 hunderter=wert*100 goto Anzeige10 #Speichern10 zehner=wert*10 goto Anzeige1 #Speichern1 einer=wert memory=tausender+hunderter+zehner+einer gosub LCD_INIT goto MAINLOOP ich bedanke mich im Voraus für eure Hilfe. Sollte ich keine Hilfe bzw. Verbesserungsvorschläge erhalten, hoffe ich, das dieser Beitrag nicht ganz um sonst war und mein Progrämmchen wenigstens ein paar Neulingen weiterhelfen kann. bis dahin Daniel |
| Antwort schreiben |