Hi,
unter der Annahme, daß dein programm schnell genug ist, was dzt. wohl so ist (sonst müßtest du buffern)
Code:
static char daten = 0;
static char flag1 = 0; // flag is immer gut
SIGNAL(...)
{
flag |= 1; // es is was da
}
main()
....
...
while (1)
{
flag <<= 1; //
if (flag & 2)
{
flag &= ~2; // löschen
daten = UDR; // holen
......... // verwursteln if then else und überhaupt
}
}
Der Shift ist EIN Cpu-Befehl, der nicht unterbrochen werden kann. dadurch ist der Flag vom Interrupt entweder vorher drin, dann haben wir ihn ja, oder nachher, dann kriegen wir ihn halt beim nächsten mal
mfg robert
Lesezeichen