第 3 章 割り込み制御回路
3.3 割り込み許可レジスタ (EIR)
ノンマスカブル割り込み
(
ソフトウエア割り込み、未定義命令割り込みとウォッチドッグタイマ割り込 み)
を除く割り込み要因に対して受け付けの許可/
禁止を行うレジスタです。ノンマスカブル割り込みは、割り込み許可レジスタの内容にかかわらず受け付けられます。
割り込み許可レジスタは、割り込みマスタ許可フラグ(IMF) と割り込み個別許可フラグ (EF) で構成されて います。割り込み許可レジスタは、
SFR
内の0x003A, 0x003B
および0x003C, 0x003D
番地に割り付けられ ており、命令でリード/
ライト(
ビット操作命令などのリードモディファイライトも含む)
できます。3.3.1 割り込みマスタ許可フラグ (IMF)
マスカブル割り込み全体に対して受け付けの許可/禁止の制御を行うフラグです。“0” にクリアされ ていると、すべてのマスカブル割り込みの受け付けは禁止状態であり、“1” にセットされていると、
割り込み個別許可フラグで指定された割り込み受け付けが許可状態です。
割り込みが受け付けられると割り込みマスタ許可フラグはスタックに一時退避された後 “0” にクリ アされ、そのあとのマスカブル割り込みの受け付けを一時的に禁止します。割り込みサービスルーチ ンを実行後、割り込みリターン命令
[RETI]/[RETN]
によりスタックから読み出された値がセットされ 割り込み受け付け前の状態に戻ります。割り込みマスタ許可フラグは、
EIRL (SFR
内の0x003A
番地)
のビット0
に割り付けられており、命令で リード/ライト できます。通常、割り込みマスタ許可フラグのセット/クリアは、[EI]/[DI]命令 で行います。なお、リセット時、割り込みマスタ許可フラグは
“0”
に初期化されます。3.3.2 割り込み個別許可フラグ (EF25 ~ EF4)
各マスカブル割り込み要因に対し、個々に割り込み受け付けの許可
/
禁止の指定を行うフラグで す。割り込み個別許可フラグの該当ビットが “1” なら割り込み受け付けを許可し、 “0” なら禁止しま す。なお、リセット時、割り込み個別許可フラグは"0"に初期化されます。個別許可フラグが"1"にセッ トされるまでマスカブル割り込みは受け付けられません。
注) メインプログラム中で、割り込み個別許可フラグ(EF)を操作する場合は、事前にマスタ許可フラグ(IMF) を"0"にクリアにしてから行ってください(DI命令による割り込みの禁止)。EFを操作した後は、必要に応 じて
IMF
を"1"にセットしてください(EI命令による割り込みの許可)。割り込みサービスルーチンでは、IMFは自動的に"0"になりますので、通常割り込みサービスルーチンの中 で
IMF
を"0"にクリアする必要はありません。ただし、割り込みサービスルーチンの中で多重割り込みを使 用する場合は、IMFを"1"にセットする前にEF
を設定してください。(プログラム例)割り込みの個別許可と
IMF
のセットDI ; IMF ← 0
LDW (EIRL), 0y1110100010100000 ; EF15~EF13, EF11, EF7, EF5←1
: ;注) IMF はセットしない
:
EI ; IMF ← 1
TMP89CM46
3.3
割り込み許可レジスタ (EIR)割り込みラッチ(ILL)
ILL 7 6 5 4 3 2 1 0
(0x0FE0) Bit Symbol IL7 IL6 IL5 IL4 IL3 - -
-Read/Write R/W R/W R/W R/W R R R R
リセット後 0 0 0 0 0 0 0 0
機能 INTTXD0 INTRXD0 /
INTSIO0 INTTBT INTWUC INTWDT
割り込みラッチ(ILH)
ILH 7 6 5 4 3 2 1 0
(0x0FE1) Bit Symbol IL15 IL14 IL13 IL12 IL11 IL10 IL9 IL8
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
リセット後 0 0 0 0 0 0 0 0
機能 INTSBI0/
INTSIO0
INTTCA0 INTTC01 INTTC00 INTRTC INTADC INTVLTD INT5
割り込みラッチ(ILE)
ILE 7 6 5 4 3 2 1 0
(0x0FE2) Bit Symbol IL23 IL22 IL21 IL20 IL19 IL18 IL17 IL16
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
リセット後 0 0 0 0 0 0 0 0
機能 INTTXD1 INTRXD1 INTTCA1 INT4 INT3 INT2 INT1 INT0
割り込みラッチ(ILD)
ILD 7 6 5 4 3 2 1 0
(0x0FE3) Bit Symbol - - - IL25 IL24
Read/Write R R R R R R R/W R/W
リセット後 0 0 0 0 0 0 0 0
機能 INTTC03 INTTC02
IL25~IL4
割り込みラッチ
RD時 WR時
0: 割り込み要求なし 割り込み要求のクリア(注2,3) 1: 割り込み要求あり 割り込み要求をクリアしない
(1をWRしても割り込みはセット されません)
IL3 0:
1:
割り込み要求なし
割り込み要求あり
-注
1) IL3
はRead Only
レジスタです。書き込みを行っても割り込みラッチは影響を受けません。注
2)
メインプログラム中で、割り込みラッチ(IL)を操作する場合は、事前にマスタ許可フラグ(IMF)を"0"にクリアにして から行ってください(DI命令による割り込みの禁止)。ILを操作した後は、必要に応じてIMF
を"1"にセットしてくだ さい(EI命令による割り込みの許可)。割り込みサービスルーチンでは、IMFは自動的に"0"になりますので、通常割り込みサービスルーチンの中で
IMF
を"0"にクリアする必要はありません。ただし、割り込みサービスルーチンの中で多重割り込みを使用する場合は、IMF
を"1"にセットする前にIL
を設定してください。注
3) IL
はビット操作などのリードモディファイライト命令でクリアしないでください。注
4) ILL
に対してリード命令を実行すると、ビット0~2
は0
が読み出されます。その他空きビットをリードすると0
が読み出されます。
Page 51
割り込み許可レジスタ(EIRL)
EIRL 7 6 5 4 3 2 1 0
(0x003A) Bit Symbol EF7 EF6 EF5 EF4 - - - IMF
Read/Write R/W R/W R/W R/W R R R R/W
リセット後 0 0 0 0 0 0 0 0
機能
INTTXD0 INTRXD0 /
INTSIO0 INTTBT INTWUC 割り込み
マスタ許可 フラグ
割り込み許可レジスタ(EIRH)
EIRH 7 6 5 4 3 2 1 0
(0x003B) Bit Symbol EF15 EF14 EF13 EF12 EF11 EF10 EF9 EF8
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
リセット後 0 0 0 0 0 0 0 0
機能 INTSBI0/
INTSIO0
INTTCA0 INTTC01 INTTC00 INTRTC INTADC INTVLTD INT5
割り込み許可レジスタ(EIRE)
EIRE 7 6 5 4 3 2 1 0
(0x003C) Bit Symbol EF23 EF22 EF21 EF20 EF19 EF18 EF17 EF16
Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
リセット後 0 0 0 0 0 0 0 0
機能 INTTXD1 INTRXD1 INTTCA1 INT4 INT3 INT2 INT1 INT0
割り込み許可レジスタ(EIRD)
EIRD 7 6 5 4 3 2 1 0
(0x003D) Bit Symbol - - - EF25 EF24
Read/Write R R R R R/W R/W R/W R/W
リセット後 0 0 0 0 0 0 0 0
機能 INTTC03 INTTC02
EF25~EF4 割り込み個別許可フラグ
(ビットごとに指定)
0:
1:
各マスカブル割り込みの受け付け禁止 各マスカブル割り込みの受け付け許可 IMF 割り込みマスタ許可フラグ 0:
1:
各マスカブル割り込み全体の受け付け禁止 各マスカブル割り込み全体の受け付け許可 注
1)
割り込み許可フラグ (EF15~4)の変更と同時にIMF
を “1” にセットしないでください。注
2)
メインプログラム中で、割り込み個別許可フラグ(EF)を操作する場合は、事前にマスタ許可フラグ(IMF)を"0"にクリ アにしてから行ってください(DI命令による割り込みの禁止)。EFを操作した後は、必要に応じてIMF
を"1"にセッ トしてください(EI命令による割り込みの許可)。割り込みサービスルーチンでは、IMFは自動的に"0"になりますので、通常割り込みサービスルーチンの中で
IMF
を"0"にクリアする必要はありません。ただし、割り込みサービスルーチンの中で多重割り込みを使用する場合は、IMF
を"1"にセットする前にEF
を設定してください。注
3) EIRL
に対してリード命令を実行すると、ビット3~1
は0
が読み出されます。その他空きビットをリードすると0
が読み出されます。