PDA

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