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.