IntSRV
movwf W_TEMP ;Copy W to TEMP register
swapf STATUS,W ;Swap status to be saved into W
clrf STATUS ;bank 0, regardless of current bank, Clears IRP,RP1,RP0
movwf STATUS_TEMP ;Save status to bank zero STATUS_TEMP register
movf PCLATH, W ;Only required if using pages 1, 2 and/or 3
movwf PCLATH_TEMP ;Save PCLATH into W
banksel RCSTA ;Page zero, regardless of current page
banksel PIR1
RXPOLL btfss PIR1, RCIF ;RX Buffer Full? (i.e. Data Received?)
;goto RXPOLL
banksel RCREG
movf RCREG,0 ;received data to W
banksel RCVD
movwf RCVD
movf PCLATH_TEMP, W ;Restore PCLATH
movwf PCLATH ;Move W into PCLATH
swapf STATUS_TEMP,W ;Swap STATUS_TEMP register into W
;(sets bank to original state)
movwf STATUS ;Move W into STATUS register
swapf W_TEMP,F ;Swap W_TEMP
swapf W_TEMP,W ;Swap W_TEMP into W
retfie