Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНА РОБОТА общее.doc
Скачиваний:
33
Добавлен:
18.03.2015
Размер:
5.16 Mб
Скачать

Переривання

Іноді мікропроцесорна система повинна реагувати на рідкі й непередбачені події. Повернемося до аналогії з підприємством. Припустимо, що можуть відбутися якісь екстремальні події. Наприклад, кожний може бути відірваний від роботи пожежною тривогою. Після того, як пожежа погашена і його наслідки ліквідовані, люди вертаються до колишньої роботи.

Аналогічні події можуть відбутися й у мікропроцесорній системі. Наприклад, розглянемо вольтметр із убудованим МП, що має на передній панелі кнопку калібрування. Коли натискається ця кнопка, робота МП переривається й МП переходить до підпрограми калібрування. Після виконання калібрування керування вертається до основної програми , що була перервана. Ці дії називаються перериваннями. Кристал МП має вхід, що приймає переривання. Сигнал високого рівня на цьому вході викликає перехід процесора до спеціальної підпрограми переривання. Ця підпрограма виконує завдання, необхідну пристроєм, що перериває. Команда, що коштує наприкінці підпрограми переривання, повертає МП до перерваної програми.

Іноді потрібно, щоб МП не реагував на переривання. Тому переривання може бути заборонено програмою. Існують дві команди: ЕI - дозволити переривання, DI - заборонити переривання.

МП КР580ИК80 реагує на переривання в такий спосіб. Не збільшуючи вмісту лічильника адреси, вона приймає інформацію із шини даних, і залежно від коду, установленого на шині даних, починає виконувати програму з певної адреси відповідно до табл.4.

Таблиця 4 Таблиця переривань

Номер переривання

Код на шині даних

Адреса, з котрого починається програма обробки переривання

RST0

З7

0000

RST 1

СF

0008

RST 2

D7

0010

RST З

DF

0018

RST 4

Е7

0020

RST 5

ЕF

0028

RST 6

F7

0030

RST 7

FF

0038

Таким чином, зовнішній пристрій, що виробляє сигнал переривання, повинне виставити на шині даних код, у відповідності яким буде виконуватися певна підпрограма по обробці переривання. Програміст, у свою чергу, повинен передбачити таку підпрограму при написанні загальної програми.

В "Мікролаб" переривання використовується для організації крокового режиму. Докладніше це буде описано в наступних розділах.

Підпрограми й стек

Більші програми можуть бути спрощені шляхом застосування підпрограм для рішення повторюваних завдань. Припустимо, що програма повинна робити серію обчислень, що включає в себе кілька множень. У цьому випадку можна написати одну універсальну підпрограму множення, яку можна застосовувати будь-яка кількість разів для : виконання множення. Підпрограми також зручні для розподілу програми на невеликі модулі.

Для звертання до підпрограми застосовується команда CALL. Під час її виконання МП посилає вміст програмного лічильника /адреса

повернення/ у СТЕК - спеціально обрану частину пам'яті. МП повернеться до адреси повернення, коли виконається команда RET наприкінці підпрограми. Після RET програма переходить до команди, що безпосередньо випливає за CALL.

Адреса повернення можна зберігати в 16-розрядному регістрі. Але в цьому випадку, якщо одна підпрограма використовує іншу підпрограму /вкладення підпрограм/, перша адреса повернення буде губитися.

Для рішення цієї проблеми й використовується СТЕК. Коли одна програма викликає іншу, адреси повернення запам'ятовуються в послідовних комірках пам'яті. Рис. б. показує послідовність дій, коли програма А викликає програму В, що викликає програму С. Уміст програмного лічильника й СТЕКА в кожному кроці показане на мал.7. Послідовність наступна:

1 - виконується програма А;

2 - програма А звертається до підпрограми В. Адреса повернення запам'ятовується в СТЕЦІ, а програмний лічильник завантажується стартовою адресою програми В;

3 - програма У звертається до програми С. Адреса повернення для програми В міститься в СТЕК, а в програмний лічильник завантажується стартова адреса програми З;

4 - повернення із програми С. Останній рядок СТЕКА завантажується в програмний лічильник, і керування вертається до програми В;"

5 - повернення із програми В к програмі А. МП КР580ИК80 використовує ОЗУ в якості СТЕКА, ємність якого необмежена. Спеціальний регістр процесора - покажчик СТЕКА /SP/ містить адресу вершини СТЕКА. Область СТЕКА в ОЗУ визначається при занесенні в покажчик СТЕКА потрібної адреси.

Рис.6. Вкладення програми

Монітор мікролабораторії при включенні живлення й після натискання кнопки СКИДАННЯ заносить у покажчик СТЕКА число 83С7. Це дозволяє застосовувати СТЕК без попередньої установки покажчика СТЕКА. Для програми можлива самостійна установка покажчика СТЕКА, якщо це потрібно. Однак, коли ви наступного разу натиснете СКИДАННЯ, монітор установить уміст покажчика СТЕКА в 83С7.

Можна перевірити покажчик СТЕКА так само, як і регістри МП. Покажчик СТЕКА перебуває в осередку 83ЕЗ /старший байт/ і 83Е2 /молодший байт/.

Команди PUSH і POP

Команди CALL і RET оперують покажчиком СТЕКА автоматично. Існують команди, що дозволяють використовувати СТЕК на ваше бажання. Команда PUSH засилає дані пари регістрів у СТЕК, а команда POP зчитує дані назад у регістри. Наприклад, PUSH У проштовхує в СТЕК дані регістра В, а потім регістра С. Команда POP У повертає обоє ці регістрів з вершини СТЕКА.

Ці команди спільно застосовуються для тимчасового зберігання вмісту регістрів. Допустимо, що програма використовує В и С регістри для запам'ятовування якихось даних. Вона викликає підпрограму, що також використовує ці регістри. Підпрограма може зберегти первісний уміст цих регістрів /як предустановку при виклику підпрограми/ при використанні PUSH В. Потім, перед закінченням підпрограми команда POP У використовується для повернення регістрам У и С їхніх первісних значень. Запам'ятовування вмісту цих регістрів може здійснити й головна програма, якщо перед CALL виконати команду PUSH В, а після CALL - POP В.

.МЕТОДИ РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

СИСТЕМА РОЗРОБКИ

При написанні програм з використанням "Мікролаб" потрібно вручну переводити мова Асемблер на машинну мову. Потім машинний код із клавіатури вводиться в "Мікролаб". Ця система підходить для написання коротких програм, але вона занадто трудомістка для більших програм.

Більша частина програмного забезпечення МП написана з використанням системи розробки, тобто спеціально призначеної для цього мікро-ЕОМ. У типову систему входить ОЗУ ємністю 32-64 байт, дисководи гнучких дисків з подвійною щільністю запису для зберігання програм, термінал ЭЛТ із клавіатурою й друкувальний пристрій. Програмне забезпечення системи розробки включає редактор для уведення й редагування програм мовою Асемблер, Асемблер для перекладу на машинну мову й монітор або отладчик для установки крапок переривання, перевірки регістрів і т.д. Така система значно полегшує процес розробки.

Для полегшення налагодження програмного забезпечення багато систем розробки включають внутрісхемний емулятор /ICE/. МП виймається з випробуваної системи, а на його місце вставляється кабель із системи розробки з 40-вивідним розніманням на кінці. Внутрісхемний емулятор - одне з найбільш складних отладочних пристроїв

ПРОЦЕС РОЗРОБКИ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ

При розробці складних програм необхідно дотримуватися наступної послідовності:

визначити завдання;

прийняти рішення - розділити на функціональні блоки;

скласти алгоритм програми;

написати програму;

випробувати й налагодити кожну команду;

випробувати й налагодити повну програму.

Перший крок очевидний. До того, як прийняти рішення, необхідно зрозуміти завдання. Потрібно скласти набір характеристик програми: визначити, що є вхідними параметрами, як їх потрібно обробити, що є виходом.

Після визначення цих характеристик можна приступитися до розробки програми. Спочатку треба продумати її, загальну конструкцію. Краще розділити програму на невеликі модулі, кожний з яких повинен мати чітко певні вхід і вихід. Пошук дефектів у програмі, розділеної на функціональні блоки, значно полегшується. Такий же метод застосовується при конструюванні апаратної частини.

Одним з методів визначення структури розроблювальної програми є структурне програмування, загальний принцип якого приводиться в даному розділі.

Після визначення завдання, вибору методу й поділу програми на модулі можна приступитися до складання алгоритмів. Звичайно складається загальний алгоритм, у якому кожний модуль програми зображується у вигляді квадрата. Складаються алгоритми й для кожного модуля.

Після цього можна писати програму. Старанність виконання попередніх кроків полегшує написання програми.

Після складання програми її необхідно перевірити. Модульність програми полегшує перевірку. Кожний модуль може бути перевірений окремо. Коли всі модулі перевірені, можна з'єднати їх разом і перевіряти всю програму.

Приклад розробки програмного забезпечення

Розглянемо опис програми контролера " вогні, що біжать,".

Індикатори вихідного порту /світлодіоди/ використовуються як імітатори " вогнів, що біжать,". Контролер повинен регулювати наступну послідовність чергування горіння світлодіодів:

1. Горять світлодіоди 1, 4, 7; інші погашені.

2. Час горіння встановлених світлодіодів.

3. Горять світлодіоди 2, 5, 8; інші погашені.

4. Час горіння встановлених світлодіодів.

5. Горять світлодіоди 3, 6; інші погашені.

6. Час горіння встановлених світлодіодів.

7. Повторення процесу /перехід до кроку 1/.

На мал.1, наведений алгоритм роботи контролера.

Вихідні індикатори /світлодіоди YDI...YD8/ підключаються до шини даних за допомогою програмувального інтерфейсу.

У табл.1 показані використовувані комбінації сигналів імітування " вогнів, що біжать," на світлодіодах. Одиниця у двійковому коді сигналу означає включений індикатор.

VD1 VD2 VD3 VD4 VD5 VD6 VD7 VD8

КОД

1 0 0 1 0 0 1 0

0 1 0 0 1 0 0 1

0 0 1 0 0 1 0 0

92 16

49 16

24 16

Рис.1. Алгоритм програми послідовності горіння світлодіодів