Taster mit LED
-
Hi an alle
habe hir ein Pickit2 http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805
und bin gleich am Progen
ich habe 4Leds als Lauflicht Programmiert.
ich will noch 2 oder 3 verschiedene Lauflichter machen also das die Leds verschieden leuchten und mit ein taster will ich dan von der einen zu der andern Sequenz wechseln, ich kann irgendwie den Taster nicht einbindenLauflicht Beispiel
#include <p18F4520.inc>
org 0x20
i equ 0x19
k equ 0x18movlw B'00000000'
movwf TRISBschleife
movlw B'00001110'
movwf PORTB
call wait
movlw B'00001101'
movwf PORTB
call wait
movlw B'00001011'
movwf PORTB
call wait
movlw B'00000111'
movwf PORTB
call wait
movlw B'00001011'
movwf PORTB
call wait
movlw B'00001101'
movwf PORTB
call waitgoto schleife
wait
movlw D'200'
movwf k
ja2 call wait_1ms
decfsz k,1
goto ja2
returnwait_1ms
movlw D'200'
movwf ija nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
decfsz i,1
goto jareturn
end
Taster Beispiel:
#include <p18F4520.inc>
org 0x20
movlw B'00000001'
movwf TRISBmain
BTFSS PORTB,RB0
goto RB0_LOW
goto RB0_HIGHgoto main
RB0_HIGH
BSF PORTB,RB3
BCF PORTB,RB2
BCF PORTB,RB1
goto mainRB0_LOW
BCF PORTB,RB3
BSF PORTB,RB2
BSF PORTB,RB1
goto mainend
Kann mir jemand helfen ??
-
Und deine Frage/Problem bei der Sache ist jetzt was genau... ?
Falls du willst, dass dir jemand deine Codes zusammenbastelt, schreib das am besten auch so...
-
Nobuo T schrieb:
Und deine Frage/Problem bei der Sache ist jetzt was genau... ?
Falls du willst, dass dir jemand deine Codes zusammenbastelt, schreib das am besten auch so...na ja Ich kann den Taster nicht einbinden kann mir jemand helfen? sollte wohl klar sein aber ok ich schreib das noch mal:)
kan mir jemand zeigen wie man ein Taster einbindet??
Danke
-
Das sagtest du schon. Wo genau nun dein Problem liegt jedoch noch immer nicht.
Aber gut:
Einen Code, der auf ein Signal an Port B0 (zB. von einem Taster) reagiert, hast du bereits gepostet. Sieht auf den ersten Blick auch ok aus.
Damit solltest du von der Softwareseite also wissen, wie man "ein Taster einbindet".Von der technischen Seite kannst du einen Taster zB. anschliessen, indem du den betreffenden Port (zB. B0), ueber einen Pull-Up-Widerstand an VCC haengst und den Taster dann wiederum zwischen Port und Masse setzt.
Geht analog auch mit einem Pull-Down-Widerstand...
-
Hab ich alles hab ein Pick 2 da ist alles dabei
Ich will eigendlich nur wissen wie man nach jeder Sequenz immer ne Abfrage macht ob der Taster gedrückt ist. Wen gedrückt zur nechster springen wen nicht die Sequenz wiederholen
-
Ok, wenn ich dich richtig verstehe, hast du also keine Probleme mit der Elektronik und auch nicht mit deinen Beispielcodes, dh. du hast sie komplett verstanden.
Dann gehe ich davon aus, dass du wissen willst, an welchen Stellen du das polling am Port mit dem Taster machen sollst?Die einfachste Variante waere, am Ende deiner Lauflicht-Schleife einmal zu schauen, was der Taster macht. Also praktisch wie im Taster-Beispiel nur mit dem Lauflicht-Kram davor. In dem Fall muesstest du den Taster am Ende der Schleife gedrueckt halten, damit umgeschaltet wird.
Damit ein kurzes Druecken jederzeit zum Umschalten am Ende einer Schleife fuehrt, musst du die polling-Intervalle verkuerzen und eine Variable einrichten, die gesetzt wird, sobald der Taster gedrueckt wurde und die dann am Ende der Schleife getestet wird.
Ein guter Platz fuer das Polling waere zB. die Schleife in der Wait-Funktion.Eine viel elegantere Loesung waere natuerlich die Verwendung von Interrupts statt Polling. Evtl. hat dein Chip Ports, die einen Interrupt ausloesen koennen. In deren Behandlungsroutine kannst du dann einfach deine oben genannte Variable setzen, die du pruefst, um am Ende der Lauflicht-Schleife zu pruefen, ob das Muster gewechselt werden soll.
Die zweitbeste Loesung ist falls dein Chip einen Timer hat, in dessen Interrupt-Behandlung das Polling zu machen.