16f877a bir kod çalıştıramadım

Başlatan koray692, 02 Haziran 2013, 13:28:14

koray692

 while(1)
{
if(portb.rb4==0)
{
portb.rb0=1;
}
else if (portb.rb4==1)
{
goto gec;

}
}
gec:
bu kodda
döngüye giriyor rb4 bacağı sıfırsa motoru sola doğru döndürüyor ancak bir sonraki aşamada motor yerine gelince ve rb4 bacağı bir olunca döngüden çıkmıyor ancak ilk başta rb4 0 oldğunda kod normal düzgün bir şekilde çalışıyor
anladığım kadarıyla pic ilk seferde bir veriyi kaydedince belleğine şartlar değişsede hep ilk aldığı veriyi kullanıyor nasıl aşacam bu sorunu çözemedim simülasyon olarak proteusu kullanıyorum.

xoom

while(1)
{
if(portb.rb4==0)
{
portb.rb0=1;
}
else if (portb.rb4==1)
{
portb.rb0=0;
}
}

ete

Else nin amacı ilk şart değilse diğeri anlamınadır. Binary işlemde alternatif 2 tanedir. "1" yada "0"
If portb. Rb4==0 alternatifi doru değilse else çalışır ve bu durumda portb. Rb4=1 demektir.
Bu nedenle oraya ikinci bir if şartı ( if portb. Rb4==1) yazmanız gereksizdir ve karmaşaya sebep olabilir.
Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com