Forum: Mikrocontroller und Digitale Elektronik leds sollen leuchten


von Paul B. (power-paul)


Lesenswert?

hallo alle zusammen,

ich habe mal wieder eine frage. ich habe wie gesagt erst vor kurzem 
angefangen mit pics zu programmieren und teste jetzt ein bißchen herum.

MAIN
    BTFSC  PORTA,SW1
    GOTO  leuchten
    GOTO  MAIN

leuchten
    MOVLW  B'00111111'
    MOVWF  PORTB
    RETURN


    END

so sieht mein programm bis jetzt aus. die leds sollen einfach leuchten, 
wenn ich einmal auf den taster drücke. sie gehen aber immer aus, wenn 
den taster wieder loslasse. kann mir jemand erklären wieso?
danke schon mal

gruß paul

von Lötkünstler (Gast)


Lesenswert?

benutz einen Simulator/Debugger dann siehst und lernst du es
Bit für Bit,Schritt für Schritt.
Scheint so als wenn die Ausgangslatch die Bit-Information nicht 
speichern.
Vielleicht ist dafür ein anderer Mov-Befahl nötig?
Hab da leider keine Erfahrung mit,würde aber mal in diese Richtung 
forschen.
Ohne Latch würden dann die Bits wieder gelöscht wenn durch den 
Mov-Befahl keine Ausgabe erfolgt.Übrigens werden die Led`s wohl gepulst 
wenn man die
Taste gedrückt läßt.
Eigentlich müßte es so gehen,verstehe leider auch nicht wieso.
Ist eben nur ein Schuß ins Blaue.
Poste mal wenn du das Problem gelöst hast oder nicht.

Lötkünstler

<Mit der Lizenz zum löten>

von holger (Gast)


Lesenswert?

Mach aus

     GOTO  leuchten

mal ein

    CALL leuchten

von Daniel K. (lostsoul)


Lesenswert?

Hallo

ersetze mal dein return durch ein goto leuchten

Gruß Daniel
PS: ist das dein ganzer Code?

Edit:

Die Leds sollen ja nach dem druck auf den taster dauerhaft leuchten 
oder?

von holger (Gast)


Lesenswert?

Irgendwie fehlt da noch das setzen vom TRISB Register.
Der PIC schaltet die Pins nicht von alleine auf
Ausgänge um.

Dein geposteter Code ist also SCHWACHSINN oder einfach nicht
komplett. Die LEDs können so auf keinen Fall leuchten.

Das ist nicht der Code den du verwendet hast.

Und merke: Kein RETURN ohne CALL. Kein CALL ohne RETURN..

von Lötkünstler (Gast)


Lesenswert?

MAIN
    BTFSC  PORTA,SW1
    call  leuchten
    GOTO  MAIN

leuchten
    MOVLW  B'00111111'
    MOVWF  PORTB
    RETURN


    END

Ich hab noch mal in meine Bücher geschaut.
Goto ist ein unbedingter Sprung (ohne Rückkehr)
Call ist ein Unterprogrammaufruf (mit Rückkehr(Return))
Kann es sein das der Port nicht auf Ausgang initialisiert ist?
(Macht man mit dem Tris-Befehl)
Ich glaube ,wenn der Port als Eingang programmiert ist wird ein
Schreiben in das Ausgangsregister nicht gelatcht und daher gehen
die Led`s wohl wieder aus.

Ohne Debugging/Simulation käme ich allerdings auch nicht weiter.

Lötkünstler
<mit der Lizenz zum löten>

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.