PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] PIC16F685 alle Ausgänge durchschalten?



n00b
24.12.2005, 09:58
Hallo, ich möchte alle Ausgänge an PORTC eines 16F685 auf 1 schalten. Dazu habe ich folgendes Programm geschrieben:


#include <p16f685.inc>

__CONFIG _PWRTE_ON & _WDT_OFF & _LP_OSC

cblock 0x20
Test
endc


ORG 0x00
GOTO INITIALISIERUNG
ORG 0x04
GOTO ISR
ORG 0x05

INITIALISIERUNG

;internen 32khz Takt verwenden
banksel OSCCON
bcf OSCCON,IRCF0
bcf OSCCON,IRCF1
bcf OSCCON,IRCF2
BCF OSCCON, OSTS
BSF OSCCON, LTS
BSF OSCCON, SCS
;_______________________________

;PortC initialisieren
BCF STATUS,RP0
BCF STATUS, RP1
CLRF PORTC
BSF STATUS,RP1
CLRF ANSEL
BSF STATUS,RP0
BCF STATUS,RP1
CLRF TRISC
;----------------------portc initialisiert


banksel PORTC
; BSF PORTC,0
; BSF PORTC,1
; BSF PORTC,2
; BSF PORTC,3
; BSF PORTC,4
; BSF PORTC,5
; BSF PORTC,6
; BSF PORTC,7
MOVLW B'11111111'
MOVWF PORTC

schleife:
goto schleife

ISR
retfie

END
Das habe ich simuliert, jedoch wird statt "1111111" nur "00101111" ausgegeben. Wenn ich statt
MOVLW "B'1111111'
MOVWF PORTC"
8 mal BSF PORTC,0;7 schreibe steht am Ende in PORTC: "00111111".
Die Initalisierung von PORTC habe ich genau so geschrieben, wie sie im Datenblatt steht. Brauche ich noch eine zusätzliche Initialisierung, in der ich vielleicht einen Analogeingang oder so umschalten muss, damit es funktioniert? Leider habe ich dazu noch nichts gefunden.
Oder ist es gar nicht möglich bei diesem PIC alle Ausgang auf 1 zu schalten?

Ich bedanke mich schon im Voraus und wünsche allen ein frohes Weihnachtsfest!

Viele liebe Grüße,
n00b

stegr
24.12.2005, 16:10
8 mal BSF PORTC,0;7 schreibe steht am Ende in PORTC: "00111111".
Steht das wirklich in PORTC oder sind nur die Pins high?
Eigentlich sollte das so gehen, wie du es gemacht hast - im Datenblatt steht nix, was dem entgegenspricht...
Die Portinitialisierung sollte so passen, wobei und ANSEL eigentlich nicht unbedingt brauchst - das ist beim ausgeben egal...
TRISC muss auf 0x00 und PORTC auf 0xFF und dann sollten alle Pins oben sein. Vor dem MOVWF TRISC ein banksel TRISC und vor dem MOVWF PORTC ein banksel PORTC und im Prinzip war das dein ganzes Programm...

Frohe Weihnachten,
Stefan