; This file implements a software UART for receiving data from the GPS. include p16f689.inc d_softuart udata _GPS_RXREG res 1 rxfifo res 1 bitcount res 1 v_softuart code _softuart_isr btfss INTCON, INTE goto isr_TMR0 btfss INTCON, INTF goto isr_TMR0 banksel rxfifo clrf rxfifo clrf bitcount banksel TMR0 movlw 0; movwf TMR0; bsf INTCON, T0IF bsf INTCON, T0IE bcf INTCON, INTE isr_TMR0 btfss INTCON, T0IF goto isrend btfss INTCON, T0IE goto isrend banksel rxfifo incf bitcount, F movlw 10 xorwf bitcount, W btfsc STATUS, Z goto byte_complete clrc rrf rxfifo, F banksel PORTA movlw 0x04 andwf PORTA, W banksel rxfifo btfss STATUS, Z bsf rxfifo, 7 banksel TMR0 movlw 256 - 208 + 2 addwf TMR0 bcf INTCON, T0IF goto isrend byte_complete banksel rxfifo movf rxfifo, W movwf _GPS_RXREG bcf INTCON, INTF bsf INTCON, INTE bcf INTCON, T0IE isrend return global _GPS_RXREG global _softuart_isr end