Forum: Mikrocontroller und Digitale Elektronik PIC 16F84 Tasteransteuerung


von Michael Z. (michael_93)


Lesenswert?

Hallo
Ich muss für die Schule einen Schrittmotor mit dem PIC16F84 
programmieren, habe aber noch nicht so viel Erfahrung im programmieren.

Mein Problem ist, dass ich ich 3 Taster habe und diese so ins Programm 
einbinden muss, dass wenn ich einen dieser 3 drücke ein jeweils anderes 
Programm abläuft.

Meine Idee ist, dass ich den Taster abfrage ist er 1 oder 0 dann eine 
UND-Verknüpfung mit einem Merker(mit dem Wert 1) mache, also wenn der 
Taster gedrückt ist wird 1 ansonsten 0 gespeichert und danach einfach 
decfsz um weiter zu machen

Aber wie frage ich die Taster nach ihrem Wert??

Danke

von Wackel D. (pitzelpatzel)


Lesenswert?

Hi,

eine Frage, welche Programmiersprache?

In ASM würde ich per "BTFSC" Befehl den entsprechenden Portpin abfragen. 
Danach kannst du deinen Merker setzen.

MfG

von Michael Z. (michael_93)


Lesenswert?

ja ASM
muss ich dann einfach:
BTFSC Taster1,1

dann überspringt er den nächsten und das programm läuft weiter??

von Sebastian Hepp (Gast)


Lesenswert?

Anstelle eines Merkers könntest du auch eine Funktion/Prozedur aufrufen. 
:)

von Knut (Gast)


Lesenswert?

Wieso eigentlich ne UND Verknüpfung? Nach einem BTFSC Befehl gleich n 
Sprung ins Programm und gut ist... Und dann die Taster pollen.

Knut

von Sebastian Hepp (Gast)


Lesenswert?

1
BTFSS Taster1, 1
macht wahrscheinlich nicht was du möchtest.

"btfss Register, Bit" prüft ob ein Bit gesetzt ist und überspringt den 
folgenden Befehl wenn das der Fall sein sollte.

Sind deine Taster Active-High oder Active-Low? Und an welchen Ports 
hängen sie?

von Michael Z. (michael_93)


Lesenswert?

was ist active high/ low??
sind an PORTA0
PORTA1 und PORTA2

von Michael Z. (michael_93)


Lesenswert?

danke leute es läuft ihr seid die besten :D

von Joachim (Gast)


Lesenswert?

Hallo Michael,
... na da hast du dir ja was vorgenommen.

Active low/high bedeutet, das der entsprechende Taster bei Betätigung 
auf low (Masse, 0Volt) oder high (meistens +5V, bei neueren PICs auch 
bei 3,3V) liegt.

Das Prob: wenn du bereits beim Abfragen eines Tasters Hilfe brauchst, 
sieht das für dein Projekt nicht gut aus... du weißt was ich meine. Das 
Microchip Forum ist eine gute Quelle für Hilfe aller Art (besser als 
hier), jedoch sollte man ein vernünftiges Englisch können um an dieser 
Stelle weiter zu kommen.

Die PICs sind tolle Controller aber gerade bei Anfängern können sie viel 
Kopfkratzen hervorrufen. Mein Tip: wenn du noch Zeit und etwas 
Taschengeld für dein Schulprojekt übrig hast, dann zieh die Notbremse 
und steig auf ein anderes Pferd. Die AVRs (google nach Arduino) sind 
nicht ganz so kryptisch in der Programmierung, der Support hier ist groß 
(viel(!) größer als für PICs) und wenn du fleißig bist kriegste das 
anhand von den kubikmeterweise Codebeispielen die man hier finden kann 
eventuell alles selber hin.

Ich hoffe, ich habe dir jetzt keine Angst gemacht. Aber 
Microcontroller-Programmierung und Standard-PC-Programmierung 
unterscheiden sich nun mal: Während man PC-Programmierung mit dem 
Steuern eines großen Ausflugsschiffes vergleichen kann (oberstes Ziel: 
die Leute sollen nicht seekrank werden sondern Spaß haben) ähnelt das 
programmieren von 8bit-Controllern eher Wildwasser-Rafting mit vielen 
scharfen Steinen, engen Kurven und viel kaltem Wasser...

Wünsche dir viel Glück
Joachim

von Michael Z. (michael_93)


Lesenswert?

ja also passt schon ich hatte den rest (weitaus schwierigere sachen) 
schon programmiert wegen den tastern hatte ich einen falschen tipp 
bekommen und bin dadurch von denkfehler zu denkfehler da konnte das 
nichts mehr werden

ich musste 2 befehle ausbessern und alles hat funktioniert
trotzdem dankeschön für den ratschlag

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.