Hm,
meinst du das so in etwa?:
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 

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

gosub auswertung_code

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 

'Ende Interruptroutine



sub auswertung_code
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 
return
end sub
Dann wird die Auswertung aber doch irgendwie immer noch innerhalb des Interrupts abgearbeitet oder ist das so ein Unterschied weil es im Sub steht?



PS: generall verstehe ich aber immer noch nicht warum die Variable immer wieder auf Null gesetzt wird. Wo kommt der Befehl denn bloß her?
Wenn ein Wert im Speicher einmal drinne steht dann steht er doch drinne. Wer Pfucht denn da dann am Speicher und macht aus der 1 wieder eine 0 ?