Hallo,
ich arbeite mit dem PIC 16F870.
Ich habe Probleme damit, das PortB zu konfigurieren.
Es sollen alle Pins PortB Outputs sein. Deshalb hab ich TRISB Bits alle auf 0 gesetzt. Auch meine ich, dass ich die anderen beiden wichtigen Register INTCON und OPTION_REG richtig gesetzt habe.
Hier der relevante Code, der den PIC konfiguriert.
;##########################################################
; Hauptprogramm
;##########################################################
start
;***************************************
; INTCON und OPTION_REG konfigurieren
;***************************************
banksel OPTION_REG
clrf OPTION_REG
bcf OPTION_REG, T0CS ; Timer0 läuft mit Interner Clock
bcf OPTION_REG, NOT_RBPU ; PORTB Pull-ups an
banksel INTCON
clrf INTCON ; alle Interrupt-Enabales aus
bsf INTCON, T0IE ; nur TIMER0 Interrupt
;******************************
; PORTs konfigurieren
;******************************
; Output = 0
; Input = 1
Banksel TRISA
movlw B'00010101' ; PortA konfig
movwf TRISA
movlw B'00000000' ; PortB konfig
movwf TRISB ; alles outputs
movlw B'01111011' ; PortC konfig
movwf TRISC
;*****************************************
; PWM-Modul vorbereiten, PWM benutzt Timer2
;*****************************************
; Vorteiler 1:1 und Timer2 einschalten
banksel T2CON
CLRF T2CON ; Vorteiler 1:1
BSF T2CON,TMR2ON ; Timer2 ein
; Frequenz auf 4 kHz (wenn 4 Mhzosc = 1 MHztakt) einstellen
Banksel PR2
MOVLW 0x7F ; 1000/128=8KHz
MOVWF PR2 ;
; Tastverhältnis initialisieren
banksel CCPR1L
clrf CCPR1H
movlw 0x3F
movwf CCPR1L ; PWM-output
; CCP1 Module als im PWM MODE betreiben
CLRF CCP1CON ; alles clear
BSF CCP1CON,CCP1M3 ; CCP1-Modus PWM-Mode
BSF CCP1CON,CCP1M2 ; CCP1-Modus PWM-Mode
;*****************************
; meine Parameter initialisieren
;*******************************
clrf ISR
Ich habe meine Schaltung auf einem Steckboard aufgebaut.
Alle anderen Ports (A+C) hab ich erfolgreich mit Inputs und Outputs konfiguriert.
Nun das Problem:
das ganze PORTB funktioniert nicht so wie soll.
Und ich beobachte, daß obwohl RB3 Output sein sollte, dass der PIC mit Resets oder Interrupts reagiert, wenn ich an dem Port irgendetwas mache, zB nur ein Kabel stecke und dieses anfasse.Im datenblatt steht ja, daß mit RB-Pins Interrupts ausgelöst werden können, aber nur wenn sie als Inputs definiert sind. Mit TRISB ='alles 0' sollten Interrupts aber doch ausgeschaltet sein.
was mache ich da nur falsch.

Bernd.