「割り込み」 について

 本書 §12-3「割り込み」に関して、追加説明をします。まず、P221からP222に
かけて、「4番地以降にプログラムを長くは書けない・・・」と記述しましたが、実際には
書けることが分かりました。私自身そのように考え、またある本にも書かれていたこ
とから、そのように思い込んでいました。
 また、今回、ある割り込みのプログラムを作成していて気がついたのですが、
<p12_3.asm>は、確かに割り込みになるのですが、割り込みから「main」に戻る
際、元の位置にではなく、「start」(「starti」 の次)へ戻ってしまいます。これは、次の
ような事情によるものです。
 「starti」で「int_1」をcallしていますが、「int_1」の最後の「retfie」は、このcallのret
になっています。
 ですから、次のようにします。

   「割り込み」
     ↓  call
     ↓  ↓
     ↓
     ↓  ↓
     ↓  ret
    retfie

 このようにすると、割り込みから戻る際、割り込みに入る直前の位置に戻ります。

 サンプルプログラムを用意しましたのでご確認ください。「main」のプログラムは、
RB0〜3のLEDが順送りに点滅し、RB7に+5Vをインプットすると、RA0のLEDが
5回点滅して元に戻ります(戻る位置に注目)。実験用ボードでも確かめられます(
アップグレード版はもちろんOK)。+5Vからの線で、RB7(の抵抗のリード線)に
触れます。

  intrpt.asm    (右クリックして「対象をファイルに保存」してください)

                                      

  

inserted by FC2 system