Pic 16f88 RS232 initialisieren

Gast #338741
Lesenswert?

Hallo,
ich möchte mit dem Pic 16f88 analoge Spannungen einlesen und per USART
auslesen. Ich habe das PC-Programm in VB geschrieben und es
funktioniert mit anderen Pic´s zusammen wunderbar. Der "Fehler" macht
sich so bemerkbar, dass das Funkmodul die Daten empfängt und direkt an
Pin 8 des Pic´s 16f88 (RX)weitergibt, es da aber stark gedämpft wird
und nur ca. 0,7 Volt erreicht. Ist die initialisierung des Pic´s
eventl. fehlerhaft ??

;Usart init aus Datenblatt
BSF  STATUS,PRO
MOVLW  D'64' ; für 19200 Baud
MOVWF  SPBRG
MOVLW  0x20
MOVWF  TXSTA
BSF  PIE1,TXIE
BSF  PIE1,RCIE
BCF  STATUS,PRO
MOVLW  0x90
MOVWF  RCSTA

auf versucht :

; USART initialisieren
   ; BSF      STATUS,RP0    ; Bank1
   ; MOVLW    0x20          ; Sender: RS232
   ; MOVWF    TXSTA         ;
   ; BCF      STATUS,RP0    ; Bank 0
   ; MOVLW    0x90          ; Empfänger: RS232
   ; MOVWF    RCSTA         ;

; USART Baudrate einstellen
   ; BSF      STATUS,RP0    ; Bank1
   ; MOVLW    D'64'         ; Set Baud rate  kBPS bei 20 MHz
   ; MOVWF    SPBRG
   ; BsF      TXSTA, BRGH   ; BRGH=1
   ; BCF      STATUS,RP0    ; Bank 0
wer kann mit helfen ??
Gast #338745
Lesenswert?

Ich habe den Gesamten Aufbau mit dem 16f876 getestet und es läuft
fehlerfrei ?? Ich hab´s auf den f88 umgeschrieben, wobei die Register
genutzen Reg. alle gleich sind. Die Uart-initialisierung die mit dem
876 klappt sieht so aus :
init
; PortB vorbereiten
  clrf     DatenSindDa
    bsf  STATUS, RP0  ; auf Bank 1 umschalten
  movlw  B'11111111'  ; PortB alle input
  movwf  TRISB
  bcf  STATUS, RP0  ; auf Bank 0 zurückschalten
    ;clrf  PORTB    ; alle LEDs ausschalten

; ADC einschalten
  BSF  ADCON0, 0  ; ADON=1

; ADC-Eingang AN0 auswählen
  ;call ADXEinschalten

; ADC speed für 20 MHz einstellen
  BSF  ADCON0, 7  ; ADCS1=1
  BCF  ADCON0, 6  ; ADCS0=0

; Daten linksbündig
  BSF  STATUS,RP0  ; Bank1
  BCF  ADCON1, 7  ; ADFM=0
  BCF  STATUS,RP0  ; Bank0
; USART initialisieren
    BSF      STATUS,RP0    ; Bank1
    MOVLW    0x24          ; Sender: RS232
    MOVWF    TXSTA         ;
    BCF      STATUS,RP0    ; Bank 0
    MOVLW    0x90          ; Empfänger: RS232
    MOVWF    RCSTA         ;

; USART Baudrate einstellen
    BSF      STATUS,RP0    ; Bank1
    MOVLW    D'64'         ; Set Baud rate  kBPS bei 20 MHz
    MOVWF    SPBRG
    BsF      TXSTA, BRGH   ; BRGH=1
    BCF      STATUS,RP0    ; Bank 0
Gast #338746
Lesenswert?

Die UART liegt beim 16F876 schon mal auf PortC und nicht auf PortB.

Wie sieht genau der Code für den 16F88 aus? Wenn du den oben geposteten
kopiert und nicht abgeschrieben hast, lässt der sich mit Sicherheit
schon mal nicht assemblieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren