Bascom-wie löse ich eine Interrupt aus

Gast #133593
Hallo,
habe mit nachfolgendem Text so meine Probleme.
Mit einer Taste soll eine "Sub" aufgerufen werden, die dann losläuft.
Das klappt soweit, wenn es sich um einen "Durchgang" handelt. Sobald
das Unterprogramm aber eine Schleife (hier eine simple Blinkvariante)
darstellt (Do-Loop) kann  man natürlich nicht zur nächsten "Sub"
weiterspringen. Einzige Möglichkeit wäre der RESET-Taster. While- wend
habe ich getestet, braucht aber einen weiteren Taster.
Die Möglichkeit einen Interrupt extern bekomme ich nicht hin. Wer kann
mir was raten? Leider war eine Suche ohne Erfolg, darum dieser Thread.
MFG Holger

$regfile = "2313def.dat"
Config Pind.0 =Input  'Taster

Config Portb = Output
Pind.0 = 1
Dim A As Byte
Afg:
A = 0
Do
   Debounce Pind.0 , 0 , Cnt , Sub
   Loop
End

Cnt:
  Incr A
  If A = 1 Then Gosub Eins
  If A = 2 Then Gosub Zwei
  If A = 3 Then Gosub Drei
  If A = 4 Then Goto Afg
Return

Eins:                                                         'Sub1
'Do
Portb.0 = 1
Waitms 750
Portb.0 = 0
Waitms 750
'loop
Return

Zwei:                                                         'Sub2
'Do
Portb.1 = 1
Waitms 350
Portb.1 = 0
Waitms 350
'Loop
Return

Drei:                                                         'Sub3
'Do
Portb.2 = 1
Waitms 200
Portb.2 = 0
Waitms 200
'Loop
Return
Gast
Moin Holger,

Du musst die Interrupts erstmal definieren und Enable nicht vergessen.
Du kannst die Interrupts auch in der Unterprogramm schleife
sperren, so dass sie zuerst abgearbeitet werden muss.
Zum Blinken einer LED würde ich aber immer Timer verwenden, weil
sonnst Dein Programm unnötig steht (350ms ist ne Menge).

Das Thema ist sehr schön in der Bascom Doku beschrieben, empfehle
eh das Handbuch auszudrucken ! (Wenn man Einsteiger ist)

mfg
Oliver
Gast
Hallo ,
danke zuerst !
Die Hilfe hatte ich sowieso gedruckt, aber ich werde nicht so richtig
schlau daraus.
Die Freischaltung des Interrupts mit  ...Enable interrupt... habe ich
eingefügt.
Aber was muß die Interruptroutine ISR enthalten.
Ich habe sie als Sub-Routine zwar angefügt, aber was muß rein?
Da ich ja keinen TIMER verwende , brauch ich ihn ja nicht auf "0" zu
setzen.
Wie wird er in einer Schleife gesperrt ?
Vielleicht könntest Du mir das etwas erläutern?
Danke und fF noch. (frohes Fest noch)
Holger

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.