mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Menustruktur in Bascom


Autor: Mike Dupo (hero2992)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.