Forum: Mikrocontroller und Digitale Elektronik if in einer Interrupt Routine


von Phase IV (Gast)


Lesenswert?

Hallo,

ich habe folgendes Problem (mit einem 80c51 und Keil):

wenn ich eine if abfrage in einer interrupt routine verwende, wird sie 
immer ausgeführt, egal ob true oder false. wie kommt das?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

[Glaskugel] Weil die Variable, die Du da abfragst, nicht als "volatile" 
deklariert ist und daher der Optimierer des von Dir verwendeten 
Compilers annimmt, daß die Variable sich in der Interruptroutine nicht 
ändert.

von Martin F. (martin-f)


Lesenswert?

nein, Du hast das zweite gleich in Deiner If bedingung vergessen, Du 
machst da 'ne zuweisung. das ergibt immer true.
Da bin ich ganz sicher, meine Glaskugel lügt nie.

von Rolf Magnus (Gast)


Lesenswert?

Also meine Glaskugel hat gesagt, daß eine Variable auf einen Bereich 
getestet wird, in dem sie immer liegt, also z.B. sowas wie 
vorzeichenbehafteter char < 200.

von Willi W. (williwacker)


Lesenswert?

Ich habe auch eine Glaskugel und die sagt: Du hast einen Stacküberlauf

von Rolf Magnus (Gast)


Lesenswert?

Meine Reservekugel meinte noch, daß irgendwo drüber ein

#define if(x)

steht, aber die ist noch nicht richtig justiert.

von Wurst (Gast)


Lesenswert?

Weltklasse, das erste Mal, dass einer Hilfe bekommt, bei einer nicht 
allzu klar fomulierten Frage! (Und keine Standpauke zu der Art ein 
Problem zu schildern und dann eine klare Frage zu stellen)
Gratulation an eure Glaskugeln

von Willi W. (williwacker)


Lesenswert?

Wurst wrote:
> Weltklasse, das erste Mal, dass einer Hilfe bekommt, bei einer nicht
> allzu klar fomulierten Frage! (Und keine Standpauke zu der Art ein
> Problem zu schildern und dann eine klare Frage zu stellen)
> Gratulation an eure Glaskugeln

Danke

von Chrisi (Gast)


Lesenswert?

Meine Glaskugel sagt: Strichpunkt direkt hinter if-Anweisung :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.