Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage...


von Sven (Gast)


Lesenswert?

Hallo Leute,
hab da mal ne Frage bezüglich Bascom AVR.
Wie kann ich denn damit tasten an den Ports abfragen.
hab schon alle möglichen Befehle abgeklappert...

Vielen Dank

schon mal

von Rainer (Gast)


Lesenswert?

Wenn du ne Taste drückst, dann wird ein High statt dem sonst anliegenden 
Low (oder umgekehrt) an den Port gelegt, also brauchst du nur 
auszulesen, was an dem Port anliegt.

von Rainer (Gast)


Lesenswert?

(Ist also mehr oder minder mov, cmp, und dann ein paar conditional 
jumps)

von ThomasB (Gast)


Lesenswert?

Hallo Sven:
Es gibt den Befehl BITWAIT:

Dim A As Bit
Bitwait A , Set                 'wait until bit a is set
Bitwait Portb.7 , Reset         'wait until bit 7 of Port B is 0.
End
Oder den Befehl DEBOUNCE
Z.b.
DDRB=255:Portb=255
Do
Debounce pind.1,1,myPrg,sub
loop
myPrg:
Toggle portb.1
return
Mehr Infos gibt es Helpfile von BASCOM AVR
MfG ThomasB

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Wohl eher "sbic" oder "in", "andi", "cmp", je nachdem wie gut der 
Compiler optimiert (aber das wird den Fragesteller nicht wirklich 
interessieren).

@Sven: Wie hast du denn deine Taster angeschlossen? So wie in 
http://www.mikrocontroller.net/images/taster.gif? Um den Taster 
abzufragen, musst du das Register PIND lesen und schauen ob das 0. Bit 0 
ist (falls dein Taster an Bit 0 von Port D angeschlossen ist). Wie genau 
man das in BASCOM macht hab ich keine Ahnung, wahrscheinlich:
IF (PIND&0x01)=0 THEN bla

von Sven (Gast)


Lesenswert?

Vielen Dank für all eure Antworten

Der Tip von ThomasB mit Debounce hat geklappt.
Aber noch eine 2 Frage gleich hinterher....

Wie kann ich denn festellen, ob eine Taste z.b. länger als 2 sek. 
gedrückt wird ???

Habe folgendes vor: Taste an Portb.2 kurz gedrückt = Daten aus dem 
EEprom lesen, lange drücken : aktuellen Angezeigten wert ins EEprom 
schreiben...

Hat da auch jemand noch 'n Tip für mich ????


Vielen Dank schon mal

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.