PDA

View Full Version : For...Next loop Steps DEC questions



earltyso
- 3rd February 2008, 01:03
Anyone,
Can you create a decimal step for the FOR....NEXT LOOP?
How about a Variable step?

Ex:

D VAR BYTE
D = VALUE/10
FOR value = 0 to 12 STEP + D

or....
For value = 0 to 12 step + .1
I realize I am dealing with decimal values....can I use DEC3 command or somthing else to make this work?

thanks

Archangel
- 3rd February 2008, 05:37
Anyone,
Can you create a decimal step for the FOR....NEXT LOOP?
How about a Variable step?

Ex:

D VAR BYTE
D = VALUE/10
FOR value = 0 to 12 STEP + D

or....
For value = 0 to 12 step + .1
I realize I am dealing with decimal values....can I use DEC3 command or somthing else to make this work?

thanks
Variable step . . .


myVar Var byte ' up to 255 counts stored here
If PortA.0 = 1 then myVar=12

FOR value = 0 to myVar STEP + D

or something to that effect . . .

earltyso
- 3rd February 2008, 18:23
I thought I had better restate what I am trying to do.
I want to simulate an 8 bit input from A2D (referenced to Vpp +5V)
using a FOR....NEXT loop. I want to see 0.00 climb up to 5.00 VDC...... on my LCD

Can someone tell me why my code below does not work?

Y var word
Value var byte

FOR Value = 0 to 0 STEP 255
Y =(Value/255)*5 '8 bit resolution math
LCDOUT 254,row1+1,"BATTERY ",DEC Y,".",DEC2 Y, " VDC" 'decimal point 3 sig figs
pause 10
next Value

All I get on my screen is "BATTERY 0.00 VDC" and no change

thanks...

tenaja
- 3rd February 2008, 19:25
your For value = 0 to 0 will only go through once.

earltyso
- 3rd February 2008, 21:18
another try

--------------------------------------------------------------------------------
OK, so i screwed up my copy and paste, code still not working....
any ideas??

Y var word
Value var byte

FOR Value = 0 to 255
Y =(Value/255)*5 '8 bit resolution math
LCDOUT 254,row1+1,"BATTERY ",DEC Y,".",DEC2 Y, " VDC" 'decimal point 3 sig figs
pause 10
next Value

All I get on my screen is "BATTERY 0.00 VDC" and no change

thanks...

skimask
- 3rd February 2008, 21:29
Try this:



Y var word
Value var byte

FOR Value = 0 to 255
Y = ( Value * 51 ) / 26 'divided down from * 255 / 130
LCDOUT 254,row1+1,"BATTERY:",DEC1 ( Y / 100 ),".",DEC2 ( Y // 100 )," VDC"
pause 100
Next Value

earltyso
- 3rd February 2008, 22:49
SkiMask,

Working great now....I realized that I had
Y VAR BYTE instead of Y VAR WORD which caused my math to be all funky...
I have also never used the // modulus math command either, I think I understand how that works now, I will play with 4 sig figs now to see If I get the rest all worked out.

thanks a million!

skimask
- 3rd February 2008, 22:57
SkiMask,
Working great now....I realized that I had
Y VAR BYTE instead of Y VAR WORD which caused my math to be all funky...
I have also never used the // modulus math command either, I think I understand how that works now, I will play with 4 sig figs now to see If I get the rest all worked out.
thanks a million!

If you've got PBP 2.50, you can use LONGs and get quite a bit of resolution...of course that'll be limited to your ADC also. 4 sig figs are easily doable with a 10-bit ADC...which obviously the PICs usually have.