www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic18f2550 LED ansteuern


Autor: Meike Waldmann (meike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche verzweifelt eine LED an irgend einem Pin des Pic18f2550 
anzusteuern. Ich verwende MPLAB.

Mein Programm sieht so aus:
LIST P=18F2550       
#include "P18F2550.INC" (die Datei liegt im gleichen Ordner wie die asm Datei)

  CONFIG    PLLDIV = 1 
  CONFIG    CPUDIV = OSC1_PLL2
  CONFIG    USBDIV = 1
  CONFIG    FOSC = INTOSC_HS
  CONFIG    IESO = OFF
  CONFIG    PWRT = ON
  CONFIG    BOR = OFF
  CONFIG    BORV = 2
  CONFIG    VREGEN = ON
  CONFIG    WDT = OFF
  CONFIG    WDTPS = 1
  CONFIG    MCLRE = ON
  CONFIG    LPT1OSC = OFF
  CONFIG    PBADEN = OFF
  CONFIG    CCP2MX = OFF
  CONFIG    STVREN = OFF
  CONFIG    LVP = OFF
  CONFIG    XINST = OFF
  CONFIG    DEBUG = ON  


  ORG  0x0000      
  goto  Main

Main:


  CLRF  PORTB
  CLRF  LATB

  CLRF    TRISB             ; Port B auf Ausgang umschalten

  MOVLW   0x0F ; Configure A/D
  MOVWF   ADCON1 ; alle Pins als digitale Eingänge

Loop:
   
  CLRF  LATA
  BSF  LATA,RA1

  MOVLW  0x03
  MOVWF  LATA

goto Loop


END


Das Problem ist, dass nicht mal der MPLAB Simulator die Werte in LATA 
weder mit BSF noch mit MOVWF ändert. Es tut sich einfach nichts. Genauso 
wenig ändert sich etwas in PORTA, wenn ich LATA durch PORTA ersetzte.
Alles andere konnte ich im Simulator nachvollziehen und funktioniert. 
Kann mir jemand erklären woran das liegt?

Ihr würdet mir auch sehr helfen, wenn ihr mir erklärt wie ich alles 
richtig konfigurieren muss (CONFIG ...) damit der interne Oszillator 
verwendet wird.

Viele Grüße
Meike

Autor: morph1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ähm du setzt die richtungsregister vom portB und schreibst dann ins 
latch vom portA?

vl probierst es mal auf dem gleichen port ;)

Autor: Meike Waldmann (meike)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, das ist ein copy paste Fehler. In meinem Programm ist alles 
PortA.
Trotzdem setzt er die Werte im Latch nicht. Wo liegt also der Fehler?

Autor: Marco Schulze (sharkman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bin mir grad nicht sicher wie es bei den 18fxxx ist, aber beim 16fxxx 
musst meistens vorher die bank wechseln, bevor du TRISX ausführst. musst 
mal im datenblatt schauen, aber da könnte der fehler liegen.

weiterhin solltest du vielleicht erst die Digitalen ausgänge setzen und 
sie dann konfigurieren. also erst TRISX und dann PORTX

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Ports haben meist zwei oder mehr Funktionen, welche über die 
Konfigurationsregister selektiert werden. Bei Port A sind es die 
analogen Eingänge. Dummerweise sind die nach einem Reset aktiv, womit 
die digitalen Funktionen (I/O) quasi tot sind. Ich bin mir jetzt 
allerdings nicht 100%ig sicher, welches Register da beschrieben werden 
muss, am besten mal ins Datenblatt schauen.

PS: Gute Seite für PIC-Einsteiger ist www.sprut.de.

Autor: Jens (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man sollte halt das Listing richtig lesen, sorry...

Hier noch mal das Beispiel vom Datenblatt zum Initialisieren von PortA, 
vielleicht spielen die Komperatoren noch eine Rolle.

CLRF PORTA ; Initialize PORTA by
; clearing output
; data latches
CLRF LATA ; Alternate method
; to clear output
; data latches
MOVLW 0Fh ; Configure A/D
MOVWF ADCON1 ; for digital inputs
MOVLW 07h ; Configure comparators
MOVWF CMCON ; for digital input
MOVLW 0CFh ; Value used to
; initialize data
; direction
MOVWF TRISA ; Set RA<3:0> as inputs
; RA<5:4> as outputs

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.