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 einbinden

    Lauflicht Beispiel

    #include <p18F4520.inc>

    org 0x20
    i equ 0x19
    k equ 0x18

    movlw B'00000000'
    movwf TRISB

    schleife
    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 wait

    goto schleife

    wait
    movlw D'200'
    movwf k
    ja2 call wait_1ms
    decfsz k,1
    goto ja2
    return

    wait_1ms
    movlw D'200'
    movwf i

    ja 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 ja

    return

    end

    Taster Beispiel:

    #include <p18F4520.inc>
    org 0x20
    movlw B'00000001'
    movwf TRISB

    main

    BTFSS PORTB,RB0
    goto RB0_LOW
    goto RB0_HIGH

    goto main

    RB0_HIGH
    BSF PORTB,RB3
    BCF PORTB,RB2
    BCF PORTB,RB1
    goto main

    RB0_LOW
    BCF PORTB,RB3
    BSF PORTB,RB2
    BSF PORTB,RB1
    goto main

    end

    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.


Anmelden zum Antworten