PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : trotz if(1) keine Ausführung



The Man
15.01.2009, 08:07
Hallo,

ich habe bis jetzt das hier geschrieben:


#include <avr/io.h>
unsigned char sekunde;
unsigned char minute;
unsigned char stunde;
unsigned char status;
//(0)rising edge,(1)last state,
void zeit_und_logon()
{
if (1)////////////HIERUM GEHT ES!!!!!!!!!!!!!!!!!!!!!!!!!!
{
if(status | 0b11111101)
{
status | 0b00000001;
}
}
//********************
// eigene Zeiterzeugung
//********************
sekunde++;
if (sekunde == 60)
{
sekunde = 0;
minute++;
}

if (minute == 60)
{
minute = 0;
stunde++;
}
if (stunde == 24) stunde = 0;
//********************
// eigene Zeiterzeugung
//********************
}

int main(void)
{
TCCR1B |= (1<<CS10);
TCNT1 = 0;
main2:
if(TCNT1 < 8000) goto main2;
TCNT1 = 0;
zeit_und_logon();

goto main2;
return 0;
}


Obwohl ich in der Funktion zeit_und_logon();
eine IF Abfrage mit IF(1) geschrieben habe, wird in meinem Simulator die zugehörige Aktion nicht ausgeführt.

Weiß jemand warum?

danke,
The Man

sternst
15.01.2009, 08:26
Wurde wegoptimiert.
Es hat keinerlei Auswirkungen, ob der if-Block nun ausgeführt wird, oder nicht, also wurde er vom Compiler rausgeschmissen.

The Man
15.01.2009, 08:40
Ich hab doch die Oderanwendung auf status im IF Block

status | 0b00000001;

mfg

sternst
15.01.2009, 08:43
Die macht aber nichts, sie verändert nichts.
Vielleicht sollte da eigentlich irgendwo noch ein "=" rein?

Übrigens ist "if(status | 0b11111101)" auch immer wahr, das könntest du auch gleich durch "if(1)" ersetzen.