TCON 8F 8E 8D 8C 8B 8A 89 88 Externer Interr
upt 0
88h TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
Timer Control Register TCON
IEN0 AF AE AD AC AB AA A9 A8
A8h EA EAD ES1 ES0 ET1 EX1 ET0 EX0
Interrupt Enable Register IEN0
IP0 BF BE BD BC BB BA B9 B8
B8h - PAD PS1 PS0 PT1 PX1 PT0 PX0
Interrupt Priority Register IP0
Die externen Interrupts /INT0 und /INT1 werden über EX0 und EX1 enabled bzw. disabled.
Mit IT0 und IT1 kann zwischen pegelaktiv und flankenaktiv ausgewählt werden. Wenn ITx 1 ist, dann reagiert der P auf eine negative Flanke; wenn ITx 0 ist, dann reagiert der P auf einen Low-Pegel.
IE0 und IE1 sind die Interrupt Request Flags, die gesetzt werden, wenn ein Interrupt aufgetreten ist.
Da die externen Interrupts nach jedem Maschinenzyklus abgefragt werden, sollte ein High- oder Low-Signal mindestens 12 Oszillator Perioden gehalten werden, um sicherzustellen, daß das Signal richtig erkannt wird.
Flankenaktiv:
Damit der Interrupt erkannt wird, muß die externe Spannungsquelle den Interrupt Request Pin für mindestens einen Zyklus auf 1 und für mindestens einen Zyklus auf 0 halten, damit der Übergang von 1 auf 0 erkannt wird. IEx wird automatisch gelöscht, wenn die ISR aufgerufen wird.
Pegelaktiv:
Hier muß der Interrupt Request Pin mindestens einen Maschinenzyklus auf 0 gehalten werden, damit er erkannt wird. Wenn der Interrupt aus irgendeinem Grund erst später behandelt werden kann (siehe 3.1 Interrupt Response Time), dann kann es passieren, daß der Interrupt verloren geht. Die externe Logik bzw. die Interrupt Service Routine müssen dafür sorgen, daß die Interruptanforderung zumindest bis zum Sprung in die Interrupt Service Routine und höchstens bis zum beenden der ISR aktiv bleibt.
Die Bits PX0 und PX1 legen die Priorität des Interrupts fest (0-low priority; 1-high priority).
|