If you look hard at the logic, you'll see what's happening. It can never get
through the FOR/NEXT loop any time your IF/THEN block evaluates as TRUE.
When this happens, as you mentioned previously;
That is exactly what causes this;If result = ...THEN" test always passes
Because GOTO Start is inside your loop, inside the IF/THEN block that alwaysplaced in a FOR NEXT loop ... program hangs up !!!
evaluates as TRUE.Now let's assume the statement IF (value < A) OR ( value > B ) thenCode:Start: result = 0 For I = 1 to 16.... GOSUB Thesub PULSIN input,1, value ' If this next part "always" evaluates TRUE, then you'll never make it ' past FOR I = "1". You keep jumping back to Start & restarting ' the FOR/NEXT loop IF (value < A) OR ( value > B ) then error = 1 ( it's a red led ! ) value1 = ... value2 = ... GOTO Start ' <-- restarts FOR/NEXT loop over & over & over, etc,, ENDIF ' while IF/THEN evaluates as TRUE result = result + value NEXT I result = result >> 4 ( the mean value ....) TheSub: Low out1 Pulsout out1,value1 Low out2 Pulsout out2,value2 RETURN
never ends up being TRUE. You go through the FOR/NEXT loop until it expires,
fall-through into TheSub, land on the RETURN, and you now have another big
problem.
RETURN pops the return address from the stack. Where is your program going
to return to if the address is invalid...?




Bookmarks