;
; setup UART module, 57600 baud (0.8% bit rate error, 8 MHz)
;
movlw low(brgval) ; |B1
movwf SPBRG ; |B1
movlw high(brgval) ; |B1
movwf SPBRGH ; |B1
bsf BAUDCTL,BRG16 ; select 16 bit BRG |B1
movlw b'00100100' ; '0-------' CSRC, n/a (async) |B1
; '-0------' TX9 off, 8 bits |B1
; '--1-----' TXEN, tx enabled |B1
; '---0----' SYNC, async mode |B1
; '----0---' SENDB, send brk |B1
; '-----1--' BRGH, high speed |B1
; '------00' TRMT, TX9D |B1
movwf TXSTA ; |B1
bcf STATUS,RP0 ; bank 0 |B0
movlw b'10010000' ; '1-------' SPEN, port enabled |B0
; '-0------' RX9 off, 8 bits |B0
; '--0-----' SREN, n/a (async) |B0
; '---1----' CREN, rx enabled |B0
; '----0---' ADDEN off |B0
; '-----000' FERR, OERR, RX9D |B0
movwf RCSTA ; |B0
movf RCREG,W ; flush Rx Buffer |B0
movf RCREG,W ; |B0
;
; setup timer 2 for 1 msec interrupts (8 MHz clock)
;
clrf TMR2 ; |B0
movlw b'00000010' ; '-0000---' TOUTPS, postscale 1 |B0
; '-----0--' TMR2ON, timer off |B0
; '------10' T2CKPS, prescale 16 |B0
movwf T2CON ; 8.0 usec 'ticks', 8 MHz clock |B0
bsf STATUS,RP0 ; bank 1 |B1
movlw 125-1 ; 125 x 8 usec ticks = 1 msec |B1
movwf PR2 ; |B1
bsf PIE1,TMR2IE ; enable timer 2 interrupts |B1
bcf STATUS,RP0 ; bank 0 |B0