View Full Version : Simple question about While Wend...
dbachman
- 25th July 2015, 04:46
I have been trying for a while to get this simple code to work. Can someone tell me why it won't?
Thanks, Don
while porta.2 <> 0
wend
high portb.6
porta.2 has pullup installed but led on portb.6 always lights....... isn't it supposed to sit there until porta.2 becomes low?
Normnet
- 25th July 2015, 05:05
"<>0" is the equivalent of "= 1" for a hi low read.
Norm
dbachman
- 25th July 2015, 05:10
Right.... while pin 2 is at a high state shouldn't the program stay in the while/wend loop until it goes low and then jump out and turn on the LED?
Normnet
- 25th July 2015, 09:56
Right.... while pin 2 is at a high state shouldn't the program stay in the while/wend loop until it goes low and then jump out and turn on the LED?
Yes
Try if not already:
Read a PortB pin in place of portA to avoid config errors.
Initialize Low portB.6
Is the read pin an input?
Norm
dbachman
- 25th July 2015, 15:39
this is the code..
Trisa = 1
Trisb = %00100000
portb = 0
while portb.5 = 1
wend
high portb.4
Normnet
- 25th July 2015, 21:10
Try adding some debugs to see if you can find where the breakdown occurs:
Trisa = 1
Trisb = %00100000
portb = 0
if portb.5 = 1 then
SerOut2 cSEROUT_PIN,cBAUD,["PRE HI",13]
else
SerOut2 cSEROUT_PIN,cBAUD,["PRE LOW",13]
endif
while portb.5 = 1
if portb.5 = 1 then
SerOut2 cSEROUT_PIN,cBAUD,["LOOP HI",13]
else
SerOut2 cSEROUT_PIN,cBAUD,["LOOP LOW",13]
endif
wend
if portb.5 = 1 then
SerOut2 cSEROUT_PIN,cBAUD,["AFT HI",13]
else
SerOut2 cSEROUT_PIN,cBAUD,["AFT LOW",13]
endif
high portb.4
Norm
Tabsoft
- 25th July 2015, 21:12
What PIC MCU are you using?
Should you be using LATB register instead of PORTB register for your High and Low statements?
Read modify write may be an issue.
dbachman
- 26th July 2015, 00:23
I am using an 18f2550.....
Norm...I don't think I am experienced enough to use that debug code...
I have looked back at some other code I have written and have used while/wend the same way.. should I use a pullup on portb.5 to ensure it is high?...I will try that but I think I have already..
Thanks for helping me figure this out...
dbachman
- 26th July 2015, 00:27
I guess that was it...the pullup resistor on the input...apparently it was floating...
mark_s
- 26th July 2015, 01:02
Hi
Portb on the 18f2550 has analog inputs. You need to set the those pins to digital.
Try adding
ADCON1 = %00111111
This will make all the analog pins digital, see page 254 data sheet
Powered by vBulletin® Version 4.1.7 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.