'{$STAMP BS2} ' __________ ' SER TX <-| 1 24 |-- PWR ' SER RX ->| 2 23 |-- (PWR) GND ' SER ATN ->| 3 22 |-- RESET ' SER GND --| 4 21 |-- +5V ' I/O 0 --| 5 20 |-- I/O F ' I/O 1 --| 6 19 |-- I/O E ' I/O 2 --| 7 18 |-- I/O D ' I/O 3 --| 8 17 |-- I/O C ' I/O 4 --| 9 16 |-- I/O B ' I/O 5 --| 10 15 |-- I/O A ' I/O 6 --| 11 14 |-- I/O 9 ' Gps_in I/O 7 ->| 12 13 |-> I/O 8 Gps_out ' |__________| ' ' BS2-IC Gps_in CON 7 Gps_out CON 8 Bin_baud CON 84 ' 9600,8,n,1 (true) Nmea_baud CON 188 ' 4800,8,n,1 (true) LF CON $0A checksum VAR BYTE month VAR BYTE day VAR BYTE year VAR WORD hour VAR month minute VAR day second VAR year.LOWBYTE i VAR BYTE x VAR BYTE(20) PAUSE 1000 DEBUG CLS ' ensure in Motorola binary format to start SEROUT Gps_out,Nmea_baud,["$PMOTG,FOR,0",CR,LF] ' set date, handle response year = 2002: month = 9: day = 29 checksum = "A"^"c"^month^day^year.HIGHBYTE^year.LOWBYTE SEROUT Gps_out,Bin_baud,["@@Ac",month,day,year.HIGHBYTE,year.LOWBYTE,checksum,CR,LF] month = 0: day = 0: year = 0 DEBUG CR,"Date: " SERIN Gps_in,Bin_baud,[STR x\4,month,day,year.HIGHBYTE,year.LOWBYTE] DEBUG DEC month,"/",DEC day,"/",DEC year ' set clock, handle response hour = 23: minute = 59: second = 35 checksum = "A"^"a"^hour^minute^second SEROUT Gps_out,Bin_baud,["@@Aa",hour,minute,second,checksum,CR,LF] hour = 0: minute = 0: second = 0 DEBUG CR,"Time: " SERIN Gps_in,Bin_baud,[STR x\4,hour,minute,second] DEBUG DEC hour,":",DEC minute,":",DEC second ' get status checksum = "F"^"a" SEROUT Gps_out,Bin_baud,["@@Fa",checksum,CR,LF] DEBUG CR,"Status: " SERIN Gps_in,Bin_baud,[STR x\6] DEBUG BIN8 x(4),"_",BIN8 x(5) ' get receiver ID (first 20 bytes of response) checksum = "C"^"j" SEROUT Gps_out,Bin_baud,["@@Cj",checksum,CR,LF] DEBUG CR,"Receiver ID: " SERIN Gps_in,Bin_baud,[STR x\20] FOR i = 0 TO 19 DEBUG x( i ) NEXT ' go to NMEA mode checksum = "C"^"i"^1 SEROUT Gps_out,Bin_baud,["@@Ci",1,checksum,CR,LF] ' prompt for GPRMC msg PAUSE 1000 SEROUT Gps_out,Nmea_baud,["$PMOTG,RMC,0",CR,LF] ' one-time GPRMC msg SERIN Gps_in,Nmea_baud,[STR x\20] DEBUG CR,"rmc: " FOR i = 0 TO 19 DEBUG x( i ) NEXT ' return to Motorola binary format SEROUT Gps_out,Nmea_baud,["$PMOTG,FOR,0",CR,LF] again: PAUSE 5000: DEBUG CR ' read date checksum = "A"^"c" SEROUT Gps_out,Bin_baud,["@@Ac",$FF,$FF,$FF,$FF,checksum,CR,LF] DEBUG CR,"Date: " SERIN Gps_in,Bin_baud,[STR x\4,month,day,year.HIGHBYTE,year.LOWBYTE] DEBUG DEC month,"/",DEC day,"/",DEC year ' read time checksum = "A"^"a"^$FF SEROUT Gps_out,Bin_baud,["@@Aa",$FF,$FF,$FF,checksum,CR,LF] DEBUG CR,"Time: " SERIN Gps_in,Bin_baud,[STR x\4,hour,minute,second] DEBUG DEC hour,":",DEC minute,":",DEC second GOTO again