Forum: Mikrocontroller und Digitale Elektronik Microcontroller - Assembler


von steff p. (steffpriko)


Lesenswert?

Hi,

sitze schon seit zwei Tagen an einem Problem und komme nicht weiter, 
obwohl es nur eine simple Angelegenheit ist.

Ich versuche mit dem Mikrocontroller PIC16F876 ganz einfach nur ein paar 
LEDs anzusteuern. Dazu habe ich im TRISA alle Pins als Output definiert. 
Und im PORTA setzte einige Pins auf 1, siehe Code:
1
 main
2
  bcf     STATUS,IRP    ;Bank1 wird ausewählt
3
  bsf     STATUS,RP0
4
  bcf     STATUS,RP1
5
6
  clrf    TRISA         ;alle pins von PORTA sind Outputs
7
  
8
  bcf     STATUS,IRP    ;Bank0 
9
  bcf     STATUS,RP0
10
  bcf     STATUS,RP1    
11
12
  movlw   '00011111'     ;Leds von RA0...RA4 sollen leuchten
13
  movwf   PORTA
14
 end

Mein Problem: LEDs leuchten nicht! Laut Special Function Register sind 
alle Pins von PORTA auf Null.
Habe das gleiche schon bei PORTB ausprobiert. Hier das gleiche Problem.

Warum werden die Bits nicht gesetzt? Habe ich etwas vergessen zu 
initialisieren?

Danke für eure Hilfe!
lg

von Poster (Gast)


Lesenswert?

Ohne jezt mal genau ins Datenblatt zu schauen, aber der Port A ist bei 
PICs auch gerne noch mit weiteren Funktionen Belegt wie z.B analog 
Eingänge.
Da muß eventuel auch noch was Eingestellt werden

Mach das Bankumschalten mal lieber so:
  BANKSEL    TRISA

  BANKSEL    PORTA
Da wählt der Assembler selber die richtige Bank.

von Poster (Gast)


Lesenswert?

und mach vor dem END noch ein paar Nop. Das Schreiben auf den Port 
geschieht erst einen Takt später.

von L-hase (Gast)


Lesenswert?

du solltest Port A nach 0 schalten der liefert mehr Strom (20mA)
und Port A auf Digital stellen im R Ansel

l-hase

von Chris B. (dekatz)


Lesenswert?

Poste mal den gesamten Code.
Wie ist die CONFIG-Einstellung? welcher Oszillator ist eingestellt.
Ach ja Oszillator: du hast hoffentlich den Oszillator richtig beschaltet 
denn die ganze 16F87x-Reihe hat KEINEN internen Oszillator!

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.