[code];****************************************************************************
;preruseni od TMR0
;****************************************************************************
IF_TMR0
banksel INTCON
bcf INTCON,TMR0IF
; btg PORTA,2
movlw b'10000111' ;
movwf T0CON
bsf T0CON,TMR0ON
; clrf TMR0L
; clrf TMR0H
banksel SEGx_FLAG
; bcf TECKA1
; bsf PORTA,2
bsf GPS_OK
lfsr 0,GPS1
banksel GPS_POCET_H_TEMP
movf GPS_POCET_H_TEMP,w
banksel FSR0H
addwf FSR0H,f
banksel GPS_POCET_L_TEMP
movf GPS_POCET_L_TEMP,w
banksel FSR0L
addwf FSR0L,f
clrf WREG
addwfc FSR0H
movlw 0xFF
movwf INDF0
banksel GPS_POCET_L
movff GPS_POCET_L_TEMP,GPS_POCET_L
movff GPS_POCET_H_TEMP,GPS_POCET_H
clrf GPS_POCET_L_TEMP
clrf GPS_POCET_H_TEMP
movff GPS_POCET_VET_TEMP,GPS_POCET_VET
clrf GPS_POCET_VET_TEMP
IF_TMR0_END
#if (TEST)
call SEND_DATA
movlw .7
movwf GPS_POCET_VET
#else
#endif
; call TMRx_GPS_DEKOD
bra INT_END
;****************************************************************************
;preruseni od RS232
;****************************************************************************
IF_RS232
banksel RCREG
movf RCREG,w ; precist RCREG
banksel PIR1 ; jinak nejde vymazat priznak
bcf PIR1,RCIF ; vymazat priznak preruseni
banksel GPS_TEMP
movwf GPS_TEMP ; RCREG ulozit do TEMP
banksel TMR0L
movlw b'10000000' ;
movwf T0CON
movlw .200
movwf TMR0H
clrf TMR0L
bsf T0CON,TMR0ON
banksel GPS_TEMP
bcf GPS_OK ; vynulovat ze NEjsou data komplet
; bsf TECKA1
; movff GPS_FSR0_H,FSR0H
; movff GPS_FSR0_L,FSR0L
; movff GPS_TEMP,POSTINC0
lfsr 0,GPS1
banksel GPS_POCET_H_TEMP
movf GPS_POCET_H_TEMP,w
banksel FSR0H
addwf FSR0H,f
banksel GPS_POCET_L_TEMP
movf GPS_POCET_L_TEMP,w
banksel FSR0L
addwf FSR0L,f
clrf WREG
addwfc FSR0H
banksel GPS_TEMP
movf GPS_TEMP,w
movwf INDF0
banksel GPS_POCET_L_TEMP
incf GPS_POCET_L_TEMP
CLRF WREG
addwfc GPS_POCET_H_TEMP
banksel GPS_TEMP
movf GPS_TEMP,w
xorlw '$'
btfss STATUS,Z
bra IF_RS232_END
incf GPS_POCET_VET_TEMP
IF_RS232_END
; bsf PORTA,2
; bcf PORTA,2
bra INT_END [/code]
Snad se v tom vyznáš. Pokud 1.7ms nic nepřijde na UART, vykoná se preruseni od TMR0 a bere se to že data s GPS jsou komplet. Pak se řeší co se vlastně uložilo.