Hallo und Willkommen im AVR-Praxis Forum!
Ich kann mir ja nachher mal dein geändertes Programm ansehen......
Momentan fehlt mir da etwas die Zeit.
Wenn du aber irgendwo im Internet ein Programm gefunden hast, warum fragst du dann zum Beispiel nicht einfach mal den Autor des Programms?
Wie dem auch sei.....
Ich stelle dein Programm hier mal direkt ein.
Das ist für Alle nachher einfacher, als es extra noch herunter laden zu müssen.
Außerdem können auch so die Anderen einen Blick drauf werfen, die vielleicht kein BASCOM haben.
Gruß,
Cassio
Hier mal "dein" Programm:
CodeBox bascom
$sim
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 38400
$hwstack = 32
$swstack = 32
$framesize = 64
'---------------------Sonderzeichen-für-das-LCD---------------------------------
Deflcdchar 5 , 32 , 32 , 32 , 32 , 32 , 17 , 10 , 4 'Pfeil
'---------------------Initalisieren-des-LCD-------------------------------------
Config Lcd = 20 * 4 , Chipset = Ks077
Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.5 , Rs = Portb.7
Config Lcdbus = 4
Initlcd
'---------------------Konstanten-der-Displaygröße-------------------------------
Const Lcdrows = 4
Const Lcdcols = 20
'---------------------Konstanten-der-Tastenbelegung-----------------------------
Const Keyup = 1
Const Keydown = 2
Const Keyright = 3
Const Keyleft = 4
'---------------------Anzahl-der-Menüeinträge-als-Konstante---------------------
Const Mnumaxlines = 14
'---------------------Variablen-für-Programmablauf------------------------------
Config Kbd = Portc , Debounce = 20 , Delay = 10
Dim Hilf_mnu As Byte
Dim N As Byte
Dim Mnuselect As Word
Dim Mnuselectscount As Byte
Dim Mnuselectback As Word
Dim Mnuselectpointer As Byte
Dim Mnuselectpointer_old As Byte
Dim Mnutext(mnumaxlines) As String * Lcdcols
Dim Mnuselects(mnumaxlines) As Word
Dim I As Word
Dim M As Word
Dim Mnuselectold As Word
Dim Keypressed As Byte
Dim Keycode As Byte
Hilf_mnu = 1
N = 3
Mnuselectpointer = 1
Do
Select Case Mnuselect
Case 0:
Mnuselectback = 0
Mnutext(1) = "LINIENAUSWAHL"
Mnuselects(1) = 1
Mnutext(2) = "EINSTELLUNGEN"
Mnuselects(2) = 4
Mnuselectscount = 2
Gosub Mnushow
Case 1:
Mnuselectback = 0
Mnutext(1) = "S1"
Mnuselects(1) = 2
Mnutext(2) = "S2"
Mnuselects(2) = 0
Mnutext(3) = "S3"
Mnuselects(3) = 0
Mnutext(4) = "S4"
Mnuselects(4) = 0
Mnutext(5) = "S5"
Mnuselects(5) = 0
Mnutext(6) = "S6"
Mnuselects(6) = 0
Mnutext(7) = "S7"
Mnuselects(7) = 0
Mnutext(8) = "S8"
Mnuselects(8) = 0
Mnutext(9) = "S9"
Mnuselects(9) = 0
Mnuselectscount = 9
Mnuselectpointer_old = 1
Gosub Mnushow
Case 2:
Mnuselectback = 0
Mnutext(1) = "FW <> FORD"
Mnuselects(1) = 0
Mnutext(2) = "FORD <> FW"
Mnuselects(2) = 0
Mnutext(3) = "FOO <> FW"
Mnuselects(3) = 0
Mnutext(4) = "FW <> FOO"
Mnuselects(4) = 0
Mnutext(5) = "FF <> FHOE"
Mnuselects(5) = 0
Mnutext(6) = "FHOE <> FF"
Mnuselects(6) = 0
Mnutext(7) = "FF <> FHAS"
Mnuselects(7) = 0
Mnutext(8) = "FHAS <> FF"
Mnuselects(8) = 0
Mnutext(9) = "FORD <> FHM"
Mnuselects(9) = 0
Mnutext(10) = "FORD <> FHM"
Mnuselects(10) = 0
Mnuselectscount = 10
Mnuselectpointer_old = 1
Gosub Mnushow
End Select
Loop
Mnushow:
Mnuselectold = Mnuselect
While Mnuselectold = Mnuselect
M = 1
If Mnuselectpointer < Hilf_mnu Then
Decr Hilf_mnu
Else
If Mnuselectpointer > N Then
Incr Hilf_mnu
End If
End If
N = Hilf_mnu + Mnuselectscount
Decr N
If N > Lcdrows Then
N = Lcdrows + Hilf_mnu
Decr N
End If
Cls
For I = Hilf_mnu To N
Locate M , 1
If I = Mnuselectpointer Then
Lcd Chr(&B01111110) ; " "
Else
Lcd " "
End If
Lcd Mnutext(i)
Incr M
Next
If Hilf_mnu > 1 Then
Locate 1 , Lcdcols
Lcd "^"
End If
If N < Mnuselectscount Then
Locate Lcdrows , Lcdcols
Lcd Chr(5)
End If
Do
Gosub Tstq
Loop Until Keypressed > 0
If Keypressed = Keyup And Mnuselectpointer > 1 Then
Decr Mnuselectpointer
End If
If Keypressed = Keydown And Mnuselectpointer < Mnuselectscount Then
Incr Mnuselectpointer
End If
If Keypressed = Keyright Then
Mnuselect = Mnuselects(mnuselectpointer)
End If
If Keypressed = Keyleft And Mnuselect <> 0 Then
Mnuselect = Mnuselectback
Mnuselectpointer = Mnuselectpointer_old
Hilf_mnu = Mnuselectpointer
End If
Wend
Cls
Return
Tstq:
Keycode = Getkbd()
Keypressed = 0
If Keycode = 0 Then
Keypressed = 1
End If
If Keycode = 1 Then
Keypressed = 2
End If
If Keycode = 2 Then
Keypressed = 3
End If
If Keycode = 3 Then
Keypressed = 4
End If
Waitms 200
Return
Ende:
End