Determining variable length (number of digits) possible?


Closed Thread
Results 1 to 15 of 15

Hybrid View

  1. #1
    Join Date
    Nov 2005
    Location
    Bombay, India
    Posts
    969


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    What you're looking for is commonly known as leading zero blanking. You could continue with filling blanks to digits after the value is zero. That is how you will achieve it.

  2. #2
    Join Date
    Apr 2014
    Location
    OK
    Posts
    557


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    IF XVR > 999 THEN
    [Work the first digit]
    ENDIF ;If not, no action taken
    IF XVR > 99 THEN
    [Work the 2nd digit]
    ENDIF ;If not, no action taken

  3. #3
    Join Date
    Feb 2013
    Posts
    1,154


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    I'm doing a more featured custom decoder, which will display both letters and digits on max7219 7 segment display. It will also have custom decoder for digital values. The code is below:

    Code:
    FOURD=12345 'test value
    dstart=2 'start segment
    DLEN=2 'decode length
    
    TEST: 'test digits
    FOR x=DLEN TO 1 STEP -1
    Z=FOURD DIG X+1	'EXTRACT VALUE
    GOSUB FOURDEC
    PAUSE 500
    NEXT
    GOTO TEST
    
    FOURDEC:	'DIGIT DECODER
    if Z=0 then Y=126
    if Z=1 then Y=48
    if z=2 then Y=109
    if z=3 then Y=121
    if z=4 then Y=51
    if z=5 then Y=91
    if z=6 then Y=95
    if z=7 then Y=112
    if z=8 then Y=127
    if z=9 then Y=115
    low load
    shiftout datapin,clockpin,1,[x+DSTART-1, y]	'DISPLAY THE LETTER
    high load
    RETURN
    This code works, but DLEN instead of cropping digits from the left, crops them from the right - say initial variable is "12345" and I want to display 2 digits from it, I'm getting "45" instead of "12", have no idea why. Same for start position - DSTART starts from rightmost position, instead of leftmost....

  4. #4
    Join Date
    Feb 2013
    Posts
    1,154


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    FOURD=12345
    FOURD=FOURD>>2 should return FOURD=123, right? but it returns 11419 !

  5. #5
    Join Date
    Feb 2013
    Posts
    1,154


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    Forgot to mention, startup shift fixed:
    shiftout datapin,clockpin,1,[X-DLEN+DSTART, y]

  6. #6
    Join Date
    Apr 2014
    Location
    OK
    Posts
    557


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    Quote Originally Posted by CuriousOne View Post
    FOURD=12345
    FOURD=FOURD>>2 should return FOURD=123, right? but it returns 11419 !
    Not sure how that happened. First, you wouldn't get "123", as Right Shift 2 (>> 2) is the same as Divide by 4; in which case 12345 >> 2 = 3086 and not 11419.

    Since you're dealing with a display, you may have to treat each place holder as a unique byte (perhaps value + $30 to convert it to ASCii); "12345" would be saved as $31, $32, $33, $34, $35 in an array. You can then shift your pointer 2 places to look at 123 by itself (as 3 individual bytes, of course).

  7. #7
    Join Date
    Feb 2013
    Posts
    1,154


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    I've written a PC based converter, which deals with ASCII conversion. It generates PBP code for EEPROM.
    Name:  pic2.jpg
Views: 63147
Size:  99.7 KB
    Name:  pic1.jpg
Views: 63469
Size:  73.9 KB

  8. #8
    Join Date
    Feb 2013
    Posts
    1,154


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    So back to shift.
    How to trim one variable from left to right, to value of another variable?

    say trim 12345 by 3 - mean, make 123 digits from it.

  9. #9
    Join Date
    Oct 2005
    Location
    Sweden
    Posts
    3,623


    Did you find this post helpful? Yes | No

    Default Re: Determining variable length (number of digits) possible?

    12345 / 10 = 1234
    12345 / 100 = 123
    12345 / 1000 = 12
    12345 / 10000 = 1

    /Henrik.

Similar Threads

  1. Replies: 11
    Last Post: - 9th March 2020, 13:37
  2. Measuring a variable freq/length pulse and generating more pulses.
    By retepsnikrep in forum mel PIC BASIC Pro
    Replies: 10
    Last Post: - 18th September 2014, 10:10
  3. Determining how much RAM is available?
    By Art in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 20th February 2012, 17:04
  4. Determining LONG compiler
    By Charles Linquis in forum mel PIC BASIC Pro
    Replies: 2
    Last Post: - 10th September 2011, 20:19
  5. HSERIN for variable length string
    By Pic2008 in forum mel PIC BASIC Pro
    Replies: 1
    Last Post: - 19th February 2010, 06:58

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