Організація переривань в 8-ми и 16-ти розрядних системах

Страницы работы

Содержание работы

Самітов М. КІТ-14б

ОРГАНІЗАЦІЯ ПЕРЕРИВАНЬ В 8-МИ И 16-ТИ РОЗРЯДНИХ СИСТЕМАХ

Ціль: Вивчення механізму переривань в 8-ми й 16-ти  розрядних мікропроцесорних системах МПС), їхніх типів, алгоритмів і засобів їхньої обробки,  придбання практичних навичок у  розробці  подпрограм  обслуговування переривань і налагодженню програм за допомогою крапок переривання. 

            Для виводу інформації в ПКП використаються 2 порти вводу-виводу. Порт із парною адресою (звичайно це порт 20h) і порт із непарною адресою (звичайно 21h). Через ці порти можуть бути передані 4 слова ініціалізації (Initialization Control Word,  ICW1 - ICW4), що задають режим роботи ПКП,  і 3 операційних керуючих слова  (слова робочих наказів, Operation Control Words, OCW1 - OCW3). У порт із парною адресою виводяться ICW1,  OCW2 й OCW3.  OCW2 відрізняється  від OCW3  тим,  що біт 3 в ocw2 дорівнює 0,  а в OCW3 дорівнює 1.  У той же час біт 4 в OCW2 й OCW3 дорівнює 0,  а в ICW1 дорівнює 1. У такий спосіб за значенням,  виведеному в порт із парною адресою,  однозначно визначається,  у який регістр (ICW1,  OCW2 або  OCW3)  заносяться дані.

      Друге слово робочих наказів (OCW2) призначене для выво-

 так  команди  завершення  обробки  апаратного переривання (EOI),

 циклічного зрушення і явної зміни пріоритетів рівнів.  Наз-

 начение битов OCW2 наступне:

   A0   7    6    5    4    3    2    1    0

 ┌────┬────┬────┬────┬────┬────┬────┬────┬────┐

 │  0 │  R │ SL │ EOI│  0 │  0 │ L2 │ L1 │ L0 │

 └────┴─┬──┴─┬──┴─┬──┴────┴────┴─┬──┴─┬──┴─┬──┘

        │    │    │              │    │    └──> Ці 3 бита визначають

        │    │    │              │    └───────> номер рівня

        │    │    │              └────────────> переривання, якщо воно

        │    │    │                           необхідно у команді.

        │    │    │

        │    │    │

        │    │    └───────────────────────────> 1-команда завершення

        v    v                                    обробки

     ┌────┬────┐                                  апаратного

     │  0 │  0 │ Використовується разом з EOI=1   переривання

     ├────┼────┤

     │  0 │  1 │ Специфіцированний EOI (скидає біт, визначаємий

     ├────┼────┤ рядками L0 - L2 в ISR)

     │  1 │  0 │ циклічний зсув пріоритетів на одну вліво

     ├────┼────┤ позицію

     │  1 │  1 │ Встановлення найнижчого пріоритету вказаному у рядках

     └────┴────┘ L0 - L2

{   Вашій увазі пропонується програма, що ілюструє

особливості написання оброблювачів переривань від таймера й клавиа-

тури, а також програмування контролера в режимі автоматичного

завершення переривання.}

{$m,$800,0,0}

program cont_int;                  { програмування ПКП й             }

  uses crt,dos;                        { обробка переривань               }

  var i:integer;

  procedure scan; interrupt;       {      оброблювач переривання         }

    begin                                { від клавіатури}

      asm sti end;                 {      дозволити переривання          }

      writeln(port[$60]);          {    обов'язкове читання порту       }

      port[$20]:=$80;     

meml[0:9*4]:=meml[0:$60*4];  {    відновлення вектора 9        }

      port[$21]:=1;  {**}          { OCW1:маскирование таймера          }

     delay(5000);   {**}          {  протягом 5 сек.                  }

     port[$21]:=0;  {**}          { размаскирование таймера          }

     delay(5000);                 { переривання від таймера перериває    }

                                   { обробку переривання від клавіатури }

     port[$20]:=$a1;              {     скидання біта ISR рівня 1        }

     meml[0:8*4]:=meml[0:$62*4];  {     відновлення вектора 8       }

    end; {scan}

  procedure tick; interrupt;       {      оброблювач переривання         }

    begin                          {        від таймера                  }

        if i>20 then begin

          write('8');              {       вивід "8" через 1 сек        }

          i:=0

        end else inc(i);

         port[$20]:=$20;  {* -}   { скидання біта ISR найвищого рівня   }

    end; {tick}

  begin

    if meml[0:$61*4]<>12345 then   { реалізація можливості повторного  }

    begin                          { запуску резидентної програми      }

      meml[0:$62*4]:=meml[0:8*4];  { збереження системних оброблювачів  }

      meml[0:$60*4]:=meml[0:9*4];   { переривань від таймера й клавіатури }

      meml[0:$61*4]:=12345;

    end;

    i:=0;

    port[$20]:=$11;     {ICW1}   {* +} {   керуючого слова             }

    port[$21]:=8;       {ICW2}   {* +} {     ICW1 - ICW3                 }

    port[$21]:=4;       {ICW3}   {* +} {     не змінені                 }

    port[$21]:=3;  {1}  {ICW4}   {* +} { режим автоматичного завершення   }

    meml[0:9*4]:=longint(@scan);       { установка оброблювача переривання 9 }

    meml[0:8*4]:=longint(@tick);       { установка оброблювача переривання 8 }

    keep(0)                            {  програма - резидентна   }

  end.


Вивід: вивчив механізми переривань в 8-ми й 16-ти  разряядных мікропроцесорних системах МШС), їхніх типів, алгоритмів і засобів їхньої обробки,  придбання практичних навичок у  розробці  одпрограмм  обслуговування переривань і налагодженню програм за допомогою крапок переривання. 

Похожие материалы

Информация о работе