mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom-Problem mit Sub-Routine


Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe mit nachfolgendem "Programm" ein Problem, deshalb wende ich
mich an das Forum und hoffe
auf ein paar Tips.
Grundgedanke ist:
Mit entprelltem Taster (Pind.0) soll bis 3 gezählt und in die
entsprechende Sub-Routine verzweigt
werden. Ist der A-Wert größer als 3 geschieht ein Neuanfang, da ich A=0
setze. (System Ringzähler).
Bis hierher funktioniert das Programm wunschgemäß!
In den Sub's soll allerdings jeweils eine weitere Aktivität ausgelöst
werden.
Ich habe es als Beispiel unter den Sub's als Kommentar eingetragen.
Das funktioniert nicht! Mit  Tastendruck D.0 Sub aufrufen und mit
Taster D.1 soll die Unterroutine Strt ausgelöst werden.
und mit D.1 "bestätigen".
Mit anderen Worten, nur wenn die entsprechende Sub aufgerufen UND zur
Bestätigung Taster D.1
gedrückt wird wird aktiviert.
Danke und Gruß
Holger.

$regfile = "2313def.dat"
$crystal = 4000000
Dim A As Byte
Dim B As Byte
Config Portb = Output
Config Pind.0 = Input
Config Pind.1 = Input
Config Pind.5 = Output

Pind.0 = 1
Pind.1 = 1
Afg:
A = 0

Do
Debounce Pind.0 , 0 , Cnt , Sub
Debounce Pind.1 , 0 , Strt , Sub
Loop

Cnt:
A = A + 1
If A = 1 Then Gosub Sub1
If A = 2 Then Gosub Sub2
If A = 3 Then Gosub Sub3
If A = 3 Then Goto Afg
Return



Sub1:
Portb = &B00000001
'IF Pind.1 = 0 then gosub Strt  ' Ist Taste D.1 gedrückt, dann
springe zu "Strt"
Return

Sub2:
Portb = &B00000010
'IF Pind.1 = 0 then gosub Strt1  ' Ist Taste D.1 gedrückt, dann
springe zu "Strt1"
Return

Sub3:
Portb = &B00000100
'IF Pind.1 = 0 then gosub Strt2  ' Ist Taste D.1 gedrückt, dann
springe zu "Strt2"
Return

Strt:
Sound Portd.5 , 500 , 400
Return

Autor: Bernd Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum bestätigen ist das hier vieleicht besser:

Strt:
 Select case A
  case 1
    Sound Portd.5 , 500 , 400
  case 2
    Sound Portd.5 , 500 , 600
  case 3
    Sound Portd.5 , 500 , 800
  End Select
 PortB = 0
Return

Autor: Holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Bernd,
einfach Spitze! Es klappt! Eigentlich hätte ich auch darauf kommen
müssen, aber naja...
Vielen Dank für die gute und schnelle Hilfe!!!
Jetzt komme ich weiter mit meinem Kurzzeitimer.
Gruß Holger

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.