mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bascom Taster


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
Ich habe mal versucht in Bascom einen ein/aus Taster zu programmieren.
Die Variable "Tasterreact" soll dazu dienen den Taster wieder zu
aktivieren wenn man den Taster wieder los lässt, da sonst ja gleich
wieder alles ausgeschaltet wird wenn man den Taster zu lange drückt.


Dim An As Bit
Dim Tasterreact As Bit

 Ddrb = &B00000011
 Portb = &B00000100

 An = 0
 Tasterreact = 1

Do

If Pinb.2 = 0 Then
   If Tasterreact = 1 Then
   Portb.1 = 1

      If An = 0 Then
         Portb.0 = 1
         An = 1
         Tasterreact = 0
      Else
         Portb.0 = 0
         An = 0
         Tasterreact = 0
      End If
   End If
Else
   Tasterreact = 1
End If

Loop

End


Kann man das irgendwie besser machen.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

schau mal unter debounce in der hilfe.


Dirk

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mir das kurz mal aufschreiben wie das geht ich bekommst nicht
so wirklich hin.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,



ich hab es ein bischen anders gemacht.$sim
$regfile = "8535def.dat"
Config Portb = Input
Dim An As Byte
Config Debounce = 30
do
Debounce Pinb.2 , 1 , Taster , Sub
loop
End                                                         'end
program

taster:
incr an
if an > 1 then
an = 0
Cls
Home
Lcd "aus"
Else
an = 1
Cls
Home
lcd "an"
End If
return


Mfg
Dirk

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Dirk. Funktioniert richtig gut wie ich es wollte.

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk

Müste noch einfacher gehen wenn Du in der Routine Taster den Befehl
Toggle verwendest.

Gruß
Michael

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Dirk und Thomas

Anbei mein Vorschlag, Gruß Michael.

$regfile = "8515DEF.DAT"
Config Portd = Input                                        'Hier ist
eine Taste angeschlossen
Config Portb = Output                                       'hier ist
eine LED angeschlossen

Config Debounce = 100
Set Portb.0

Do
Debounce Pind.0 , 0 , Schalter , Sub
Loop



Schalter:
Toggle Portb.0
Return

End                                                         'end
program

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch besser

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eigentlich müsste das doch auch mit 3 Tastern und 3 LEDs gehen:


Ddrb = &B00000111
Portb = &B00111000

Do
Debounce Pinb.3 , 0 , Einaustaster1 , Sub
Debounce Pinb.4 , 0 , Einaustaster2 , Sub
Debounce Pinb.5 , 0 , Einaustaster3 , Sub
Loop
End


Einaustaster1:
Toggle Portb.0
Return

Einaustaster2:
Toggle Portb.1
Return

Einaustaster3:
Toggle Portb.2
Return


Nur irgendwie leuchtet die 3.LED durchgehend. Woran liegt das ?

Autor: Michael von Gersdorff (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas

Prüf noch mal das Data-direction Register. Ich habe nur eine winzige
Änderung gemacht und Ein/Ausgänge auf mein STK500 Board abgestimmt und
es geht einwandfrei.

Noch ein Hinweis: Bei manchen Prozessoren (CC-Basic) darf man erst
toggeln nachdem ein Anfangszustand definiert wurde

Gruß
Michael


$regfile = "8515DEF.DAT"


Config Portd = Input
Config Portb = Output


Config Debounce = 100




Do
Debounce Pind.0 , 0 , Schalter1 , Sub
Debounce Pind.1 , 0 , Schalter2 , Sub
Debounce Pind.2 , 0 , Schalter3 , Sub
Loop



Schalter1:
Toggle Portb.0
Return

Schalter2:
Toggle Portb.1
Return

Schalter3:
Toggle Portb.2
Return


End                                                         'end
program

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok Danke. Ich weis jetzt worans gelegen hat. Ich hab nur die ISP
abgesteckt und schon hat alles funktioniert.

Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

hab da ein proplem und hoffe mir kann hier geholfen werden.Erstmal der 
code

$regfile = "atTiny13.dat"
$crystal = 1200000
$hwstack = 24
$swstack = 16
$framesize = 32

Config Portb.0 = Input                                      'Hier 
Taster1
Config Portb.2 = Output                                     'Hier Led1

Config Portb.1 = Input                                      'Hier 
Taster2
Config Portb.3 = Output                                     'hier Led2

Config Debounce = 100
Reset Portb.2
Reset Portb.3

Set Portb.0
Set Portb.1

Do
Debounce Pinb.0 , 0 , Schalter1 , Sub
Debounce Pinb.1 , 0 , Schalter2 , Sub
Loop

Schalter1:
Portb.2 = 1
Wait 2
Portb.2 = 0
Return

Schalter2:
Portb.3 = 1
Wait 1
Portb.3 = 0
Return
End

so und jetz mein problem.
ich brauche gleichzeitig 2 funktionen und bring das einfach nicht auf 
die reihe.
wenn zb.taste 1 kurz getrückt wird,soll eine zeit ablaufen die erst led 
1 dann led 2 einschaltet und später beide ausschaltet.dennoch soll in 
dieser zeit auch taste 2 eine zeit steuerfunktion haben.sobald ich bei 
portb 2 ein WAIT einsetze,ist die funktion für taste 2 ausser betrieb.
wie kann man das anders machen??wäre nett wenn ich hier hilfe 
bekomm.danke im vorraus!

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.