Forum: Mikrocontroller und Digitale Elektronik Menustruktur in Bascom


von Mike D. (hero2992)


Lesenswert?

Hallo ich bin dabei ein Menu für meine Abschlussarbeit zu 
schreiben(zutritskontrolle per Transponder)... ich habe bereits 
begonnen... jedoch stelle ich fest das wenn ich noch weiter mache... das 
ganze zu unübersichtlich wird...nun wollte ich mal fragen ob mir da 
jemand ne andere Programmier möglichkeit zeigen könnte...

hier mein "erstes" Programm...: (das ist nur das menü... zudem kommen 
noch eine Uhr,transponderleseeinheit,teilprogramm zum anzeigen der 
Transponderschlüssel,usw...)





$regfile = "M8def.dat"
$crystal = 3686400
$hwstack = 32                                               ' default 
use 32 for the hardware stack

$swstack = 10                                               ' default 
use 10 for the SW stack

$framesize = 40                                             ' default 
use 40 for the frame space

Cls
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , 
Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Cursor Off Noblink
Config Portb = Input
Config Portb.1 = Output                                     'PWM für die 
Bildschirmbeleuchtung
Config Portc = Output
Dim Wertx As Byte , Werty As Byte
Dim X As Byte , Y As Byte , Z As Byte
Dim Unterprogramm As String * 15 , Unterprogramm2 As String * 15 , 
Eunterprogramm1 As String * 15 , Eunterprogramm2 As String * 15
Dim Belunterprogramm1 As String * 15
Z = 10                                                      'Z ist 
Untermenu angabe
X = 1
Y = X + 1
Portb = &B00111100
Do

   Debounce Pinb.2 , 0 , Rauf , Sub
   Debounce Pinb.3 , 0 , Runter , Sub
   If Z = 10 Then Gosub Hauptmenu
   If Z = 2 Then Gosub Einstellungen
   If Z = 5 Then Gosub Lcdbeleuchtung
   Waitms 10
   Debounce Pinb.4 , 0 , Bestaetigen , Sub
   Debounce Pinb.5 , 0 , Zuruek , Sub


Loop
                               'Unterprogramm zum Raufzählen
Rauf:
Y = Y + 1
X = Y - 1

If X > 3 Then X = 1
If Y > 3 Then Y = 1
Return

                               'Unterprogramm zum Runterzählen
Runter:
X = X - 1
Y = X + 1
If X < 1 Then X = 3
If Y < 1 Then Y = 3
Return

Bestaetigen:

If Z = 10 And X = 1 Then Gosub Einstellungen
If Z = 10 And X = 2 Then Gosub Schluessel
If Z = 10 And X = 3 Then Gosub Letzter_eintrag
If Z = 2 And X = 2 Then Gosub Lcdbeleuchtung
If Z = 5 And X = 1 Then Gosub Lcdan
If Z = 5 And X = 2 Then Gosub Lcdaus
Return

Einstellungen:
Z = 2

If X = 2 Then Eunterprogramm1 = "LCDBeleuchtung "
If Y = 2 Then Eunterprogramm2 = "LCDBeleuchtung "
If X <> 2 Then Eunterprogramm1 = "Reserve        "
If Y <> 2 Then Eunterprogramm2 = "Reserve        "

Locate 1 , 1 : Lcd X ; Eunterprogramm1
Locate 2 , 1 : Lcd Y ; Eunterprogramm2

Return

Schluessel:
Z = 3
Cls
Waitms 5                                                    'da sonst 
5Buchstaben nicht auf die LCD kommen
Locate 1 , 1 : Lcd "Hinzufuegen   "
Return

Letzter_eintrag:
Z = 4
Cls
Waitms 5                                                    'da sonst 
5Buchstaben nicht auf die LCD kommen
Locate 1 , 1 : Lcd "Schluessel nr  "
Return

Lcdbeleuchtung:
Z = 5
If X = 1 Then Belunterprogramm1 = "Beleuchtung AN "
If X = 2 Then Belunterprogramm1 = "Beleuchtung AUS"
If X = 3 Then Belunterprogramm1 = "               "

Locate 1 , 1 : Lcd X ; Belunterprogramm1
Locate 2 , 1 : Lcd "                "
Return

Lcdan:
Portb.1 = 1
Return

Lcdaus:
Portb.1 = 0
Return

Zuruek:
Z = 10
Return

Hauptmenu:
Z = 10
                                                   'Unterprogramm zum 
Ausgeben auf die LCD-Anzeige
If X = 1 Then Unterprogramm = "Einstellungen  "
If Y = 1 Then Unterprogramm2 = "Einstellungen  "
If X = 2 Then Unterprogramm = "Schluessel +   "
If Y = 2 Then Unterprogramm2 = "Schluessel +   "
If X = 3 Then Unterprogramm = "Letzter Eintrag"
If Y = 3 Then Unterprogramm2 = "Letzter Eintrag"
Locate 1 , 1 : Lcd X ; Unterprogramm
Locate 2 , 1 : Lcd Y ; Unterprogramm2

Return

Gruss Mike

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.