How do I discern Maidenhead Locator from GPS lat long info.


Results 1 to 40 of 126

Threaded View

  1. #34
    Join Date
    Dec 2011
    Location
    IO93ok
    Posts
    190

    Default Re: How do I discern Maidenhead Locator from GPS lat long info.

    This is the full code with the Ints active but it's just updating first character.

    Code:
    ;
    ;        GPS NMEA Display code with GPSDO monitoring
    ;
    ; 			         PIC16F876A                             
    ;                                   __________                                          
    ;                          !MCLR |1        28| RB7------D7              
    ;     PLL Volt--AN0---RA0 |2        27| RB6------D6          
    ;    adc spare--AN1---RA1 |3        26| RB5------D5                     
    ;    adc spare--AN2---RA2 |4        25| RB4------D4                     
    ;    adc spare--AN3---RA3 |5        24| RB3------LCD E                     
    ;                  spare---RA4 |6        23| RB2------LCD RS                
    ;    adc spare--AN4---RA5 |7        22| RB1------spare
    ;                Ground---Vss |8        21| RB0------PPS In      
    ;                OSC1---XTAL |9        20| VDD------ +5 V        
    ;                OSC2---XTAL |10       19| Vss------Ground
    ;                  spare---RC0 |11       18| RC7------H-RX -- GPS NMEA In
    ;                  spare---RC1 |12       17| RC6------H-TX -- GPS Command Out
    ;                  spare---RC2 |13       16| RC5------spare
    ;               Pbutton---RC3 |14       15| RC4------spare           
    ;                                       ----------                                               
    ;====================================================================='
    ' Program to display returned value of a GPS NMEA string on RA4
    ' LCD in 4-BIT mode PIC16F876a controller 4Mhz clock Fuse PWRT BODEN
    ' 
    'Typical GPS sentence string: $GPRMC,192144.62,A,5041.6058,N,00412.6124,E,0.45,3 57.74,081205,,*0B
    
    'The default sentences are continuously output. 
    'Now suppose I want to read only one particular sentence I need to program the GPS to do that.
    
    'The input message  ILOG controls which sentences are logged.
    
    '$PRWIILOG,???,V,,,\r,\n
    
    'Inputting this sentence, disables all the sentences.
    
    'Now suppose we want only RMC sentence then input the following sentence serially to gps
    
    '$PRWIILOG,RMC,A,,,,\r\n
    
    'The \r() and \n () are sentence terminator in NMEA
    
    'V disables that particular sentence while A enables that sentence.
    
    
    
    @  __config  _HS_OSC & _WDT_ON & _PWRTE_ON & _BODEN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF & _DEBUG_OFF & _CP_OFF
    
    
    ; Place a copy of these variables in your Main program for digit characters--
    ;--   The compiler will tell you which lines to un-comment                --
    ;--   Do Not un-comment these lines                                       --
    ;---------------------------------------------------------------------------
    ;wsave   VAR BYTE    $20     SYSTEM      ' location for W if in bank0
    wsave   VAR BYTE    $70     SYSTEM       ' alternate save location for W 
                                             ' if using $70, comment wsave1-3
    
    ' --- IF any of these three lines cause an error ?? ------------------------
    '       Comment them out to fix the problem ----
    ' -- Which variables are needed, depends on the Chip you are using -- 
    'wsave1  VAR BYTE    $A0     SYSTEM      ' location for W if in bank1
    'wsave2  VAR BYTE    $120    SYSTEM      ' location for W if in bank2
    ;wsave3  VAR BYTE    $1A0    SYSTEM      ' location for W if in bank3
    ' --------------------------------------------------------------------------
    
                              ; Must use the 32-bit Floating Point routines
    INCLUDE "FP2032.bas"      ; 32-bit Floating Point for 14-bit cores with RAM at $20
    INCLUDE "Average.bas"     ; DT's 16-bit Analog Module averaging values
    INCLUDE "DT_INTS-14.bas"  ; Base Interrupt System
    INCLUDE "ReEnterPBP.bas"
    
    Define LCD_DREG PORTB     ' Port for LCD Data
    Define LCD_DBIT 4         ' Set LCD starting data bit  
    Define LCD_RSREG PORTB    ' Port for RegisterSelect (RS) bit
    Define LCD_RSBIT 2        ' Port Pin for RS bit  (pin9)
    Define LCD_EREG PORTB     ' Port for Enable (E) bit
    Define LCD_EBIT 3         ' Port Pin for E bit    (pin7)
    Define LCB_BITS 4         ' Using 4-bit bus
    
    Define LCD_COMMANDUS 1500 ' Command Delay (uS)
    define LCD_DATAUS 50      ' Data Delay (uS)
    
    DEFINE OSC 4
    
    DEFINE ADC_BITS 10        ' Setup ADC 
    DEFINE ADC_SAMPLEUS 5
    DEFINE ADC_CLOCK 1
    
    DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
    DEFINE HSER_TXSTA 20h ' Enable transmit, BRGH = 0
    DEFINE HSER_BAUD 4800
    DEFINE HSER_CLROERR 1 ' Clear overflow automatically
    
    OPTION_REG.6 = 1            ' Interrupt rising edge
    OPTION_REG.7 = 0            ' Enable Pull-Up's
    
    PPS VAR PORTB.0
    Pbutton VAR PORTC.3
    
    ' Initialise ADC
    ADCON1 = %10000100 ' Set PORTA analog and RIGHT justify result
    ADCON0 = %01000001 ' Configure and turn on A/D Module channel 0 Fosc 8
    
    'Declare variables
    volt VAR WORD     ' scaled value real part
    voltd1 VAR WORD   ' scaled value first decimal place
    voltd2 VAR WORD   ' scaled value second decimal place
    
    'Allocate Variables for GPS: ####################
    TimeOut CON 2000            
                                                                
    hh VAR BYTE             'hours
    mm VAR BYTE             'minutes
    ss VAR BYTE             'seconds
    knots VAR WORD          'speed in knots (units)
    knotsten VAR BYTE       'speed in knots (tens)
    course VAR WORD         'heading
    latdeg VAR BYTE         'degrees latitude
    latmin VAR BYTE         'minutes latitude
    latsecs VAR WORD        'seconds latitude
    NS VAR BYTE             'north or south
    londeg VAR BYTE         'degrees longitude
    lonmin VAR BYTE         'minutes longitude
    lonsecs VAR WORD        'seconds longtitude
    EW VAR BYTE             'east or west
    d VAR BYTE              'day
    m VAR BYTE              'month
    y VAR BYTE              'year
    
    ;###################################################
    
    butt VAR BYTE           'pushbutton variable
    marker VAR BYTE         'toggle marker
    marker2 VAR BYTE        'UTC or BST
    
    MH     VAR BYTE[10]     'locator variables##########
                                                       ;
    Idx       VAR BYTE                                 ;
    AddChar   VAR BYTE                                 ;
    Divisor   VAR BYTE[4]                              ;
    AARG_SAVE VAR BYTE[4]   '----------------###########
    
    nPos  var byte          ' digit variables
    nDig  var byte          '--------------------
    
    Idx2 VAR BYTE           ' Month variables
    X VAR BYTE                                  ;
    Char VAR WORD           '--------------------
    
    scroll VAR BYTE
    
    fix VAR BYTE            'GPS fix - Yes="A"  No="V"
    
    butt = 0                ;clear button variable
    marker = 0              ;set marker to zero for full info display at start
    marker2 = 0             ;set UTC
    PAUSE 50
    
    ;--------------------------------------------------------------------------
    
    ASM
    INT_LIST  macro    ; IntSource,        Label,  Type, ResetFlag?
            INT_Handler    INT_INT,        _Clock,      PBP,  yes
        endm
        INT_CREATE               ; Creates the interrupt processor
    ENDASM
    
    ;--------------------------------------------------------------------------  
    @   INT_ENABLE   INT_INT     ; enable external (INT) interrupts    
                             
    LCDOut $fe,$80,"    GPS Decoder     "   ; scrolling opening display
    LCDOut $FE,$c0," G8VLQ  March 2014  "
    Pause 2000
       for scroll = 1 to 20                 ' FOR..NEXT loop so message scrolls off the LCD to the left
                lcdout $fe,24               ' Scrolls display one position to the left
                pause 100                   ' Pause 150 ms
       next scroll                          ' do loop again till max count
                pause 1500                   ' Pause 1000ms       
                lcdout $fe,1                ' Clears LCD 
    
    ;------------------------------------------------
    
    Initialisation:    ;Leaving GPRMC as only sentence output     
    HSEROUT ["$PRWIILOG,GGA,V,,,",13,10]
    PAUSE 100            
    HSEROUT ["$PRWIILOG,GSA,V,,,",13,10]
    PAUSE 100
    HSEROUT ["$PRWIILOG,GSV,V,,,",13,10]
    PAUSE 100
    HSEROUT ["$PRWIILOG,ZCH,V,,,",13,10]
    PAUSE 100
                
    ;-------------------------------------------------            
                
    
    GPS: 'read GPS  #############################################################################################
    
    HSerIn Timeout,Clock,[wait("$GPRMC"),wait(","),DEC2 hh,DEC2 mm,DEC2 ss,wait(","),fix,wait(","),DEC2 _
    latdeg,DEC2 latmin,wait("."),DEC4 latsecs,wait(","),NS,wait(","),DEC3 londeg,DEC2 lonmin,wait("."),DEC4 lonsecs,_
    wait(","),EW,wait(","),knots,wait("."),DEC2 knotsten,wait(","),DEC3 course,wait(","),DEC2 d,DEC2 m,DEC2 y]
    
    IF marker = 1 THEN BigClock     ; keeps big clock running if value is 1
    IF marker2 = 1 THEN Plusone                                                                    
                        ;--------------------------------------------------------                                                         ;
    
    BUTTON Pbutton,0,100,0,butt,1,BigClockClear      ;button press to jump to fullscreen big clock
    
    GOSUB PLL         ;get the A/D value of pll control voltage
    GOSUB ShowMonth   ;show month as letters
    GOSUB Locator     ;maidenhead locator
    ;GOSUB BST
    GOSUB Clock       ;medium digit clock
    
    goto GPS          ; ##########################################################################################
    
    ;---------------------------------------------------------------
    ;         MAIDENHEAD CONVERSION   --  Darrel Taylor
    ;---------------------------------------------------------------
    Locator:
    ASM
    MOVE?CF32  macro C, F       ; put a Floating Point Constant in an FP variable
        MOVE?CW  (C & 0xFFFF), F
        MOVE?CW  (C >> 16), F + 2
      endm
    
    MOVE?FF32  macro Fin, Fout  ; Copy an FP var to another FP var
        MOVE?WW  Fin, Fout
        MOVE?WW  Fin + 2, Fout + 2
      endm
    ENDASM
    ;-------------------------------------------------------------------------------
    
    ;----[convert Longitude Sexagesimal to Decimal Degrees]-------------------------
    Aint = lonsecs : GOSUB ItoFA    ; decimal portion of Minutes
    Bint = 10000 : GOSUB ItoFB          ; divided by 100
    GOSUB fpdiv
    Bint = LonMin : GOSUB ItoFB       ; add whole portion of Minutes
    GOSUB fpadd
    Bint = 60 : GOSUB ItoFB           ; divide by 60
    GOSUB fpdiv
    Bint = LonDeg : GOSUB ItoFB       ; add degrees
    GOSUB fpadd
    IF EW = "W" THEN              ; if west of Prime Meridian
        @ MOVE?FF32 AARGB2, BARGB2    ; copy Float AARG to BARG
        Aint = 0    : GOSUB ItoFA     ; subtract from 0 to negate
        GOSUB fpsub
    ENDIF
    
    Bint = 180  : GOSUB ItoFB         ; add 180
    GOSUB fpadd
    
    ;----[Have Longitude in AARG as Float]------------------------------------------
    
    FOR Idx = 0 TO 8 STEP 2
        SELECT CASE Idx
          CASE 0 : AddChar = "A"
                   @ MOVE?CF32 0x83200000, _Divisor   ; 20
          CASE 2 : AddChar = "0"
                   @ MOVE?CF32 0x80000000, _Divisor   ; 2
          CASE 4 : AddChar = "a"
                   @ MOVE?CF32 0x7B2AAAAB, _Divisor   ; 0.0833333
          CASE 6 : AddChar = "0"
                   @ MOVE?CF32 0x78088889, _Divisor   ; 0.00833333
          CASE 8 : AddChar = "a"
                   @ MOVE?CF32 0x73360B61, _Divisor   ; 0.000347222
        END SELECT
        GOSUB MH_Digit
    NEXT Idx
    
    ;----[convert Latitude Sexagesimal to Decimal Degrees]--------------------------
    
    Aint = latsecs : GOSUB ItoFA    ; decimal portion of Minutes
    Bint = 10000 : GOSUB ItoFB          ; divided by 100
    GOSUB fpdiv
    Bint = LatMin : GOSUB ItoFB       ; add whole portion of Minutes
    GOSUB fpadd
    Bint = 60 : GOSUB ItoFB           ; divide by 60
    GOSUB fpdiv
    Bint = LatDeg : GOSUB ItoFB       ; add degrees
    GOSUB fpadd
    IF NS = "S" THEN              ; if south of equator
        @ MOVE?FF32 AARGB2, BARGB2    ; copy Float AARG to BARG
        Aint = 0    : GOSUB ItoFA     ; subtract from 0 to negate
        GOSUB fpsub
    ENDIF
    
    Bint = 90  : GOSUB ItoFB          ; add 90
    GOSUB fpadd
    
    ;----[Have Latitude  in AARG as Float]------------------------------------------
    
    FOR Idx = 1 TO 9 STEP 2
        SELECT CASE Idx
          CASE 1 : AddChar = "A"
                   @ MOVE?CF32 0x82200000, _Divisor   ; 10
          CASE 3 : AddChar = "0"
                   @ MOVE?CF32 0x7F000000, _Divisor   ; 1
          CASE 5 : AddChar = "a"
                   @ MOVE?CF32 0x7A2AAAAB, _Divisor   ; 0.0416666
          CASE 7 : AddChar = "0"
                   @ MOVE?CF32 0x770882F1, _Divisor   ; 0.00416666
          CASE 9 : AddChar = "a"
                   @ MOVE?CF32 0x723603EC, _Divisor   ; 0.000173583
        END SELECT
        GOSUB MH_Digit
    NEXT Idx
    ;----[Maidenhead conversion complete]-------------------------------------------
    
    RETURN
    
    ;----[Calculate one digit of the Maidenhead Locator]----------------------------
    
    MH_Digit:
        @ MOVE?FF32 _Divisor, BARGB2      ; put divisor in BARG
        GOSUB fpdiv                       ; do the divide
        @ MOVE?FF32 AARGB2, _AARG_SAVE    ; save AARG for modulus
    
        GOSUB FtoIA                       ; get integer
        MH(Idx) = Aint + AddChar          ; The Character
        Bint = Aint                       ; copy integer result to BARG
        GOSUB ItoFB                       ; convert it to float
        @ MOVE?FF32 _AARG_SAVE, AARGB2    ; restore previous AARG
        GOSUB fpsub                       ; subtract integer
    
        @ MOVE?FF32 _Divisor, BARGB2      ; multiply times original divisor
        GOSUB fpmul                       ; AARG now contains the remainder
    RETURN
    
    ;---------------------------------------------------------------------------
    ;         Month routine
    
    ShowMonth:
        LCDOut $fe,$80+9,DEC2 d," "
        GOSUB Month
        LCDOut " ","20",DEC2 y
        RETURN
    
    Month:
        Idx2 = (m - 1) * 3
        FOR X = Idx2 TO Idx2 + 2
            LOOKUP X,["JanFebMarAprMayJunJulAugSepOctNovDec"],Char
            LCDOUT Char
        NEXT X
    RETURN
    
    ;--------------------------------------------------------------------------
    ;                British Summer Time
    ;--------------------------------------------------------------------------
    
    BST:
     IF m = 3 AND d = 30 THEN Plusone
     IF m >= 03 and m <= 10 THEN Plusone 
    RETURN 
      
    Plusone:
      IF m = 10 and d = 26 then UTC
      IF m >=10 and m <3 then UTC
      hh = hh + 1
      IF hh = 25 THEN hh = 0
      marker2 = 1  
    RETURN  
      
    UTC:  
      marker2 = 0
    RETURN  
    
    ;--------------------------------------------------------------------------
    ;                PLL control voltage read result via Average routine
    ;--------------------------------------------------------------------------
    
    PLL:             ' Measure GPSDO PLL control voltage for TCXO  - Approx 1.65v for lock
    ADCON0.2 = 1     ' Start conversion
    NotDone:
    pause 1
    IF ADCON0.2 = 1 Then NotDone
    value =((ADRESH * 256)+(ADRESL))
    gosub Average
    ' Calculate Voltage to 2 decimal places
    volt = value * 5/1024
    voltd1 = ( value * 5//1024) * 10/1024
    voltd2 = ((value *5 //1024) * 10//1024) * 10/1024
    RETURN
    
    ;--------------------------------------------------------------------------
    
    lock:
    IF (volt=1) AND (voltd1 =6) AND (voltd2 =<9) THEN
    LCDOUT $FE,$C0+9,"Lock  "
    ENDIF
    RETURN 
    
    ;---------------------------------------------------------------------------
    
    ClockClear:             ;Returning from Big Digit Clock, need to clear screen
    
    LCDOut $FE, 1           ;Clear Screen
    marker = 0              ;set marker to full info display
    GOTO GPS
    
    ;--------------------------------------------------------------------------
    
    Clock:                   ;Display medium character time clock
    
    'Set up the digits (http://www.darreltaylor.com/files/CustChar.htm)
    LCDOUT  $FE,$40,$03,$03,$03,$03,$03,$03,$03,$03  ' Cust Char #0  
    LCDOUT  $FE,$48,$0E,$1F,$1B,$1B,$1B,$1B,$1B,$1B  ' Cust Char #1  
    LCDOUT  $FE,$50,$1F,$1F,$18,$18,$18,$18,$1F,$1F  ' Cust Char #2  
    LCDOUT  $FE,$58,$03,$03,$03,$03,$03,$03,$1F,$1F  ' Cust Char #3  
    LCDOUT  $FE,$60,$0E,$1F,$1B,$1B,$1B,$1B,$1F,$0E  ' Cust Char #4  
    LCDOUT  $FE,$68,$1B,$1B,$1B,$1B,$1B,$1B,$1F,$0E  ' Cust Char #5  
    LCDOUT  $FE,$70,$1F,$1F,$03,$03,$03,$03,$1F,$1F  ' Cust Char #6  
    LCDOUT  $FE,$78,$1E,$1F,$03,$03,$03,$03,$03,$03  ' Cust Char #7  
    					
    
        nDig=ss dig 0 : nPos=7 : gosub displaydigit      
        nDig=ss dig 1 : nPos=6 : gosub displaydigit      
          npos=5 : gosub colon                           
        ndig=mm dig 0 : npos=4 : gosub displaydigit      
        ndig=mm dig 1 : npos=3 : gosub displaydigit      
          npos=2 : gosub colon                           
        ndig=hh dig 0 : npos=1 : gosub displaydigit      
        ndig=hh dig 1 : npos=0 : gosub displaydigit      
        
    LCDOUT $FE,$C0+9,"False Data "            ;displays 
        
    IF fix = "A" THEN
    LCDOUT $FE,$C0+9,"Fix  ",#volt, ".", # voltd1,# voltd2,"v"            ;overwrites No Data
    GOSUB lock                                ;checks for pll lock if Fix valid
    ENDIF
        
    
    LCDOUT $fe,$94," G8VLQ  ",STR MH\10," " ;STR is 10 digit Maidenhead Locator
    LCDOut $fe,$d4,DEC2 latdeg,$DF,DEC2 latmin,"'",DEC latsecs DIG 3,DEC latsecs DIG 2,_
    NS,"  ",DEC2 londeg,$DF,DEC2 lonmin,"'",DEC lonsecs DIG 3,DEC lonsecs DIG 2,EW   
    ;$DF is degree symbol, some LCD displays have it in different location
    
    @ INT_RETURN 
    ;RETURN
    
    displaydigit:
    if ndig=0 then gosub zero
    if ndig=1 then gosub one
    if ndig=2 then gosub two
    if ndig=3 then gosub three
    if ndig=4 then gosub four
    if ndig=5 then gosub five
    if ndig=6 then gosub six
    if ndig=7 then gosub seven
    if ndig=8 then gosub eight
    if ndig=9 then gosub nine
    return
    
    Zero:
    	LCDOUT $FE,$80+nPos,1
    	LCDOUT $FE,$C0+nPos,5
    return
    
    One:
    	LCDOUT $FE,$80+nPos,0
    	LCDOUT $FE,$C0+nPos,0
    return
    
    Two:
    	LCDOUT $FE,$80+nPos,7
    	LCDOUT $FE,$C0+nPos,2
    return
    
    Three:
    	LCDOUT $FE,$80+nPos,6
    	LCDOUT $FE,$C0+nPos,3
    return
    
    Four:
    	LCDOUT $FE,$80+nPos,5
    	LCDOUT $FE,$C0+nPos,0
    return
    
    Five:
    	LCDOUT $FE,$80+nPos,2
    	LCDOUT $FE,$C0+nPos,3
    return
    
    Six:
    	LCDOUT $FE,$80+nPos,2
    	LCDOUT $FE,$C0+nPos,5
    return
    
    Seven:
    	LCDOUT $FE,$80+nPos,7
    	LCDOUT $FE,$C0+nPos,0
    return
    
    Eight:
    	LCDOUT $FE,$80+nPos,4
    	LCDOUT $FE,$C0+nPos,5
    return
    
    Nine:
    	LCDOUT $FE,$80+nPos,4
    	LCDOUT $FE,$C0+nPos,3
    return
    
    colon:
          lcdout $fe,$80+nPos,$A5   
          lcdout $FE,$C0+nPos,$A5   
    return
    
    ;---------------------------------------------------------------------------
    BigClockClear:
    
    LCDOut $FE, 1           ;Clear original full data screen
    marker = 1              ;set marker for fullscreen clock loop
    
    'Set up the digits (http://www.darreltaylor.com/files/CustChar.htm)
    'THICK DIGITS
    LCDOUT  $FE,$40,$07,$07,$07,$07,$07,$07,$07,$07  ' Cust Char #0  
    LCDOUT  $FE,$48,$1C,$1C,$1C,$1C,$1C,$1C,$1C,$1C  ' Cust Char #1  
    LCDOUT  $FE,$50,$0F,$1F,$1F,$1E,$1C,$1C,$1C,$1C  ' Cust Char #2 
    LCDOUT  $FE,$58,$1E,$1F,$1F,$0F,$07,$07,$07,$07  ' Cust Char #3  
    LCDOUT  $FE,$60,$1C,$1C,$1C,$1C,$1E,$1F,$1F,$0F  ' Cust Char #4  
    LCDOUT  $FE,$68,$07,$07,$07,$07,$0F,$1F,$1F,$1E  ' Cust Char #5  
    LCDOUT  $FE,$70,$1F,$1F,$1F,$00,$00,$00,$00,$00  ' Cust Char #6  
    LCDOUT  $FE,$78,$00,$00,$00,$00,$00,$1F,$1F,$1F  ' Cust Char #7 
    
    ;#############################################################################################
    
    GPS2:
    HSerIn Timeout,Clock,[wait("$GPRMC"),wait(","),DEC2 hh,DEC2 mm,DEC2 ss]
    
    ;############################################################################################## 
    
    BUTTON Pbutton,0,100,0,butt,1,ClockClear     ;button press to change back to full info display
                         
    BigClock:               ;Display Big Digit fullscreen clock 
    
        nDig=ss dig 0 : nPos=17 : gosub displaydigit1           
        nDig=ss dig 1 : nPos=14 : gosub displaydigit1           
                        npos=13 : gosub colon                    
        ndig=mm dig 0 : npos=10 : gosub displaydigit1           
        ndig=mm dig 1 : npos=7 : gosub displaydigit1            
                        npos=6 : gosub colon1                    
        ndig=hh dig 0 : npos=3 : gosub displaydigit1              
        ndig=hh dig 1 : npos=0 : gosub displaydigit1   
        
                   
        
    GOTO GPS2       
    
    displaydigit1:
    if ndig=0 then gosub Zero1
    if ndig=1 then gosub One1
    if ndig=2 then gosub Two1
    if ndig=3 then gosub Three1
    if ndig=4 then gosub Four1
    if ndig=5 then gosub Five1
    if ndig=6 then gosub Six1
    if ndig=7 then gosub Seven1
    if ndig=8 then gosub Eight1
    if ndig=9 then gosub Nine1
    return
    
    Zero1:
        LCDOUT $FE,$80+nPos,2
        LCDOUT $FE,$81+nPos,3     ;note added 1 to position for right side of character
        LCDOUT $FE,$C0+nPos,1
        LCDOUT $FE,$C1+nPos,0     ;note added 1
        LCDOUT $FE,$94+nPos,1
        LCDOUT $FE,$95+nPos,0     ;note added 1
        LCDOUT $FE,$D4+nPos,4
        LCDOUT $FE,$D5+nPos,5	;note added 1
    return
    
    One1:
          LCDOUT $FE,$80+nPos," "
    	LCDOUT $FE,$81+nPos,0
    	LCDOUT $FE,$C0+nPos," "
    	LCDOUT $FE,$C1+nPos,0
    	LCDOUT $FE,$94+nPos," "
    	LCDOUT $FE,$95+nPos,0
    	LCDOUT $FE,$D4+nPos," "
    	LCDOUT $FE,$D5+nPos,0
    return
    
    Two1:
    	LCDOUT $FE,$80+nPos,6
    	LCDOUT $FE,$81+nPos,3
    	LCDOUT $FE,$C0+nPos,7
    	LCDOUT $FE,$C1+nPos,5
    	LCDOUT $FE,$94+nPos,1
    	LCDOUT $FE,$95+nPos," "
    	LCDOUT $FE,$D4+nPos,4
    	LCDOUT $FE,$D5+nPos,7
    return
    
    Three1:
          LCDOUT $FE,$80+nPos,6
    	LCDOUT $FE,$81+nPos,3
    	LCDOUT $FE,$C0+nPos,7
    	LCDOUT $FE,$C1+nPos,5
    	LCDOUT $FE,$94+nPos," "
    	LCDOUT $FE,$95+nPos,3
    	LCDOUT $FE,$D4+nPos,7
    	LCDOUT $FE,$D5+nPos,5
    return
    
    Four1:
          LCDOUT $FE,$80+nPos,1
    	LCDOUT $FE,$81+nPos," "
    	LCDOUT $FE,$C0+nPos,4
    	LCDOUT $FE,$C1+nPos,7
    	LCDOUT $FE,$94+nPos," "
    	LCDOUT $FE,$95+nPos,1
    	LCDOUT $FE,$D4+nPos," "
    	LCDOUT $FE,$D5+nPos,1
    return
    
    Five1:
    	LCDOUT $FE,$80+nPos,2
    	LCDOUT $FE,$81+nPos,6
    	LCDOUT $FE,$C0+nPos,1
    	LCDOUT $FE,$C1+nPos," "
    	LCDOUT $FE,$94+nPos,6
    	LCDOUT $FE,$95+nPos,3
    	LCDOUT $FE,$D4+nPos,7
    	LCDOUT $FE,$D5+nPos,5
    return
    
    Six1:
    	LCDOUT $FE,$80+nPos,2
    	LCDOUT $FE,$81+nPos,6
    	LCDOUT $FE,$C0+nPos,1
    	LCDOUT $FE,$C1+nPos," "
    	LCDOUT $FE,$94+nPos,2
    	LCDOUT $FE,$95+nPos,3
    	LCDOUT $FE,$D4+nPos,4
    	LCDOUT $FE,$D5+nPos,5
    return
    
    Seven1:
    	LCDOUT $FE,$80+nPos,6
    	LCDOUT $FE,$81+nPos,3
    	LCDOUT $FE,$C0+nPos," "
    	LCDOUT $FE,$C1+nPos,0
    	LCDOUT $FE,$94+nPos," "
    	LCDOUT $FE,$95+nPos,0
    	LCDOUT $FE,$D4+nPos," "
    	LCDOUT $FE,$D5+nPos,0
    return
    
    Eight1:
    	LCDOUT $FE,$80+nPos,2
    	LCDOUT $FE,$81+nPos,3
    	LCDOUT $FE,$C0+nPos,4
    	LCDOUT $FE,$C1+nPos,5
    	LCDOUT $FE,$94+nPos,2
    	LCDOUT $FE,$95+nPos,3
    	LCDOUT $FE,$D4+nPos,4
    	LCDOUT $FE,$D5+nPos,5
    return
    
    Nine1:
    	LCDOUT $FE,$80+nPos,2
    	LCDOUT $FE,$81+nPos,3
    	LCDOUT $FE,$C0+nPos,4
    	LCDOUT $FE,$C1+nPos,5
    	LCDOUT $FE,$94+nPos," "
    	LCDOUT $FE,$95+nPos,0
    	LCDOUT $FE,$D4+nPos,7
    	LCDOUT $FE,$D5+nPos,5
    return
    
    colon1:      
          lcdout $fe,$C0+nPos,$A5   
          lcdout $FE,$94+nPos,$A5  
    return
    Last edited by tasmod; - 28th April 2014 at 13:07.
    Rob.

    The moment after you press "Post" is the moment you actually see the typso

Similar Threads

  1. LAT replaces PORT command?
    By markscotford in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 3rd December 2011, 16:37
  2. Need Info for PBP?
    By azmax100 in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 30th January 2009, 07:44
  3. Replies: 1
    Last Post: - 27th July 2008, 06:14
  4. dmx info.
    By oscar in forum mel PIC BASIC Pro
    Replies: 0
    Last Post: - 8th May 2005, 11:54

Members who have read this thread : 1

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts