Mal eine saublöde Frage.
Wenn ich innerhalb einer Do...Loop Schleife ein Lable mit Gosub anspringe, dann müsste das Return am Ende des Labels ja wieder in die Do-Loop-Schleife führen.
Warum aber wird bei mir die Einschaltmeldung nach jedem Return gesendet, die doch vor der Do-Loop Schleife liegt?
Display All
Diesen Effekt hatte ich schon häufiger, bin da aber nie dahinter gekommen woran es liegt.
In Zeile 28 wird PIND.2 eingelesen und bei steigender Flanke das Label SQLopen angesprungen.
Das Lable soll mir UART-Meldungen ausgeben, "SQL Open" nach einer steigenden Flanke und ein "SQL Close" wenn eine fallende Flanke erkannt wird.
Sobald aber diese fallende Flanke an PIND.2 erkannt wird, führt das Return nicht zurück in die Do-Loop Schleife!
Dämlicher weise wird nach diesem Return die UART-Ausgabe in Zeile 21 ausgeführt.
Die If Then-Funktion habe ich schon extra hinzugefügt, damit diese Boot-Meldung auch nur nach einem POR gesendet wird.
Hilft aber nicht...das Return springt sogar in Zeile 8 zurück die für mich definitiv im Konfigurationssetup liegt.
Wie kann ich dem Return diesen Amoklauf abgewöhnen?
Jürgen
Wenn ich innerhalb einer Do...Loop Schleife ein Lable mit Gosub anspringe, dann müsste das Return am Ende des Labels ja wieder in die Do-Loop-Schleife führen.
Warum aber wird bei mir die Einschaltmeldung nach jedem Return gesendet, die doch vor der Do-Loop Schleife liegt?
BASCOM Source Code
- Config portd.2 = Input
- portd.2 = 0
- Dim Lesen as Byte
- Dim Schreiben as Byte
- Dim State as Bit
- State = 0
- Lesen = &hE3
- Schreiben = &hE2
- I2cinit
- Config Serialin0 = Buffered, Size = 50, Bytematch = &h0A
- Enable interrupts
- wait 1
- If State = 0 then
- Print "Chip Evaluation, I²C-Bus V3.2 initialisiert"
- End If
- State = 1
- do
- Debounce PinD.2, 1, SQLopen
- loop
- SQLopen:
- Print "SQL Open"
- while PinD.2 = 1
- 'NOP
- wend
- Print "SQL Close"
- Return
In Zeile 28 wird PIND.2 eingelesen und bei steigender Flanke das Label SQLopen angesprungen.
Das Lable soll mir UART-Meldungen ausgeben, "SQL Open" nach einer steigenden Flanke und ein "SQL Close" wenn eine fallende Flanke erkannt wird.
Sobald aber diese fallende Flanke an PIND.2 erkannt wird, führt das Return nicht zurück in die Do-Loop Schleife!
Dämlicher weise wird nach diesem Return die UART-Ausgabe in Zeile 21 ausgeführt.
Die If Then-Funktion habe ich schon extra hinzugefügt, damit diese Boot-Meldung auch nur nach einem POR gesendet wird.
Hilft aber nicht...das Return springt sogar in Zeile 8 zurück die für mich definitiv im Konfigurationssetup liegt.
Wie kann ich dem Return diesen Amoklauf abgewöhnen?
Jürgen