mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie seriellen Eingang (RX) am PIC programmieren.


Autor: Mario G. (rodenberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mit einem PIC 16F627 serielle Daten am RX Port (RB1) 
einlesen.
Bisher habe ich das immer "zu Fuß" gelöst, möchte aber die Funktion auch 
nutzen wenn sie schon da ist.
Ein Bsp. / LINK  mit Beschreibung der Einstellungen wäre mir sehr 
Hilfreich.

DANKE!


Autor: SChoasch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Naja... eigentlich ist das ganze ja nicht wirklich kompliziert.

Zuerst einmal den Pin als Eingang definieren. Danach das UART-Modul 
konifgurieren und das wars :-)

Da ich nicht weis, in welcher Sprache du programmierst, noch welche 
Einstellungen du haben willst, kann ich dir leider keine konkrettere 
antwort dazu geben.
Schau dir einfach einmal das Kapitel USART im Datenblatt an. Es gibt 
eigentlich eh nur 3 Register die du setzen musst(TXSTAT,RCSTAT,SPBRG).
Aber vergiss nicht aufs TRIS-Register!

mfg Schoasch

Autor: Mario G. (rodenberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Schoasch,

ich programmiere in Assembler (in MPLAP).
Die Baudrate soll 9600 sein und die Taktfrequenz vermutlich 12 Mhz.
Mal schauen ob ich mit dem Datenblatt zurecht komme.

Gruß MArio

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte vorkommen:

Quarz: 3.6964MHz

; Macros:
BANK1  macro
  bsf  STATUS, RP0
  endm
BANK0  macro
  bcf  STATUS, RP0
  endm

SetupRS232:      ;9600 Baud
  movlw  0x90
  movwf  RCSTA
  BANK1
  movlw  0x24
  movwf  TXSTA
  movlw  .23
  movwf  SPBRG
  BANK0
  return


Gerhard

Autor: Mario G. (rodenberger)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerhard,

bin kein Profi, also wäre eine kurze Doku schön gewesen.

Was ich nun zusammengestellt habe.

Takt 12 Mhz, Baudrate 9600, BANK hier nicht berücksichtigt

 MOVLW  B'00000011'
 MOVWF  TRISB       ;RB1 auf EINGANG

 BSF TXSTA, BRGH ; Bit BRGH auf 1 setzen, da ich mit FOSC/16 gerechnet 
habe

 MOVLW .77
 MOVWF SPBRG ; Baudrate festlegen X = 77



FLAG RXIF zeigt an wenn ich ein Byte empfangen habe
In RXREG liegt das empfangene Byte.

Was ist mit RCSTA und Interrupt? Noch was vergessen?

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, sorry, im Code hatte ich damals wenig dokumentiert, und mit 
Assembler und PIC16 hab ich mich auch schon lange nicht mehr 
beschäftigt. Ich kann dir nur noch ein bisschen Code anbieten, falls du 
per ISR empfangen willst:

  ORG     0x000             ; processor reset vector
  goto    main              ; go to beginning of program

;----------------------------------------------------------------------
;Interupt:
  ORG     0x004             ; interrupt vector location
  movwf   w_temp            ; save off current W register contents
  movf  STATUS,w          ; move status register into W register
  movwf  status_temp       ; save off contents of STATUS register

; ISR code can go here or be located as a call subroutine elsewhere
  btfsc  PIR1, RCIF      ;Receive int
  call  Receive
  ;btfsc  PIR1, TMR1IF    ;Timer Überlauf
  ;call  T1ISR

  movf    status_temp,w     ; retrieve copy of STATUS register
  movwf  STATUS            ; restore pre-isr STATUS register contents
  swapf   w_temp,f
  swapf   w_temp,w          ; restore pre-isr W register contents
  retfie                    ; return from interrupt

-------------

SetupInt:
  clrf  PIR1
  movfw  RCREG
  BANK1
  movlw  b'00100001'
  movwf  PIE1
  BANK0
  movlw  b'11000000'
  movwf  INTCON    ;enable ints
  return
--------------
Receive:
  movfw  RCREG
  movwf  cmd
;        ...
;        ...
  return

RCSTA ist schon programmiert in meiner SetupRS232
Gerhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.