www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik leds sollen leuchten


Autor: Paul B. (power-paul)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lötkünstler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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>

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach aus

     GOTO  leuchten

mal ein

    CALL leuchten

Autor: Daniel Katzenberger (lostsoul)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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..

Autor: Lötkünstler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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>

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.