PIC16F873A a USART

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Petr.

PIC16F873A a USART

#1 Příspěvek od Petr. »

Ahoj, nezkoušel někdo rozchodit asynchronní seriovou komunikaci na PIC16F873A? Mám oscilátor 20Mhz. Všechno by mělo být nastaveno dobře, ale když PIC propojím s pc a zapnu konzoli, tak to sice vypisuje, ale blbosti. Za každou radu budu vděčný. Kdyžtak jsem někdo nepište i jak by měli být nastaveny registry. Netvrdím, že tam chyba nebude :) Předem děkuji za odpovědi.
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#2 Příspěvek od mikollar »

takto to mam nastavene ja pri 16f877A , pre 20MHz treba zmenit hodnotu SPBRG

Kód: Vybrat vše

INIT
   BANKSEL TRISC   ; bank 1
   MOVLW   B'10111111'
   MOVWF   TRISC

   
;--------------------------------------------------------------------------   
   
   bsf   STATUS,RP0   ; nastavení BANKY 1

;   movlw   .12      ; rychlost 19600b pro krystal 4,00MHz
   movlw   .25      ; rychlost 9600b pro krystal 4,00MHz
   movwf   SPBRG
;       ------------------------
   movlw   b'00100110'   ; 8bit, vysílání povoleno, asynchroní mod, vysoká rychlost
   movwf   TXSTA      ; !!! nastavení vysílání !!!
;   bsf   TXSTA,BRGH   ; 1=vysoká rychlost, 0=nízká rychlost
;   bsf   TXSTA,TXEN   ; 1=povoleno vysílání, 0=zakázáno
;       ------------------------
   bsf   PIE1,RCIE   ; 1=povoleno přerušení z Rx (příjem)
;   bsf   PIE1,TXIE   ; 1=povoleno přerušení z Tx (vysílání)
;-------------------------------
   bcf   STATUS,RP0   ; nastavení BANKY 0

   movlw   b'10010000'   ; povolen sériový port, 8bit, asynchroní mod
   movwf   RCSTA      ; !!! nastavení příjmu !!!
   bsf   RCSTA,CREN   ; 1=povolen pokračující příjem-----------------------------------------
   bsf   RCSTA,SPEN   ; 1=povolen sériový port RS232 (Rx/Tx)-------------------------------------

   bsf   INTCON,PEIE   ; 1=povolena vsechna periferni preruseni

GOTO   main

;----------------------------------------------------------------------------------------------------------   
   
SER_TX   btfss   PIR1,TXIF   ; !!! vysilani !!!
      goto   $-1      ; =0, 0=buffer je plny, 1=buffer je prazdny
;       ------------------------
      movwf   TXREG      ; W -> do TX registru
      return
;**************************************************************************
SER_RX   btfss   PIR1,RCIF   ; !!! prijmani !!!
      goto   $-1      ; =0, 0=buffer je prazdny, 1=buffer je plny
;       ------------------------
   movf   RCREG,W      ; prijmuta data -> do W
   BCF   PIR1,RCIF
   returN


SER_TX podprogram pre odoslanie na RS232
SER_RX podprogram pre prijatie z RS232

P.S. tie bodkociarky su tam pre rozne nastavenia co sa vynechava a co nie
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“