Forum: Mikrocontroller und Digitale Elektronik Taster als Schalter Programmieren


von Patrick P. (korlask)


Lesenswert?

Hallo Community,

Ich finde nichts im Netz wo man einen Taster als Schalter programmieren 
kann. Beim ersten ersten drücken soll er Gnd durchschalten und den 
Zustand solange halten bis ich ihn erneut betätige. Ich finde entprellen 
ect. aber nicht sowas im netz oder zublöd dafür....
Suche das in der Programmiersprache C.

mFg Korlask

von Peter Z. (hangloose)


Lesenswert?


von Tachen (Gast)


Lesenswert?

Patrick P. schrieb:
> oder zublöd dafür...

Definitiv! Oder zu faul um zu suchen.

Such mal hier im Forum nach der Entprellroutine/Artikel ;-)
Alles andere ist nur eine Variable setzen und dem Port zuweisen.

von oldmax (Gast)


Lesenswert?

Hi
Schön, das über "faule Anfänger" geschimpft wird. Schade, um die Zeit, 
die dafür benötigt wird.
Entprellen ist die eine Sache, das was du brauchst ist eine 
Flankenauswertung. Ich weiß nicht, in welcher Sprache du unterwegs bist, 
aber ich denke, dazu gibt's in jeder Rubrik etwas.
Du merkst dir einfach den letzten gültigen Eingang und machst eine Ex-Or 
auf den neuen Status. Ist der unterschiedlich, dann bekommst du eine "1" 
als Ergebnis. Vergleichst du diese "1" mit dem alten Zustand, dann ist 
der Wechsel von "1" nach "0" erfolgt, wenn du den neuen Status nimmst, 
dann ist es ein Wechsel von "0" nach "1",
In Assembler ein kleines Beispiel:
1
LDS R16, Old_Status    ; alter Status
2
LDS R17, New_Status    ; aktueller Status
3
EOR R16, R17           ; ex-or Ergebnis "1" wenn unterschied
4
BREQ weiter            ; wenn 0, dann Old_status = new_Staus
5
AND R16, R17           ; 1=Änderung, da neuer Status 1 Änderung 0-> 1
6
STS Old_Status, R17    ; Flankenbit ablegen
7
STS In_To_1, R16       ; new_Status nach Old_Status
8
weiter:
Nun gilt es, im Programm dieses Flankenbit abzufragen, zu bearbeiten und 
zu löschen. Solange der Taster gedückt bleibt, ändert sich der Status ja 
nicht und ein neues Flankenbit gibts erst beim erneuten betätigen.
Übrigends, wenn du deine Eingänge nach GND schaltest, dann ist es 
einfacher, mit einem COM-Befehl (Assembler) die gelesenen Eingänge zu 
drehen. So wird aus einer logischen "0" eine "1" und es ist leichter im 
Kopf zu behalten "Taster gedrückt = 1"
Gruß oldmax

von Patrick P. (korlask)


Lesenswert?

@Peter Z. & oldmax

Danke für eure antworten , haben mir weiter geholfen !

MfG

von Troll (Gast)


Lesenswert?

Patrick P. schrieb:
> Suche das in der Programmiersprache C.

oldmax schrieb:
> In Assembler ein kleines Beispiel:
Lupenreines C war das nun nicht, aber wenn's hilft ;-)

von M. N. (Gast)


Lesenswert?


von Patrick P. (korlask)


Lesenswert?

@Troll

Die erklärung war es ... du Troll... ^^

von Peter D. (peda)


Lesenswert?

Patrick P. schrieb:
> Ich finde entprellen
> ect. aber nicht sowas im netz oder zublöd dafür....

Es lohnt sich, in die Beispiele auch mal hinein zu sehen.
Mein Entprellcode macht nämlich genau das mit KEY0.

Beitrag "Universelle Tastenabfrage"

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.