- 
	
	
	
		
16f876 Ein und Ausgänge
	
	
		Hallo vielleicht kann einer helfen
ich habe keine ahnung woran es liegen kann, noch sprut und ein paar tage Forum lesen haben mir nicht geholfen. 8-[ 
Ich habe ein pic 16f876 den ich mit einem velleman bord programmiere funktioniert auch alles, solange ich mich auf eine reine ausgabe beschränke.
nun wollte ich aber auf partA, B oder C ablesen ob diese high oder low sind, und dann dieses Bitmuster auf einem anderen Port wieder ausgeben.
hier der verwendete code
	Code:
	
INPUT                EQU        H'23'
                ORG        0
                GOTO        RESET
        
;                **************************
;               *     main routine:      *
;               **************************
RESET                
                
                BSF        STATUS,RP0
                MOVLW        B'11111111'
                MOVWF        TRISC                
                MOVLW        B'00000000'
                MOVWF        TRISB
                BCF        STATUS,RP0
                CLRF        PORTB
                
RUECK                MOVLW        PORTC
                MOVWF        INPUT
                MOVLW        INPUT        
                MOVWF        PORTB
                GOTO        RUECK
                END
 
danke für eure hilfe, dürfte woll nicht so schwer sein
grischan
	 
 - 
	
	
	
	
		Hallo grischan,
meine erste (Gegen-) Frage zielt auf Deine Hardware: haben die Eingangs-Pins einen PullUp-Widerstand ?
Dann zum Code:
	Code:
	
RUECK
MOVLW   PORTC   ; Literal = Adresse von Port C nach W laden
MOVWF   INPUT    ; Port C Adresse in Variable INPUT speichern
MOVLW   INPUT    ; Literal = Adresse von Variable INPUT nach W laden
MOVWF   PORTB   ; INPUT Adresse an Port B ausgeben
GOTO   RUECK
; Wie wäre es so:
RUECK
MOVFW   PORTC   ; Inhalt von Port C nach W laden
MOVWF   INPUT    ; Port C Zustand in Variable INPUT speichern
;MOVFW   INPUT    ; Inhalt von Variable INPUT nach W laden (warum ?)
MOVWF   PORTB   ; W / INPUT Inhalt an Port B ausgeben
GOTO   RUECK
END
 PS: Warum ist das Code-Feld so lang ?
	 
 - 
	
	
	
	
		an portc werden die eingänge einfach über schalter auf die vdd spannung gezogen. der eingang wird auch über leds kontrolliert.
danke für die schnelle antwort
	 
 - 
	
	
	
	
		Digital-Eingänge brauchen einen definierten Pegel. Über einen Schaltkontakt bekommen sie nur einen Pegel bei geschlossenem Kontakt, jedoch keinen bei offenen Kontakt. Deshalb muß der Pegel für einen offenen Kontakt über einen Widerstand dem Eingang zugeführt werden (PullUp oder PullDown).
Hast Du die Software-Fehler erkannt ? Funktioniert jetzt Dein Programm ?
	 
 - 
	
	
	
	
		Hallo,
zusätzlich zu dem vorangegangenen noch eine kleine Bemerkung. Mircochip empfiehlt als ersten Befehl ein "nop" auszuführen. Bei MPLAB ist dazu auch eine vorlage dabei.
Also: ORG 0
         nop
         goto RESET
         ....
Gruß
Mario