PIC16F873A a USART
Moderátor: Moderátoři
-
Petr.
PIC16F873A a USART
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
returNSER_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