Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
національний університет “Львівська політехніКА”
КАФЕДРА ЕЛЕКТРОННИХ ОБЧИСЛЮВАЛЬНИХ МАШИН
Лабораторна робота №4
з курсу “Комп’ютерні системи”
на тему: “Моделювання пристрою обробки переривань”.
Підготував:
cтудент КІ3
Львів 2005
Мета роботи: створити модель пристрою обробки переривань.
Функція, яка моделює пристрій обробки переривань:
void pic::entry(){
if (irq0.read() == true)
{
intrq.write(true);
vectno.write(0);
} else
if (irq1.read() == true)
{
intrq.write(true);
vectno.write(1);
} else
if (irq2.read() == true)
{
intrq.write(true);
vectno.write(2);
} else
if (irq3.read() == true)
{
intrq.write(true);
vectno.write(2);
} else
if(irq4.read()==true)
{
intrq.write(true);
vectno.write(4);
}else
if(irq5.read()==true)
{
intrq.write(true);
vectno.write(5);
}else
if(irq6.read()==true)
{
intrq.write(true);
vectno.write(6);
}else
if(irq7.read()==true)
{
intrq.write(true);
vectno.write(7);
}else
if(irq8.read()==true)
{
intrq.write(true);
vectno.write(8);
}else
if(irq9.read()==true)
{
intrq.write(true);
vectno.write(9);
}else
if(irq10.read()==true)
{
intrq.write(true);
vectno.write(10);
}else
if(irq11.read()==true)
{
intrq.write(true);
vectno.write(11);
}else
if(irq12.read()==true)
{
intrq.write(true);
vectno.write(12);
}else
if(irq13.read()==true)
{
intrq.write(true);
vectno.write(13);
}else
if(irq14.read()==true)
{
intrq.write(true);
vectno.write(14);
}else
if(irq15.read()==true)
{
intrq.write(true);
vectno.write(15);
if ((intack_cpu.read() == true)&&(cs.read()==true))
{
intrq.write(false);
}
}
Змодельований пристрій обробки переривань може опрацьовувати 16 переривань, які мають приорітет (в нульового переривання – найвищий приорітет). Приорітети переривань реалізуються за допомогою конструкцій if – else: спочатку перевіряється, чи не є отримане переривання нульовим; якщо ні – то, чи не є воно нершим, і т.д. Якщо, дійшовши до останнього переривання, обробник не знайшов відповідності, то генерується false.