Big characters on HD44780 4x20


Closed Thread
Results 1 to 24 of 24

Hybrid View

  1. #1
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Doh! i miss this line...

    But of course it's not what I want!
    So what do you want? smaller only ?
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  2. #2
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mister_e View Post
    Doh! i miss this line...



    So what do you want? smaller only ?
    Simply better! I'm working on it, in about 1 hour I will post the result!

  3. #3
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    Maybe not FAR BETTER but interesting...
    Code:
    Clr     CON 1
    Comm    Con $FE
    LINE1   con $80  ;2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Dx      con $14
    offset  var byte
    Begin:
            Pause 500       
            LCDOUT  $FE,$40,$1F,$1F,$1F,$1F,$1F,$1F,$1F,$1F  ' Cust Char #0  
            LCDOUT  $FE,$48,$1F,$1F,$1F,$1F,$00,$00,$00,$00  ' Cust Char #1  
            LCDOUT  $FE,$50,$00,$00,$00,$00,$1F,$1F,$1F,$1F  ' Cust Char #2  
            LCDOUT  $FE,$58,$00,$00,$00,$00,$00,$0E,$0E,$0E  ' Cust Char #3  
            LCDOUT  $FE,$60,$00,$00,$00,$00,$00,$1F,$1F,$1F  ' Cust Char #4  
            LCDOUT  $FE,$68,$1F,$1F,$1F,$00,$00,$00,$00,$00  ' Cust Char #5  
            LCDOUT  $FE,$70,$00,$01,$03,$07,$0F,$1F,$1F,$1F  ' Cust Char #6  
            LCDOUT  $FE,$78,$00,$00,$00,$00,$00,$00,$01,$03  ' Cust Char #7  
    Main:
            offset=0
            LCDOUT comm, clr
            lcdout comm, line1, "T", _
                   COMM, LINE2, "E", _
                   COMM, LINE3, "S", _
                   COMM, LINE4, "T"
            offset=2
            PAUSE 1000
            GOSUB NUMERO2
            PAUSE 1000
            GOSUB NUMERO1
            PAUSE 1000
            GOSUB NUMERO3
            PAUSE 2000
            GOTO MAIN
    
    Numero1:
            LCDOUT COMM,LINE1+offset,7,6,0,_
                   COMM,LINE2+offset+2,0,_
                   COMM,LINE3+offset+2,0,_
                   COMM,LINE4+offset+2,0 
    
            offset=offset+4
            RETURN
    
    Numero2:
            LCDOUT COMM,(LINE1+offset),1,1,1,0,_
                   COMM,(LINE2+offset),2,2,2,0,_
                   COMM,(LINE3+offset),0,1,1,1,_
                   COMM,(LINE4+offset),0,2,2,2                
            offset=offset+5
            RETURN
    
    Numero3:
            LCDOUT COMM,LINE1+offset,1,1,1,0,_
                   COMM,LINE2+offset+1, 4, 4, 0,_
                   COMM,LINE3+offset+1, 5, 5, 0,_
                   COMM,LINE4+offset,$02, $02, $02, $00
            offset=offset+5
            RETURN
    I'm still working on something...
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  4. #4
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    I think this is quite good:

    Code:
    DEFINE OSC 12
    define LCD_LINES 4
    
    Clr     CON 1
    Comm    Con $FE
    LINE1   con 2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Offset  VAR BYTE
    
    Begin:
            Pause 500       
      LCDOUT  254,64,31,31,31,31,0,0,0,0       ' Cust Char #0  
      LCDOUT  254,72,0,0,0,0,31,31,31,31       ' Cust Char #1  
      LCDOUT  254,80,31,31,31,15,7,3,1,0       ' Cust Char #2  
      LCDOUT  254,88,31,31,31,30,28,24,16,0    ' Cust Char #3  
      LCDOUT  254,96,0,16,24,28,30,31,31,31    ' Cust Char #4  
      LCDOUT  254,104,0,1,3,7,15,31,31,31      ' Cust Char #5
      LCDOUT  254,112,31,31,31,31,31,31,31,31  ' Cust Char #6   
      LCDOUT  254,120,0,0,0,14,31,31,31,14     ' Cust Char #7  
        
    Main:
            LCDOUT comm, clr
            lcdout comm, line1, "T", COMM, LINE2, "E", COMM, LINE3, "S", COMM, LINE4, "T"
            OFFSET=0
            gOSUB NUMERO0
            OFFSET=5
            GOSUB NUMERO1
            OFFSET=10
            GOSUB NUMERO2
            OFFSET=15
            GOSUB NUMERO3
            PAUSE 9000
            LCDOUT COMM, CLR
            OFFSET=0
            GOSUB NUMERO4
            OFFSET=5
            GOSUB NUMERO5
            OFFSET=10
            GOSUB NUMERO6
            OFFSET=15
            GOSUB NUMERO7
            PAUSE 9000
            LCDOUT COMM, CLR
            OFFSET=0
            GOSUB NUMERO8
            OFFSET=5
            GOSUB NUMERO9
            OFFSET=5
            GOSUB PUNTO
            OFFSET=10
            GOSUB NUMERO0
            PAUSE 9000
            GOTO MAIN       
               
    END
        
    Punto:
            LCDOUT Comm, ($D9 + OFFSET), $07
            return
    Numero0:
            LCDOUT COMM, ($81 + OFFSET), $05, $FF, $FF, $04
            LCDOUT COMM, ($C1 + OFFSET), $FF, COMM, ($C4 + OFFSET), $FF
            LCDOUT COMM, ($95 + OFFSET), $FF, COMM, ($98 + OFFSET), $FF
            LCDOUT COMM, ($D5 + OFFSET), $02, $FF, $FF, $03
            RETURN
    Numero1:
            lcdout comm, ($82 + OFFSET), $05, $FF
            lcdout comm, ($C3 + OFFSET), $FF
            lcdout comm, ($97 + OFFSET), $FF
            lcdout comm, ($D7 + OFFSET), $FF        
            RETURN
            
    Numero2:
            LCDOUT comm, ($81 + OFFSET), $00, $00, $00, $04
            LCDOUT comm, ($C4 + OFFSET), $FF
            LCDOUT comm, ($95 + OFFSET), $05, $00, $00, $00
            LCDOUT comm, ($D5 + OFFSET), $FF, $01, $01, $01
            RETURN
    Numero3:
            LCDOUT comm, ($81 + OFFSET), $00, $00, $00, $04
            LCDOUT comm, ($C2 + OFFSET), $01, $01, $FF
            LCDOUT comm, ($96 + OFFSET), $00, $00, $FF
            LCDOUT comm, ($D5 + OFFSET), $01, $01, $01, $03
            RETURN 
    
    Numero4:
            lcdout comm, ($81 + OFFSET), $FF
            lcdout COMM, ($C1 + OFFSET), $FF, COMM, ($C4 + OFFSET), $FF
            lcdout COmm, ($95 + OFFSET), $00, $00, $00, $FF
            lcdout comm, ($D8 + OFFSET), $FF
            return      
    Numero5:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $00
            LCDOUT COMM, ($C1 + OFFSET), $FF
            LCDOUT COMM, ($95 + OFFSET), $00, $00, $00, $04
            LCDOUT COMM, ($D5 + OFFSET), $01, $01, $01, $03
            RETURN    
    Numero6:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00
            LCDOUT COMM, ($C1 + OFFSET), $FF
            LCDOUT COMM, ($95 + OFFSET), $FF, $00, $00, $04
            LCDOUT COMM, ($D5 + OFFSET), $02, $01, $01, $03
            RETURN
    Numero7:
            LCDOUT COMM, ($81 + OFFSET), $00, $00, $00, $FF
            LCDOUT COMM, ($C3 + OFFSET), $01, $FF
            LCDOUT COMM, ($97 + OFFSET), $00, $FF
            LCDOUT COMM, ($D8 + OFFSET), $FF
            RETURN
    Numero8:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $04
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $03
            LCDOUT COMM, ($95 + OFFSET), $05, $00, $00, $04
            LCDOUT COMM, ($D5 + OFFSET), $02, $01, $01, $03
            RETURN       
    Numero9:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $04
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $FF
            LCDOUT COMM, ($98 + OFFSET), $FF
            LCDOUT COMM, ($D6 + OFFSET), $01, $01, $03
            RETURN
    It's "only" 1002 words and about 900 words w/o the little "show" in Main.

  5. #5
    skimask's Avatar
    skimask Guest


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by erpalma View Post
    I think this is quite good:

    Code:
    DEFINE OSC 12
    define LCD_LINES 4
    
    Clr     CON 1
    Comm    Con $FE
    LINE1   con 2
    LINE2   con $c0
    LINE3   con $94
    LINE4   con $d4
    Offset  VAR BYTE
    
    Begin:
            Pause 500       
      LCDOUT  254,64,31,31,31,31,0,0,0,0       ' Cust Char #0  
      LCDOUT  254,72,0,0,0,0,31,31,31,31       ' Cust Char #1  
      LCDOUT  254,80,31,31,31,15,7,3,1,0       ' Cust Char #2  
      LCDOUT  254,88,31,31,31,30,28,24,16,0    ' Cust Char #3  
      LCDOUT  254,96,0,16,24,28,30,31,31,31    ' Cust Char #4  
      LCDOUT  254,104,0,1,3,7,15,31,31,31      ' Cust Char #5
      LCDOUT  254,112,31,31,31,31,31,31,31,31  ' Cust Char #6   
      LCDOUT  254,120,0,0,0,14,31,31,31,14     ' Cust Char #7  
        
    Main:
            LCDOUT comm, clr
            lcdout comm, line1, "T", COMM, LINE2, "E", COMM, LINE3, "S", COMM, LINE4, "T"
            OFFSET=0 : gOSUB NUMERO0
            OFFSET=5 : GOSUB NUMERO1
            OFFSET=10 : GOSUB NUMERO2
            OFFSET=15 : GOSUB NUMERO3
            PAUSE 9000 : LCDOUT COMM, CLR
            OFFSET=0 : GOSUB NUMERO4
            OFFSET=5 : GOSUB NUMERO5
            OFFSET=10 : GOSUB NUMERO6
            OFFSET=15 : GOSUB NUMERO7
            PAUSE 9000 : LCDOUT COMM, CLR
            OFFSET=0 : GOSUB NUMERO8
            OFFSET=5 : GOSUB NUMERO9
            OFFSET=5 : GOSUB PUNTO
            OFFSET=10 : GOSUB NUMERO0
            PAUSE 9000 : GOTO MAIN       
               
    END
        
    Punto:
            LCDOUT Comm, ($D9 + OFFSET), $07 : return
    Numero0:
            LCDOUT COMM, ($81 + OFFSET), $05, $FF, $FF, $04
            GOSUB COMBO1
            LCDOUT COMM, ($95 + OFFSET), $FF, COMM, ($98 + OFFSET), $FF
            LCDOUT COMM, ($D5 + OFFSET), $02, $FF, $FF, $03
            RETURN
    Numero1:
            lcdout comm, ($82 + OFFSET), $05, $FF
            lcdout comm, ($C3 + OFFSET), $FF
            lcdout comm, ($97 + OFFSET), $FF
            lcdout comm, ($D7 + OFFSET), $FF        
            RETURN
    Numero2:
            GOSUB COMBO2
            LCDOUT comm, ($C4 + OFFSET), $FF
            LCDOUT comm, ($95 + OFFSET), $05, $00, $00, $00
            LCDOUT comm, ($D5 + OFFSET), $FF, $01, $01, $01
            RETURN
    Numero3:
            GOSUB COMBO2
            LCDOUT comm, ($C2 + OFFSET), $01, $01, $FF
            LCDOUT comm, ($96 + OFFSET), $00, $00, $FF
            GOSUB COMBO3
            RETURN 
    Numero4:
            lcdout comm, ($81 + OFFSET), $FF
            GOSUB COMBO1
            GOSUB COMBO4
            GOSUB COMBO5
            return      
    Numero5:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $00
            GOSUB COMBO6
            GOSUB COMBO4
            GOSUB COMBO3
            RETURN    
    Numero6:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00
            GOSUB COMBO6
            LCDOUT COMM, ($95 + OFFSET), $FF, $00, $00, $04
            GOSUB COMBO7
            RETURN
    Numero7:
            GOSUB COMBO2
            LCDOUT COMM, ($C3 + OFFSET), $01, $FF
            LCDOUT COMM, ($97 + OFFSET), $00, $FF
            GOSUB COMBO5
            RETURN
    Numero8:
            GOSUB COMBO8
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $03
            LCDOUT COMM, ($95 + OFFSET), $05, $00, $00, $04
            GOSUB COMBO7
            RETURN       
    Numero9:
            GOSUB COMBO8
            LCDOUT COMM, ($C1 + OFFSET), $02, $01, $01, $FF
            GOSUB COMBO5
            LCDOUT COMM, ($D6 + OFFSET), $01, $01, $03
            RETURN
    COMBO1:
            LCDOUT COMM, ($C1 + OFFSET), $FF, COMM, ($C4 + OFFSET), $FF
            RETURN
    COMBO2:
            LCDOUT comm, ($81 + OFFSET), $00, $00, $00, $04
            RETURN
    COMBO3:
            LCDOUT comm, ($D5 + OFFSET), $01, $01, $01, $03
            RETURN
    COMBO4:
            LCDOUT comm, ($95 + OFFSET), $00, $00, $00, $FF
            RETURN
    COMBO5:
            LCDOUT comm, ($D8 + OFFSET), $FF
            RETURN
    COMBO6:
            LCDOUT COMM, ($C1 + OFFSET), $FF
            RETURN
    COMBO7:
            LCDOUT COMM, ($D5 + OFFSET), $02, $01, $01, $03
            RETURN
    COMBO8:
            LCDOUT COMM, ($81 + OFFSET), $05, $00, $00, $04
            RETURN
    It's "only" 1002 words and about 900 words w/o the little "show" in Main.
    I combined a few of your lcdout statement into gosub's. See how much (if any) code space that saves/uses.

  6. #6
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    It's really bad the poor 16F84A don't support some interesting MPASM feature. Well i admit that i discovered this totally at the end... anyways, here's something 532 Bytes working on a 16F877
    Code:
    DEFINE LOADER_USED 1
    Define OSC 4
    DEFINE LCD_DREG PORTD     ' LCD data port 
    DEFINE LCD_DBIT 4         ' LCD data starting bit 0 or 4 
    DEFINE LCD_RSREG PORTD    ' LCD register select port 
    DEFINE LCD_RSBIT 2        ' LCD register select bit 
    DEFINE LCD_EREG PORTD     ' LCD enable port 
    DEFINE LCD_EBIT 3         ' LCD enable bit 
    DEFINE LCD_BITS 4         ' LCD bus size 4 or 8 
    DEFINE LCD_LINES 4        ' Number lines on LCD 
    DEFINE LCD_COMMANDUS 2000 ' Command delay time in us 
    DEFINE LCD_DATAUS 50      ' Data delay time in us 
    
    goto VariableDefinition
    asm
    Comm=0xFE
    EOL=0xFF
    Dx=0x14
    
    CustChar 
            dt  Comm,0x40,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F,0x1F  ; Cust Char #0  
            dt  Comm,0x48,0x1F,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00  ; Cust Char #1  
            dt  Comm,0x50,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F,0x1F  ; Cust Char #2  
            dt  Comm,0x58,0x00,0x00,0x00,0x00,0x00,0x0E,0x0E,0x0E  ; Cust Char #3  
            dt  Comm,0x60,0x00,0x00,0x00,0x00,0x00,0x1F,0x1F,0x1F  ; Cust Char #4  
            dt  Comm,0x68,0x1F,0x1F,0x1F,0x00,0x00,0x00,0x00,0x00  ; Cust Char #5  
            dt  Comm,0x70,0x00,0x01,0x03,0x07,0x0F,0x1F,0x1F,0x1F  ; Cust Char #6  
            dt  Comm,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x03  ; Cust Char #7  
            dt  EOL ; end of Custom character
    
    One     dt 7,6,0,EOL
            dt Comm,Dx,Comm,Dx,0,EOL
            dt Comm,Dx,Comm,Dx,0,EOL
            dt Comm,Dx,Comm,Dx,0,EOL
            dt 4
    
    Two     dt 1,1,1,0,EOL
            dt 2,2,2,0,EOL
            dt 0,1,1,1,EOL
            dt 0,2,2,2,EOL
            dt 5
          
    Three   dt 1,1,1,0,EOL
            dt Comm,Dx,4,4,0,EOL
            dt Comm,Dx,5,5,0,EOL
            dt 2,2,2,0,EOL
            dt 5        
    endasm
    
    VariableDefinition:
        CustChar    con EXT
        One         con EXT
        Two         con EXT
        Three       con EXT
    
        Clr         CON 1
        Comm        Con EXT
        EOL         con EXT
        Dx          con EXT
        Line        var byte[4]
            line[0]=$80
            line[1]=$C0
            line[2]=$94
            line[3]=$D4
        
        offset      var byte
        index       var byte
        Char        var byte
        ActualLine  var byte
        Addr        var word
           
        Number      var byte
        Pattern     var word[10]
            pattern[1]=one
            Pattern[2]=two
            pattern[3]=three
    
        pause 500
    DumpCustChar:
        addr=0
        char=0
        repeat
            lcdout char
            reaDCODE custchar+addr,char
            addr=addr+1
            until char=eol
    
    Main:  
        offset=0
        LCDOUT comm, clr
        pause 500
        lcdout comm, line[0], "T", _
               COMM, LINE[1], "E", _
               COMM, LINE[2], "S", _
               COMM, LINE[3], "T"
        offset=2
        pause 500
        number=3 : gosub displaynumber
        pause 500
        number=1 : gosub displaynumber
        pause 500
        number=2 : gosub displaynumber
        pause 500
        number=1 : gosub displaynumber
        pause 500
        GOTO MAIN
    
    DisplayNumber:
        actualline=0
        index=0
        lcdout comm,line[actualline]+offset
        Loop:
            readcode pattern[number]+index,char
            if char!=eol then 
                if actualline<4 then
                    lcdout char
                    else
                        offset=offset+char
                        Goto GetOut
                    endif
                else
                    actualline=actualline+1
                    if actualline<4 then lcdout comm,line[actualline]+offset
                endif
            index=index+1
            goto loop
        GetOut:
            RETURN
    I'll try your own... and see how much i could Shrink it to do the same thing. Forgive me, i won't try with a 16F84A
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  7. #7
    Join Date
    Sep 2004
    Location
    montreal, canada
    Posts
    6,898


    Did you find this post helpful? Yes | No

    Default

    OK, a 0000-9999 up-counter, 746 Word on a 16F877A
    Code:
    DEFINE LOADER_USED 1
    Define OSC 4
    DEFINE LCD_DREG PORTD     ' LCD data port 
    DEFINE LCD_DBIT 4         ' LCD data starting bit 0 or 4 
    DEFINE LCD_RSREG PORTD    ' LCD register select port 
    DEFINE LCD_RSBIT 2        ' LCD register select bit 
    DEFINE LCD_EREG PORTD     ' LCD enable port 
    DEFINE LCD_EBIT 3         ' LCD enable bit 
    DEFINE LCD_BITS 4         ' LCD bus size 4 or 8 
    DEFINE LCD_LINES 4        ' Number lines on LCD 
    DEFINE LCD_COMMANDUS 2000 ' Command delay time in us 
    DEFINE LCD_DATAUS 50      ' Data delay time in us 
    
    goto VariableDefinition
    asm
    Comm=0xFE
    EOL=0xFC
    Dx=0x14
    
    CustChar 
            dt Comm,64,31,31,31,31,0,0,0,0      ; Cust Char #0  
            dt Comm,72,0,0,0,0,31,31,31,31      ; Cust Char #1  
            dt Comm,80,31,31,31,15,7,3,1,0      ; Cust Char #2  
            dt Comm,88,31,31,31,30,28,24,16,0   ; Cust Char #3  
            dt Comm,96,0,16,24,28,30,31,31,31   ; Cust Char #4  
            dt Comm,104,0,1,3,7,15,31,31,31     ; Cust Char #5  
            dt Comm,112,31,31,31,31,31,31,31,31 ; Cust Char #6  
            dt Comm,120,0,0,0,14,31,31,31,14    ; Cust Char #7  
            dt EOL ; end of Custom character
    
    Zero    dt 5,0xFF,0xFF,4,EOL
            dt 0xFF,Comm,Dx,Comm,Dx,0xFF,EOL
            dt 0XFF,Comm,Dx,Comm,Dx,0xFF,EOL
            dt 2,0xff,0xff,3,EOL
            dt 5
    
    One     dt Comm,Dx,5,0xff,EOL
            dt Comm,Dx,Comm,Dx,0xff,EOL
            dt Comm,Dx,Comm,Dx,0xff,EOL
            dt Comm,Dx,Comm,Dx,0xff,EOL
            dt 5;3
    
    Two     dt 0,0,0,4,EOL
            dt Comm,Dx,Comm,Dx,Comm,Dx,0xff,EOL
            dt 5,0,0,0,EOL
            dt 0xff,1,1,1,EOL
            dt 5
          
    Three   dt 0,0,0,4,EOL
            dt Comm,Dx,1,1,0xff,EOL
            dt Comm,Dx,0,0,0xff,EOL
            dt 1,1,1,3,EOL
            dt 5    
    
    Four    dt 0xff,EOL
            dt 0xff,Comm,Dx,Comm,Dx,0xff,EOL
            dt 0,0,0,0xff,EOL
            dt Comm,Dx,Comm,Dx,Comm,Dx,0xff,EOL
            dt 5    
    
    Five    dt 5,0,0,0,EOL
            dt 0xff,EOL
            dt 0,0,0,4,EOL
            dt 1,1,1,3,EOL
            dt 5    
    
    Six     dt Comm,Dx,5,0,0,EOL
            dt 0xff,EOL
            dt 0xff,0,0,4,EOL
            dt 2,1,1,3,EOL
            dt 5    
    
    Seven   dt 0,0,0,0xff,EOL
            dt Comm,Dx,Comm,Dx,1,0xff,EOL
            dt Comm,Dx,Comm,Dx,0,0xff,EOL
            dt Comm,Dx,Comm,Dx,Comm,Dx,0xff,EOL
            dt 5    
            
    Eight   dt 5,0,0,4,EOL
            dt 2,1,1,3,EOL
            dt 5,0,0,4,EOL
            dt 2,1,1,3,EOL
            dt 5
    
    Nine    dt 5,0,0,4,EOL
            dt 2,1,1,0xff,EOL
            dt Comm,Dx, Comm,Dx,Comm,Dx,0xff,EOL
            dt Comm,Dx,1,1,3,EOL
            dt 5
                    
    Punto   dt EOL
            dt EOL
            dt EOL
            dt 7,EOL
            dt 2
    endasm
    VariableDefinition:
        CustChar    con EXT
        Zero        con EXT
        One         con EXT
        Two         con EXT
        Three       con EXT
        Four        CON EXT
        Five        CON EXT
        Six         CON EXT
        Seven       CON EXT
        Eight       CON EXT
        Nine        CON EXT
        Punto       CON EXT
                
        Clr         CON 1
        Comm        Con EXT
        EOL         con EXT
        Dx          con EXT
        Line        var byte[4]
            line[0]=$80
            line[1]=$C0
            line[2]=$94
            line[3]=$D4
        
        offset      var byte
        index       var byte
        Char        var byte
        ActualLine  var byte
        Addr        var word
        CounterA    var word       
        CounterB    var byte
        Number      var byte
        Pattern     var word[11]
            pattern[0]=zero
            pattern[1]=one
            Pattern[2]=two
            pattern[3]=three
            pattern[4]=four
            Pattern[5]=Five
            Pattern[6]=Six
            Pattern[7]=Seven
            pattern[8]=eight
            pattern[9]=Nine
            pattern[10]=Punto
            
        pause 500
    DumpCustChar:
        addr=0
        char=0
        repeat
            lcdout char
            reaDCODE custchar+addr,char
            addr=addr+1
            until char=eol
    
    Main:  
        countera=0
        repeat
            offset=0
            lcdout comm,clr
            counterb=3
            repeat
                number=countera dig counterb
                gosub displaynumber
                counterb=counterb-1
                until counterb=255
            pause 10
            countera=countera+1
            until countera>9999
            goto main
    
    DisplayNumber:
        actualline=0
        index=0
        lcdout comm,line[actualline]+offset
        Loop:
            readcode pattern[number]+index,char
            if char!=eol then 
                if actualline<4 then
                    lcdout char
                    else
                        offset=offset+char
                        Goto GetOut
                    endif
                else
                    actualline=actualline+1
                    if actualline<4 then lcdout comm,line[actualline]+offset
                endif
            index=index+1
            goto loop
        GetOut:
            RETURN
    Last edited by mister_e; - 4th January 2007 at 00:41.
    Steve

    It's not a bug, it's a random feature.
    There's no problem, only learning opportunities.

  8. #8
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by mister_e View Post
    It's really bad the poor 16F84A don't support some interesting MPASM feature. Well i admit that i discovered this totally at the end... anyways, here's something 532 Bytes working on a 16F877

    I'll try your own... and see how much i could Shrink it to do the same thing. Forgive me, i won't try with a 16F84A
    Your code is wonderful! Now I'm going to understand it! This is one of my first programs with pics! I have so much to learn! Assembly for example is still far away from me! And I need to experiment all the features of picbasic! I'd like to learn something more about eeprom code storage (not in 16f84a )!

  9. #9
    Join Date
    Jan 2007
    Posts
    13


    Did you find this post helpful? Yes | No

    Default

    Quote Originally Posted by skimask View Post
    I combined a few of your lcdout statement into gosub's. See how much (if any) code space that saves/uses.
    Your code is 1162 words instead of 1324 on 16F648A.
    Last edited by erpalma; - 4th January 2007 at 11:28.

Similar Threads

  1. Only the first 8 characters.
    By timseven in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 22nd September 2009, 01:43
  2. Big big big memory or tiny SDs!
    By Ron Marcus in forum Off Topic
    Replies: 9
    Last Post: - 25th May 2007, 18:02
  3. Led scrolling display: How to mirror characters?
    By mahia2005 in forum mel PIC BASIC Pro
    Replies: 3
    Last Post: - 11th May 2007, 03:25
  4. LCD 16 characters inline: only first 8 work
    By Mugel in forum mel PIC BASIC Pro
    Replies: 5
    Last Post: - 20th October 2006, 22:07
  5. LCD 4x20 HD44780
    By inteco in forum mel PIC BASIC
    Replies: 13
    Last Post: - 27th June 2006, 16:52

Members who have read this thread : 0

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