English
Language : 

PIC18F14K22LIN Datasheet, PDF (11/62 Pages) Microchip Technology – 20-Pin Flash Microcontrollers 20-Pin Flash Microcontrollers
PIC18F14K22LIN
MOVLW
MOVWF
CLRF
MOVLW
MOVWF
BSF
RETURN
B'00001000'
BAUDCON
SPBRGH
0x31
SPBRG
LINCS
;16-bit Baud Rate Generator
;setup initially for 20KBaud @ 4.0MHz, BRGH=1, BRG16=1
;to enable transceiver
1.3 Sample Transmit Software
This routine is called when PIR1<TXIF> = 1:
PutDATAbyte
MOVF
MOVWF
INCF
DECFSZ
RETURN
INDF0,w
TXREG
FSR0, f
MESSAGE_COUNTER, f
; copy data byte into w-register
; point to next location
; decrement Message Counter by one
1.4 Sample Receive Software
The following routines are called when PIR1<RCIF> = 1:
GetBREAK
BTFSS
GOTO
MOVF
BTFSS
GOTO
DECF
BTFSS
GOTO
BSF
RETURN
BadBREAKchar
MOVF
RETURN
RCSTA,FERR
; was BREAK character longer than 8 bits?
BadBREAKchar ; no, not a valid BREAK, too short
RCREG,w
; dump break character, reset RCIF and FERR
STATUS,Z
BadBREAKchar ; no, not a valid BREAK, not zero
MESSAGE_COUNTER
LINRX
$-2
BAUDCTL,ABDEN ; enable AutoBaud
RCREG,w
; dump break character, reset RCIF and FERR
GetSYNC
BTFSC
GOTO
BTFSC
GOTO
DECF
MOVF
DECF
RETURN
BadSYNCchar
BCF
MOVLW
MOVWF
RETURN
BAUDCTL,ABDOVF; did baud rate generator overflow?
BadSYNCchar; yes, bad sync character
RCSTA,FERR; was there a Framing Error?
BadSYNCchar; yes, bad sync character
SPBRG
RCREG,w
; dump sync character, reset RCIF
MESSAGE_COUNTER
BAUDCTL,ABDOVF; clear the overflow condition
.12
; reset the state machine
MESSAGE_COUNTER
GetDATAbyte
MOVF
MOVWF
MOVWF
INCF
DECF
RETURN
RCREG,w
; get character, reset RCIF and FERR
RXTX_REG
; copy data into w-register
INDF0
; copy data into data area
FSR0, f
; point to next location
MESSAGE_COUNTER, f ; decrement number of bytes to receive by one
 2011 Microchip Technology Inc.
Preliminary
DS41580A-page 11