Pic18f2550 LED ansteuern

#1086837
Lesenswert?

Hallo,

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

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

4
  CONFIG    PLLDIV = 1 
5
  CONFIG    CPUDIV = OSC1_PLL2
6
  CONFIG    USBDIV = 1
7
  CONFIG    FOSC = INTOSC_HS
8
  CONFIG    IESO = OFF
9
  CONFIG    PWRT = ON
10
  CONFIG    BOR = OFF
11
  CONFIG    BORV = 2
12
  CONFIG    VREGEN = ON
13
  CONFIG    WDT = OFF
14
  CONFIG    WDTPS = 1
15
  CONFIG    MCLRE = ON
16
  CONFIG    LPT1OSC = OFF
17
  CONFIG    PBADEN = OFF
18
  CONFIG    CCP2MX = OFF
19
  CONFIG    STVREN = OFF
20
  CONFIG    LVP = OFF
21
  CONFIG    XINST = OFF
22
  CONFIG    DEBUG = ON  
23

24

25
  ORG  0x0000      
26
  goto  Main
27

28
Main:
29

30

31
  CLRF  PORTB
32
  CLRF  LATB
33

34
  CLRF    TRISB             ; Port B auf Ausgang umschalten
35

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

39
Loop:
40
   
41
  CLRF  LATA
42
  BSF  LATA,RA1
43

44
  MOVLW  0x03
45
  MOVWF  LATA
46

47
goto Loop
48

49

50
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
#1097278
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
Gast #1097311
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.
Gast #1097317
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren