Zitat Zitat von funky78
#pragma cd pl (9999)
#include <reg51.h>
void to_int(void) interrupt INT_T0...
Das Zeug ist compilerspezifisch. Jeder Compiler hat seinen eingenen Weg, Interrupts und Signale zu definieren und implementiert unterschiedliche Pragmas -- wenn überhaupt.
avr-gcc zB implementiert überhaupt keine Pragmas und externen Interrupt0 definiert man via
Code:
#include <avr/interrupt.h>
#include <avr/signal.h>

// keine rekursiven Interrupts 
SIGNAL (SIG_INTERRUPT0)
{
	// ...
}

// rekursive Interrupts
INTERRUPT (SIG_INTERRUPT0)
{
	// ...
}
Eine Möglichkeit, auf Tastendruck/Loslassen zu reagieren, ist über externe Interrupts. Zum Entprellen wartet man danach eine kurze Zeit, bis man wieder auf nen Tastendruck reagiert.
Oder man schaut in regelmässigen Abständen in einem Timer-Interrupt, ob sich an den Tastern was getan hat.

Der erste Weg hat den Nachteil, daß man so nur einen Taster checken kann und auch eine Zeitbasis braucht. Zudem landet man bei prellendem Taster oft im Interrupt. Tastendrucke sind keine zeitkritischen Ereignisse, da rechts es wenn man alle 10ms drauf schaut und sich externe Interrupts für wichtige Sachen aufspart.