PDA

View Full Version : Can we suppress leading zero's in LCDOUT?



PICn-It
- 16th December 2009, 00:06
I'm trying to print a value in a BYTE sized VAR to a specific place on the LCD.
(a standard 16x2, and using DT's Anypin.php)

I need to get the number right-justified and w/o leading zero's.

I currently have a 0-255 number comming from the ADC on AN0.

(later I will need to do some math and expand the the result to Xnum-per-mV)

I'm currently doing something like this:


MYNUMBER VAR BYTE
MYNUMBER = 0
...
ADCIN 0, MYNUMBER
...
LCDOUT $FE, $83, DEC MYNUMBER

and it prints out "127 " instead of " 127" on the LCD.

My number needs to be printed before (in front of) some text that remains on the LCD during these numeric updates, like " 127-Dingles".

I tried DEC5 and get the digits in the right place but they have leading zero's (instead of spaces)

Is there a way to format my number right-justified and suppress the leading zero's?

Dennis
- 16th December 2009, 02:24
Hi there
Just thought this may help you a little more...


http://www.emesystems.com/BS2math4.htm

Good luck :-)

Dennis

Archangel
- 16th December 2009, 05:51
Hi PICn-It,
From your code:

LCDOUT $FE, $83, DEC MYNUMBER
make it so
LCDOUT $FE, $83, DEC MYNUMBER,"-Dingles"

EDIT: I see what you are doing now, have not tried this but . . .
LCDOUT $FE, $80, DEC MYNUMBER, $84,"Dingles"
DEC automaticaly supresses leading zeros unless followed by a number

sayzer
- 16th December 2009, 08:08
I'm trying to print a value in a BYTE sized VAR to a specific place on the LCD.
(a standard 16x2, and using DT's Anypin.php)

I need to get the number right-justified and w/o leading zero's.

I currently have a 0-255 number comming from the ADC on AN0.

(later I will need to do some math and expand the the result to Xnum-per-mV)

I'm currently doing something like this:


MYNUMBER VAR BYTE
MYNUMBER = 0
...
ADCIN 0, MYNUMBER
...
LCDOUT $FE, $83, DEC MYNUMBER

and it prints out "127 " instead of " 127" on the LCD.

My number needs to be printed before (in front of) some text that remains on the LCD during these numeric updates, like " 127-Dingles".

I tried DEC5 and get the digits in the right place but they have leading zero's (instead of spaces)

Is there a way to format my number right-justified and suppress the leading zero's?


At my best guess, this is what you are asking.

You need the print always to the right.


<font color="#000000">MYNUMBER <font color="#000080"><b>VAR BYTE
</b></font>MYNUMBER = <font color="#FF0000">0

</font><font color="#000080"><b>ADCIN </b></font><font color="#FF0000">0</font>, MYNUMBER


<font color="#000080"><b>LCDOUT </b></font><font color="#FF0000">$FE</font>, <font color="#FF0000">$83


</font><font color="#000080"><b>IF </b></font>MYNUMBER &gt; <font color="#FF0000">99 </font><font color="#000080"><b>THEN
LCDOUT DEC3 </b></font>MYNUMBER <font color="#000080"><i>' three digits + &quot;-Dingles&quot;

</i><b>ELSE
IF </b></font>MYNUMBER &gt; <font color="#FF0000">9 </font><font color="#000080"><b>THEN </b><i>' one space + two digits + &quot;-Dingles&quot;
</i><b>LCDOUT </b></font><font color="#008000">&quot; &quot;</font>, MYNUMBER

<font color="#000080"><b>ELSE
LCDOUT </b></font><font color="#008000">&quot; &quot;</font>,<font color="#000080"><b>DEC1 </b></font>MYNUMBER <font color="#000080"><i>' two spaces + one digit + &quot;-Dingles&quot;

</i><b>ENDIF
ENDIF

LCDOUT </b></font><font color="#008000">&quot;-Dingles&quot;






</font>

PICn-It
- 16th December 2009, 15:38
At my best guess, this is what you are asking.

You need the print always to the right.


<font color="#000000">MYNUMBER <font color="#000080"><b>VAR BYTE
</b></font>MYNUMBER = <font color="#FF0000">0

</font><font color="#000080"><b>ADCIN </b></font><font color="#FF0000">0</font>, MYNUMBER


<font color="#000080"><b>LCDOUT </b></font><font color="#FF0000">$FE</font>, <font color="#FF0000">$83


</font><font color="#000080"><b>IF </b></font>MYNUMBER &gt; <font color="#FF0000">99 </font><font color="#000080"><b>THEN
LCDOUT DEC3 </b></font>MYNUMBER <font color="#000080"><i>' three digits + &quot;-Dingles&quot;

</i><b>ELSE
IF </b></font>MYNUMBER &gt; <font color="#FF0000">9 </font><font color="#000080"><b>THEN </b><i>' one space + two digits + &quot;-Dingles&quot;
</i><b>LCDOUT </b></font><font color="#008000">&quot; &quot;</font>, MYNUMBER

<font color="#000080"><b>ELSE
LCDOUT </b></font><font color="#008000">&quot; &quot;</font>,<font color="#000080"><b>DEC1 </b></font>MYNUMBER <font color="#000080"><i>' two spaces + one digit + &quot;-Dingles&quot;

</i><b>ENDIF
ENDIF

LCDOUT </b></font><font color="#008000">&quot;-Dingles&quot;






</font>

Ahh, I see. I was hoping there would be some compiler directive/keyword/function-switch to use in PBP, something like printf in C but this is fine, whatever works ...right?.

Since I need a posible 5-digit number perhaps turning the IF/THEN into a CASE statement would work here? something like this:


MYNUMBER VAR BYTE
MYNUMBER = 0
...
ADCIN 0, MYNUMBER
...
...
SELECT CASE MYNUMBER

CASE IS > 9999
LCDOUT $FE, $83, DEC5 MYNUMBER ' 5 digits
CASE IS > 999
LCDOUT $FE, $83, " ", DEC4 MYNUMBER ' 1 space and 4 digits
CASE IS > 99
LCDOUT $FE, $83, " ", DEC3 MYNUMBER ' 2 spaces and 3 digits
CASE IS > 9
LCDOUT $FE, $83, " ", DEC2 MYNUMBER ' 3 spaces and 2 digits
CASE ELSE
LCDOUT $FE, $83, " ", DEC1 MYNUMBER ' 4 spaces and 1 digit
END SELECT

Thanks for response

sayzer
- 16th December 2009, 15:54
PICn-It,

MYNUMBER VAR BYTE


With that, you can get max. 255.

----------------------------------------------

PICn-It
- 16th December 2009, 16:09
PICn-It,

MYNUMBER VAR BYTE


With that, you can get max. 255.

----------------------------------------------

Yes, good catch.

In my code, currently I can't figure out how to steady up the 10-bit ADC reading, so I temporarily REM'd those lines:

ADC_BITS 10
MYNUMBER VAR WORD

and temporarily put in:

ADC_BITS 8
MYNUMBER VAR BYTE

while I work out the display screens and presentation. The CASE statement based on your IF/THEN code posted above seems to work great, thank you.