Select Variable Digit

Status
Not open for further replies.

tom_pay

Member
Hi Everyone,

I have a decimal variable, and I want to select one of the digits, then the next and so fourth. How do I do this?

Say the value of the variable is 243, I would like to get a 2, a 4 and a 3.

I am using the C programming language on a PIC 16F684.

It has really got me stumped.

Thanks

Tom
 
That's not so hard. First divide your number by 100 and ignore the remainder (easy to do in programming) - there's your 2. Subtract that 2*100 from the number. Then divide by 10 and ignore remainder - there's your 4. Subtract 4*10 and what's left is your 3.

I vaguely remember the first time I figured this out for myself. I puzzled over it for hours. Then it turned out to be pretty easy.

There are fancy, complicated algorithms to do it too, but my simple way works pretty well if you don't need big speed. You're likely doing it for a display, right? No speed needed there.
 
Last edited:
OK,

That is so simple.

It is for a 7 segment display, so the divisions wont be a problem.

Thanks so much.

Tom
 
A slightly different approach. Assuming your number is abc then,
Code:
    c=num%10;
    num/=10;
    b=num%10;
    a=num/10;

Mike.
 
Last edited:
Hi

I have tried both bits of code and they both work well.

#1
ones = number % 10;
number /= 10;
tens = number % 10;
hundreds = number / 10;

and

#2
hundreds = number / 100;
tens = (number - (hundreds * 100) ) / 10;
ones = number - (hundreds * 100 + tens * 10);

Whilst they both work fine I found some differences:

1st Code 2nd Code
Program Space 17.7% 16.9%
Data Space 20.3% 26.6%
Time to Execute 506.2µs 299µs

Since they are both quick enough for the purpose. I don't know which to use. This then poses a problem.

Which is more valuable, Program Space or Data Space?


Thanks


Tom
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…