Hallo, ich habe ein kleines Problem mit einer for Schleife.
/* Schleife 1 */
for(;;(PINA & (1 << EinP)))
{
PORTA |= (1 << LED);
}
/* Schleife 2 */
for(;;)
{
if(PINA & (1 << EinP)) break;
PORTA |= (1 << LED);
}
Beide Schleifen müssten doch das Gleiche tun, allerdings wird bei der 1
nur eine Endlosschleife übersetzt in der die LED immer wieder
eingeschaltet wird und es wird nie geprüft ob EinP noch 1 ist.
Ich setze die neueste Version von WinAVR ein.
Verbesserung:
/* Schleife 1 */
for(;;(PINA & (1 << EinP))==0)
{
PORTA |= (1 << LED);
}
Problem weiterhin vorhanden.
Gast
#284428
Richtig:
/* Schleife 1 */
for(;(PINA & (1 << EinP))==0;)
{
PORTA |= (1 << LED);
}
oder
/* Schleife 1 */
for(;!(PINA & (1 << EinP));)
{
PORTA |= (1 << LED);
}
Danke, hätte eigentlich selbst drauf kommen müssen, dass die Abbruchbedingung in die Mitte kommt.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.