OR Verknüpfung

Gast #15440
Lesenswert?

Hallo

- Die Software hab ich für den 89C51RD2 im uVision geschrieben.
- An P0 (8-Bit Ausgang) hab ich 8 Dioden die bei einem log.Low brennen.
- Falls das Programm so durchläuft leuchten die Dioden 8,7,6, was meiner 
Meinung nach richtig ist, wenn ich nun aber das CtrlByte auf 0xA0 ändere 
leuchtet nur die 8., wieso nicht auch die 6. ??
Es läuft darauf hinaus dass wenn immer die if-Bedinung nicht zutrifft, 
die restlichen Abfragen "ignoriert" werden, d.h. immer dann wenn im 
CtrlByte das erste 0 kommt werden die 1 dahinter nicht mehr ausgewertet, 
wieso ???

char mask=0x80, CtrlByte=0xF0, test=0x00, i;
void main ()
{
  while (1)
  {
    if (mask == (mask & CtrlByte))
      test = (mask | test);
    mask = (mask >> 1);

    if (mask == (mask & CtrlByte))
      test = (mask | test);
    mask = (mask >> 1);

    if (mask == (mask & CtrlByte))
      test = (mask | test);

    mask = 0x80;
    P0 = ~test;
    test = 0x00;
     }
}

Vielen Dank
Dani

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren