Keresés

Címkék

2025-04-24

Megszakítások

A megszakítások olyan események, amik beleszólnak a program működésébe. Ilyen esemény bekövetkeztekor a főprogram végrehajtása félbemarad, egy kisebb szubrutin kezd futni, majd annak végeztével a főprogram tovább működik.
A megszakítások létrejöhetnek a processzoron belül és kívül is.

Belső források:

  • időzítő lejárt
  • soros porton adat érkezett
  • a processzor INT0 vagy INT1 tüskéje le lett kapcsolva
  • melegindítás (processzor RST tüskéje; nem lehet kikapcsolni)
Meg lehet adni a különféle forrásoknak külön-külön, hogy melyik van engedélyezve. Erre az IE nevű memóriacím szolgál a 0a8h pozícióban, aminek bitjei állításával lehet a forrásokat be- és kikapcsolni.
A processzor indításakor nullázódik. (a 7-es bitnek bekapcsolva kell mindig lennie ahhoz, hogy a többi működjön. a két külső a processzor tüskekiosztásán aktiválható, de inkább deaktiválható, mivel ezek akkor lépnek működésbe, ha a rájuk kapcsolt feszültség 0V)
  • 7@0afh: összes be/ki
  • 6@0aeh: ----
  • 5@0adh: ----
  • 4@0ach: soros port
  • 3@0abh: 1-es időzítő lejár
  • 2@0aah: 1-es külső
  • 1@0a9h: 0-s időzítő lejár
  • 0@0a8h: 0-s külső

Aktiválódás után elindul egy ún. ISR (interrupt service routine; megszakításkiszolgáló rutin), ami a program részét képzi. Minden forrásnak külön fenntartott ISR-je van, ezek a kódmemoriában meghatározott helyeken találhatók, és helyeik nem változtathatók; emiatt ha olyan programot írunk, amik megszakításokat is használnak, akkor ezen ISR-eknek helyet kell hagyni a prog. elején.
Az ISR végét egy reti instrukcióval kell jelezni, ilyenkor a program főszálú futása visszaáll.
Az ISR-pozíciók:

  • RST:           00h
  • INT0:         03h
  • I0:               0bh
  • INT1:         13h
  • I1:               1bh
  • Soros port:  23h

Előfordulhat, hogy amíg egy ISR fut, addig egy másik megszakítás történik. Ebben az esetben egy másik, B8h mem. pozícióban lévő, IP-re keresztelt regiszter segít eldönteni, hogy mi történjen ezután.

  • 7: ----
  • 6: ----
  • 5@0bdh: ----
  • 4@0bch: soros port
  • 3@0bbh: 1-es id. lejár
  • 2@0bah: külső 1
  • 1@0b9h: 0-s id. lejár
  • 0@0b8h: külső 0
Az a megszakítás, aminek a megfelelő IP-bitje 1, az közbeszólhat egy olyan ISR futásába, aminek IP-szintje 0. Két egyenlő IP-szintű ISR nem bánthatja egymást.

Nincsenek megjegyzések:

Megjegyzés küldése

Mit gondolsz?