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)
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
Nincsenek megjegyzések:
Megjegyzés küldése
Mit gondolsz?