0000: MOVLW 00
0001: MOVWF 0A
0002: GOTO 070
0003: NOP
.................... #include <16f876a.h> // Selecciona el PIC
.................... //////// Standard Header file for the PIC16F876A device ////////////////
.................... #device PIC16F876A
.................... #list
....................
.................... #fuses XT,NOWDT,NOPROTECT,PUT,BROWNOUT // Opciones de configuración
.................... #use delay(clock=4000000) // Velocidad del Cristal : 4 Mhz
....................
.................... #use rs232(baud=9600,xmit=pin_c6,rcv=pin_c7,stream=HOSTPC)
.................... #use rs232(baud=1200,xmit=pin_b1,rcv=pin_b0,stream=GPS)
0013: MOVF 04,W
0014: MOVWF 78
0015: MOVLW 08
0016: MOVWF 77
0017: BSF 03.5
0018: BSF 06.0
0019: BCF 03.5
001A: BTFSS 06.0
001B: GOTO 01E
001C: BSF 03.5
001D: GOTO 019
001E: CLRF 21
001F: BSF 77.7
0020: GOTO 031
0021: BCF 77.7
0022: GOTO 031
0023: BCF 03.0
0024: BTFSC 06.0
0025: BSF 03.0
0026: RRF 21,F
0027: BSF 77.6
0028: GOTO 031
0029: BCF 77.6
002A: DECFSZ 77,F
002B: GOTO 023
002C: MOVF 78,W
002D: MOVWF 04
002E: MOVF 21,W
002F: MOVWF 78
0030: GOTO 046
0031: MOVLW 01
0032: MOVWF 04
0033: MOVLW 00
0034: BTFSC 77.7
0035: MOVLW 55
0036: MOVWF 78
0037: DECFSZ 78,F
0038: GOTO 037
0039: DECFSZ 04,F
003A: GOTO 033
003B: MOVLW 0D
003C: BTFSC 77.7
003D: MOVLW 03
003E: MOVWF 78
003F: DECFSZ 78,F
0040: GOTO 03F
0041: BTFSC 77.7
0042: GOTO 021
0043: BTFSC 77.6
0044: GOTO 029
0045: GOTO 023
0046: BCF 0A.3
0047: BCF 0A.4
0048: GOTO 092 (RETURN)
.................... #use rs232(baud=9600,xmit=pin_b3,stream=DEBUG)
0049: BSF 03.5
004A: BCF 06.3
004B: BCF 03.5
004C: BCF 06.3
004D: MOVLW 08
004E: MOVWF 78
004F: NOP
0050: NOP
0051: NOP
0052: BSF 78.7
0053: GOTO 063
0054: BCF 78.7
0055: RRF 22,F
0056: BTFSC 03.0
0057: BSF 06.3
0058: BTFSS 03.0
0059: BCF 06.3
005A: BSF 78.6
005B: GOTO 063
005C: BCF 78.6
005D: DECFSZ 78,F
005E: GOTO 055
005F: NOP
0060: NOP
0061: NOP
0062: BSF 06.3
0063: MOVLW 1C
0064: MOVWF 04
0065: DECFSZ 04,F
0066: GOTO 065
0067: NOP
0068: NOP
0069: BTFSC 78.7
006A: GOTO 054
006B: BTFSC 78.6
006C: GOTO 05C
006D: BCF 0A.3
006E: BCF 0A.4
006F: GOTO 0A3 (RETURN)
....................
.................... char c=' ';
*
008A: MOVLW 20
008B: BCF 03.5
008C: MOVWF 20
....................
.................... ///PROGRAMA
....................
.................... void main(void)
.................... {
*
0070: CLRF 04
0071: MOVLW 1F
0072: ANDWF 03,F
0073: MOVLW 19
0074: BSF 03.5
0075: MOVWF 19
0076: MOVLW 26
0077: MOVWF 18
0078: MOVLW 90
0079: BCF 03.5
007A: MOVWF 18
007B: BSF 03.5
007C: BCF 06.1
007D: BCF 03.5
007E: BSF 06.1
007F: BSF 03.5
0080: BCF 06.3
0081: BCF 03.5
0082: BSF 06.3
0083: BSF 03.5
0084: BSF 1F.0
0085: BSF 1F.1
0086: BSF 1F.2
0087: BCF 1F.3
0088: MOVLW 07
0089: MOVWF 1C
....................
.................... disable_interrupts(GLOBAL); // todas las interrupciones desactivadas
*
008D: BCF 0B.6
008E: BCF 0B.7
008F: BTFSC 0B.7
0090: GOTO 08E
....................
.................... while(TRUE) {
.................... c=fgetc(GPS);
0091: GOTO 013
0092: MOVF 78,W
0093: MOVWF 20
.................... fputc(c,HOSTPC);
0094: MOVF 20,W
0095: BTFSS 0C.4
0096: GOTO 095
0097: MOVWF 19
.................... if(c==13)
0098: MOVF 20,W
0099: SUBLW 0D
009A: BTFSS 03.2
009B: GOTO 0A7
.................... fprintf(DEBUG,"Got a CR\r\n");
009C: CLRF 21
009D: MOVF 21,W
009E: CALL 004
009F: INCF 21,F
00A0: MOVWF 77
00A1: MOVWF 22
00A2: GOTO 049
00A3: MOVLW 0A
00A4: SUBWF 21,W
00A5: BTFSS 03.2
00A6: GOTO 09D
.................... }
00A7: GOTO 091
.................... }
00A8: SLEEP