Gast
#15440
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