-         

Ergebnis 1 bis 2 von 2

Thema: PIC 16F628 Port Probleme

  1. #1

    PIC 16F628 Port Probleme

    Anzeige

    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!!

    Code:
    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)

  2. #2
    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:
    Code:
       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

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •