PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PIC 16F628 Port Probleme



Lernfähig
20.11.2006, 22:26
Hallo erstmal. Habe schon überall gesucht, aber nix gefunden, also hier mein eigener kleiner thread.
Ich will/muss mit dem 16F628 zwei LEDs an RB5 und RB3 wechselweise an und ausschalten, also LED1 an und LED2 aus, dann nach Timer0-Interrupt genau umgekehrt.
Hier mein eigentliches Problem:

Ich bringe es nicht fertig irgendwas in PORTA oder B zu schreiben (ja RB sind pins von PortB, ich weiß). Ich kann zwar den Timer reseten, die Bänke wechseln, in TRISB/Intcon/Option was reinschreiben, Bank wieder wechseln, PortB in w einlesen; aber ich schaffs ums Verrecken nicht irgendwas in PortB zu schreiben.

Bitte helft mir wenn Ihr Rat wißt, bin echt am verzweifeln!!


main

; Hauptprogramm,-Code einfügen


clrf TMR0 ;Timer0 zurücksetzten, steht sonstwas drin nach Reset
bsf PORTB, 3 ;-----> hier passiert schon mal nix <---------
bsf STATUS, RP1
bsf STATUS, RP0 ;schalte auf Bank 1
movlw B'11101011' ; PortB.3/5 als Ausgänge, Rest Eingänge; in W schreiben
;RB.7 --> RB.0
movwf TRISB ;schreibe diese Bitfolge in TRISB
movlw B'00000111' ;RBPU\=void, INTEDG=void, TOCS=0 interner Takt, T0SE=void,
;PSA=0 Vorteiler nutzen, PS2/1/0=1 höchster Teiler (256:1)->langsam
movwf OPTION_REG ;schreibe Bitfolge in Spec.Func.Reg "Option"


movlw B'00100000' ;gerade LED1 an RB5 wird angeschaltet, LED2 bleibt aus

bcf STATUS, RP1
bcf status, RP0 ;"bit clear file": RP0=0 --> auf Bank 0 umschalten

movwf PORTB
; clrf TMR0 ;
movfw PORTB ; Wert von PortB wird wie gewünscht in wreg geschrieben
movwf PORTA ;-----> hier passiert nix mehr
movwf PORTB ;-----> -"-
bsf PORTB, 6 ;-----> hier auch nicht <-------
bsf PORTB,7 ;-----> hier ebenfalls nicht <-------

ende
goto ende ;dann hängt PIC in Endlosschleife wie gewünscht bis Interrupt kommt
](*,) [/scroll][/code]

(geschrieben und simuliert hab ich übrigens mit MPLAB)

Lernfähig
21.11.2006, 17:24
Man beachte meinen Namen, so bin ich echt!
Denn ich hab die Lösung selbst gefunden.
Ich war wohl etwas überarbeitet, saß an 3 Tagen ca 20 Stunden dran und hatte keinen Gedanken mehr frei.
Hier die Lösung für die, dies interrsiert.

Wenn ich RB5 und RB3 ansprechen will, sollte es sollte es nach dem Wechsel auf Bank 1 heißen:


bsf STATUS, RP1
bsf STATUS, RP0 ;schalte auf Bank 1
movlw B'11010111' ; PortB.3/5 als Ausgänge, Rest Eingänge; in W schreiben
movwf PORTB

Ich hab versehentlich RB4 und RB2 zum Ausgang gemacht!
Sorry daß ich euch damit genervt hab und nu meine eigene Lösung präsentiere, aber ich war echt verzeifelt!

Danke trotzdem