"...Keep in mind that all of the math and comparisons in PBP are unsigned."
Will you use that negative number in a math operation or is it just for a representation on LCD or sending via a serial comm. etc?
"...Keep in mind that all of the math and comparisons in PBP are unsigned."
Will you use that negative number in a math operation or is it just for a representation on LCD or sending via a serial comm. etc?
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
Unless it has something to do with a previous version of PBP, can't say.
But this simple program comes up with 248 (-8). PBP 2.46Something you might try is ...Code:@ __CONFIG _CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H define OSC 20 clear remaining var byte rows var byte rows = 8 remaining = -rows stop
remaining = 0 - rows
DT
I'm not using it for any math operations, just to control the start of a for loop.
for some reason when remaining is negative this part "crashes"Code:for i = remaining toremaining + (rows - 1) if i < 0 then messageScroll[writePos] = $0 endif if i >= 0 and i < messagelength then messageScroll[writePos] = message[i] endif if i >= messageLength then messageScroll[writepos] = $0 endif writePos = writePos + 1 next i
Last edited by RUBiksCUbe; - 24th September 2006 at 20:24.
Hi RUBiksCUbe,
Where do you get this "Remaining" variable into negative? Are you setting it to "negative" somewhere before this loop as you stated in the example above?
Also, here I made the same code of yours in a different look.
It seems you only need the negative value for " messageScroll[writePos] = $0 "
Code:for i = remaining to remaining + (rows - 1) if i < 0 then messageScroll[writePos] = $0 else if i < messagelength then messageScroll[writePos] = message[i] else messageScroll[writepos] = $0 endif endif writePos = writePos + 1 next i
Also, are you setting other variables to an initial value at the beginning?
--------------------------
Last edited by sayzer; - 25th September 2006 at 10:54.
"If the Earth were a single state, Istanbul would be its capital." Napoleon Bonaparte
At the very beginning I have
Code:rows = 8 remaining = (0 - rows)
Couple problems here.
As Sayzer pointed out ... "...Keep in mind that all of the math and comparisons in PBP are unsigned."
This means that
if i < 0 then
will always evaluate to FALSE. And the FOR loop will always terminate before executing anything because -8 is really 248 in PBP math (assuming byte vars).
You'll need to find positive numbers to work with.
DT
Or testing the MSB of the variable. If 1=> negative if 0=>positive.
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Bookmarks