Funktion lieferte falsches Ergebnis, Compiler-Bug?
Hallo Leute
Ich habe ein Phänomen festgestellt beim Erstellen einer Funktion zur Entprellung einer Taste.
Code:
' Lauffähiges Testprogramm für Simulator
' zur Veranschaulichung des Problems
$regfile = "m8def.dat"
$hwstack = 30
$Swstack = 30
$framesize = 35
$Crystal = 800000
$Baud = 19200
$Sim
' Allgemeine Deklarationen
Const True = 1
Const False = 0
Const LowLevel = 0 ' Tastenpegel Low
Const HighLevel = 1 ' Tastenpegel High
Key_Taste Alias PinB.1 ' Abzufragende Taste/Pin
Set Key_Taste ' PullUp an
Declare Function getKeyTaste(Byval Level as Byte) as Byte
Do
' Irgendwo in der Hauptschleife
' Die Abfrage der Taste
If getKeyTaste(LowLevel) = True then ' Taste ist Low-Aktiv
Print "gedrueckt"
Else
Print "nicht gedrückt"
End If
Loop
' Die Function liefert immer True (taste gedrückt)
Function getKeyTaste(Byval Level as Byte) as Byte
getKeyTaste = False ' Rückgabewert zunächst auf falsch (Taste nicht gedrückt)
If Key_Taste = Level.0 then ' Pinpegel = Vorgabepegel?
Waitms 30 ' Entprelldauer abwarten
If Key_Taste = Level.0 then ' Pinpegel noch immer = Vorgabepegel?
getKeyTaste = True ' Rückgabewert True (Taste aktiv gedrückt)
End If
End If
End Function
Die Function liefert immer True zurück, gibt also vor, die Taste sei gedrückt.
Kann mir jemand sagen, ob das ein Bug ist?
Ich verwende Bascom Vollversion 2.0.7.8 (aktuelle, offizielle Version)
Bitte um Infos.
Micha