PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehler in einer if-Bedingung



GoTo
29.04.2005, 18:33
Hallo,

Ich habe einen PIC16F877 mit 20MHz und ich benutze CC5x.

Ich hab zwei LED's die abwechselnd blinken. Am Anfang mit 1ms Abstand
und dann werden die Abstände immer verdoppelt bis 1024ms. Dann sollte
er eigentlich die Abstände bis 1ms wieder halbieren, um dann wieder von
vorn anzufangen. Das tut er aber nicht! Ich hab schon eine Kontroll-LED
eingebaut die angeht wenn er anfängt runter zu zählen.

Komisch ist, dass die Kontroll-LED zwar angeht er, aber das Blinken
nicht wieder schneller wird. Das kann ich mir nicht erklären, da die
Kontroll-LED erst auf high geht, wenn er anfängt zu teilen.

Dazu bitte unbedingt den angehängten Sourcecode ansehen!!!

Danke für die Hilfe!

PicNick
29.04.2005, 18:48
Werter Kollege, die If's sind deine Sache nicht:
Wenn du schreibst
if(up_down == 0)
{
}
else if(up_down == 1)
{
}
dann brauchst du im else nicht nochmal "if" aufs gegenteil sagen. else ist schon "else"




LED2=0;
wait(time);
if(time < 1024)
{
if(up_down == 0)
{
time = time*2;
control = 0;
}
else if(up_down == 1)
{
time = time/2;
control = 1;
}
}
else if(time >= 1024)
{
up_down = 1;
}
else if(time <= 1)
{
up_down = 0;
}
}
}


Problem: wenn time < 1024 , dann machst du sie größer. GUT

Ist sie >= 1024, kommst du ins else und setzt up_down = 1 AUCH GUT

aber time wird nicht verändert, also bleibst bei >= 1024 und du kommst nie wieder auf den oberen Teil vom "IF"
Logo ?