Переривання

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

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

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

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

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

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

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

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

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

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

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

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

СТЕКУ
програми

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

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

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

Команди PUSH та POP

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

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

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

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

Для полегшення налагодження програмного забезпечення багато систем розробки включають внутрішньосхемний емулятор /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

Р

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