Hallo Leute,

ich habe ein Problem in meinem Quellcode.
Zunächst mal mein Code in gekürzter Form:
Code:
$regfile = "m8def.dat"
$crystal = 4000000

Ddrb = &B00111100
Ddrc = &B00001110
Ddrd = &B10000001
Portb = &B00000000
Portc = &B00000000
Portd = &B00001000

Eingang Alias Pind.3
Code_hoch Alias "0111011110"
Code_rechts Alias "1011101101"
Code_links Alias "0011011110"
Code_runter Alias "1011001101"
Code_enter Alias "0111101101"
Code_frechts Alias "1011011110"
Code_flinks Alias "0011101100"
Error_led Alias Portd.7

Dim Statusbit As Byte
'Bits im Statusbyte:
  Faceauf Alias 0
  Get_data Alias 1
  Menue Alias 2

On Int1 Ir_dataempfang

Enable Int1
Enable Interrupts

Hauptschleife:
Do

Loop

Ir_dataempfang:
'Dieser Teil ist für euch unbedeutend-----
Set Error_led
For A = 0 To 71
Temp(a) = Eingang
Waitus 902
Next A

Code = ""
For A = 49 To 58
Tmp = Temp(a)
Code = Code + Str(tmp)
Next A

'-------------------------------------------

If Code = Code_rechts Then
  If Statusbit.menue = 1 Then
    Menue_cnt = Menue_cnt + 1
    Locate 2 , 1
    If Menue_cnt > 4 Then Menue_cnt = 1
    If Menue_cnt < 1 Then Menue_cnt = 4

    If Menue_cnt = 1 Then Lcd "Fahr alleine rum"
    If Menue_cnt = 2 Then Lcd " manuell fahren "
    If Menue_cnt = 3 Then Lcd " Raumtemperatur "
    If Menue_cnt = 4 Then Lcd " Akku Spannung  "
  End If
End If

If Code = Code_enter Then
  If Statusbit.menue = 0 Then
    Statusbit.menue = 1
    Cls
    Locate 1 , 4
    Lcd "Hauptmenõ"
    Locate 2 , 1
    Lcd "Fahr alleine rum"
    Menue_cnt = 1
  Else
    Cls
    Locate 1 , 2
    Lcd "Menõ verlassen"
    Statusbit.menue = 0
  End If
End If

Do
'Warte bis Taste wieder losgelassen wurde
  A = A + 1
  If A > 125 Then
    Goto Losgelassen
  End If
  If Eingang = 0 Then A = 1
  Waitms 1
Loop

Losgelassen:
Reset Error_led
Return
So, nun zu meinem Problem:
Das öffnen und schließen des Menüs über die enter-Taste funktioniert einwandfrei.
Nun habe ich aber ein Problem mit der rechts-Taste:
Wenn diese betätigt wird springt er in die Entsprechende If-Schleife. Wenn er bei dem Befehl Menue_cnt = Menue_cnt + 1 ankommt ist diese Variable allerdings IMMER 0 und somit springt er an dieser Stelle immer auf 1. (was auf dem Display dann "Fahr alleine rum" entspricht.

Hoffe irgendjemand versteht was ich meine....

Irgendwie wird die Variable Menue_cnt nach meinen bisherigen Beobachtungen bei jedem Interrpt-Aufruf auf 0 gesetzt (Habe mir die Variable an verschiedenen Stellen auf dem Display mal anzeigen lassen. Nach auslösen der Interrupts über enter ist sie 1 und beim nächsten Interruptaufruf ist sie schon wieder 0). Woran liegt das?
Kann sich das jemand erklären? Was kann man dagegen tun? Oder ist doch noch ein Fehler im Quellcode?

tausend dank schonmal an diejenigen die sich die Mühe machen und versuchen mir zu helfen. Bin für jedne Tipp dankbar.

Gruß Robodriver

PS: Einstellungen:
HW Stack = 64
Soft Stack = 16
Framesize = 32