Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Tastaturprogramm -> an die Programmierer Kategorie: Programmierung Basic (von Daniel - 31.01.2006 21:54)
Daniel nutzt:  CC1-M-Unit V1.1
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

Bisherige Antworten: