Quote Originally Posted by mehmetOzdemir View Post
I TRIED YOUR INCLUDE FILE FOR PBPL AND MADE WHAT U SAID.

IT'S WORKING GOOD THANKS.

Code:
'****************************************************************
'*   Creates a variable sized BAR-graph anywhere on the screen  *
'****************************************************************
'*  Name    : LCDbar_INC.bas                                    *
'*  Author  : Darrel Taylor                                     *
'*  Notice  : Copyright (c) 2005                                *
'*  Date    : 9/8/2005                                          *
'*  Version : 1.0                                               *
'*  Notes   : Maximum Range is 32768                            *
'*          : Range must always be a Constant                   *
'*          : Value must always be a WORD variable              *
'*          :                                                   *
'****************************************************************
                                               ;                        default
BAR_width   VAR  BYTE : BAR_width = 16         ; Width of the BARgraph      16
BAR_range   VAR  LONG : BAR_range = 100        ; Range of Values (0-100)   100   ;;;;;;;;;;;
BAR_row     VAR  BYTE : BAR_row = 1            ; Row location (1-4)          1
BAR_col     VAR  BYTE : BAR_col = 0            ; Column location (0-15)      0
BAR_value   VAR  LONG : BAR_value = 0          ; Current BAR value           0   ;;;;;;;;;;;
BAR_style   VAR  BYTE : BAR_style = 1          ; 1=lines, 2=boxed, 3=blocks  1

; --- Temporary vars ----
BARtemp     VAR  LONG   ;;;;;;;;
Remainder   VAR  LONG   ;;;;;;;;
BARloop     VAR  BYTE
LastCharset VAR  BYTE : LastCharset = 0
Limit1      VAR  LONG   ;;;;;;;;

GOTO overBAR                                   ; Skip over Subroutines

ThreeBARS CON 0                                ; Identify the Custom Characters
TwoBARS   CON 1
OneBAR    CON 2

ASM
lines  = 0x10000001                            ; Define the Styles
boxed  = 0x10000002
blocks = 0x10000003
ENDASM

; --- lines Style custom chars ----
CharsetLines:
    LCDOut $FE,$40,REP $15\8                  ; Custom char 0 - 3 lines  |||
    LCDOut $FE,$48,REP $14\8                  ; Custom char 1 - 2 lines  ||
    LCDOut $FE,$50,REP $10\8                  ; Custom char 2 - 1 line   |
RETURN

; --- boxed Style custom chars ----
CharsetBoxed:
    LCDOut $FE,$40,$1F,REP $15\6,$1F          ; III
    LCDOut $FE,$48,$1C,REP $14\6,$1C          ; II
    LCDOut $FE,$50,REP $10\8                  ; I
RETURN

; --- blocks Style custom chars ----
CharsetBlocks:
    LCDOut $FE,$40,REP $1F\8
    LCDOut $FE,$48,REP $1C\8
    LCDOut $FE,$50,REP $10\8
RETURN

; ----- Show the BAR graph -----------------------------------------------------
ShowBAR:
    IF BAR_width = 0 then BARdone
    if LastCharset <> BAR_style then          ; If the Style has changed ?
        LastCharset = BAR_style
        SELECT CASE BAR_style                 ; Load the new custom chars
            CASE 1 : GOSUB CharsetLines
            CASE 2 : GOSUB CharsetBoxed
            CASE 3 : GOSUB CharsetBlocks
        END SELECT
    endif
    
@ ifdef LCD4X20    
    LOOKUP BAR_row,[$80,$80,$C0,$94,$D4],BARtemp
@ else
    LOOKUP BAR_row,[$80,$80,$C0,$90,$D0],BARtemp
@ endif    
    LCDOUT $FE, BARtemp + BAR_col             ; Move cursor to start of the BAR

;;;;;;;;BARtemp = BAR_value * BAR_width           ; calc the char position
;;;;;;;;BARtemp = DIV32 BAR_range
    
    BARtemp = (BAR_value * BAR_width)/BAR_range    ; CHANGED

    Remainder = R2

    For BARloop = 0 to BAR_width -1
        SELECT CASE BARtemp
            CASE IS > BARloop
                LCDOUT ThreeBARS              ; send 3 bars    |||
            CASE IS < BARloop
                LCDOUT " "                    ; clear to end of BARwidth
            CASE IS = BARloop

;;;;Limit1 = BAR_range * 6
;;;;Limit1 = DIV32 10
		
                Limit1 = (BAR_range * 6)/10   ; CHANGED

		if Remainder >= Limit1 then
                    LCDOUT TwoBARS            ; send 2 bars    ||
                else
;;;;Limit1 = BAR_range * 3
;;;;Limit1 = DIV32 10
		
		Limit1 = (BAR_range * 3)/10   ; CHANGED

                    if Remainder >= Limit1 then    ; 30%
                        LCDOUT OneBAR         ; send 1 bar     |
                    else
                        LCDOUT " "            ; no bars
                    endif                
                endif
        END SELECT
    NEXT BARloop
BARdone:
RETURN

ASM
; --- The main macro for creating BARgraphs ------------------------------------
BARgraph  macro  Value, Row, Col, Width, Range, Style
    MOVE?CW    Range, _BAR_range              ; Range MUST be a constant
    MOVE?WW    Value, _BAR_value              ; Value MUST be a WORD variable
    if (Row < 5)                              ; Row is a constant
        MOVE?CB    Row,   _BAR_row
    else                                      ; Row is a variable
        MOVE?BB    Row,   _BAR_row           
    endif
    if (Col < 16)                             ; Is Col a constant ?
        MOVE?CB    Col,   _BAR_col
    else                                      ; NO, it's a variable
        MOVE?BB    Col,   _BAR_col                                     
    endif
    if (Width <= 40)
        MOVE?CB    Width, _BAR_width
    else
        MOVE?BB    Width, _BAR_width
    endif
    if ((Style >= lines) & (Style <= blocks)) ; Is Style a valid constant ?
        MOVE?CB    Style, _BAR_style
    else                                      ; NO, treat it like a variable
        MOVE?BB    Style, _BAR_style
    endif
    L?CALL   _ShowBAR
    endm
    
ENDASM

overBAR:
but there is a problem ; when i want to use different bar type on lcd for different rows bar types are mixing.

example:

row1 blocks
row2 lines
row3 boxed
row4 blocks

when use it like this all rows are one type bar.
turkish mean
özdemir dostum bu program nasıl çalışıyor uygulama şemasını ekleye bilirmisin banada resimdeki 2 butonlu bargraph uygulaması lazım yukarıda resimleri ekledim bu programı 2 butonlu şekilde düzenleyebilirmiyiz. şimdiden teşekkürler bide ingilizce yazmaya çalışım ayıp olmasın

english mean ,maybe my errors, Im sorry
özdemir my friend,how is run this program can you attach application circuit I need on picture bargraph application with two buttons How I can make this project can you helpme already thanks