Bascom Taster

Gast #52497
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.
Gast #52500
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
Gast #52503
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
Gast #52505
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 ?
Gast #52506
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
Gast #2970008
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren