Hallo
Ich arbeite am Microcontroller und kann jetzt dieses Programm nicht jetzt testen(erst in der Schule kann ich es testen).
Deswegen hab ich es hier gepostet damit Sie mir vielleicht sagen können ob das stimmt.
immer 3 Zeichen einlesen und überprüfen, ob es sich
bei jeder Stelle um eine Zahl handelt.Wenn es nicht so ist eine Fehlermeldung ausgeben und der Empfang der
Zeichen beginnt von vorne.
Wurde eine 3-stellige Zahl empfangen, wird die Zahl modulo 256 am ausgegeben bis die nächste Zahl empfangen wurde, das Muster auf der 7-Segmentanzeige wird
gelöscht. Beachten Sie beim Umrechnen der Zahl, dass Sie die Eingabe in einem String
vorliegen haben.
Ich arbeite am Microcontroller und kann jetzt dieses Programm nicht jetzt testen(erst in der Schule kann ich es testen).
Deswegen hab ich es hier gepostet damit Sie mir vielleicht sagen können ob das stimmt.
immer 3 Zeichen einlesen und überprüfen, ob es sich
bei jeder Stelle um eine Zahl handelt.Wenn es nicht so ist eine Fehlermeldung ausgeben und der Empfang der
Zeichen beginnt von vorne.
Wurde eine 3-stellige Zahl empfangen, wird die Zahl modulo 256 am ausgegeben bis die nächste Zahl empfangen wurde, das Muster auf der 7-Segmentanzeige wird
gelöscht. Beachten Sie beim Umrechnen der Zahl, dass Sie die Eingabe in einem String
vorliegen haben.
Code:
while(1)
{
for (int16_t i=0; i<3; i++)
{
buf[i]= _getkey();
}
for(int16_t j=0; j<3; j++)
{
if (!('0' <= buf[j] && buf[j] <= '9'))
{
PORTB = 0xAA; // taruriges smiley wenn keine Zahl vorhanden ist
zahl_vorhanden = 1;
}
}
if(zahl_vorhanden != 1)
{
PORTB = 0xFF; // alle aus
zahl= ((buf[0]-'0')*100 +(buf[1]-'0')*10 + (buf[2]-'0')*1);
PORTA = ~(zahl%256);
}
return 0;
}