Смекни!
smekni.com

Мікропроцесорна техніка (стр. 9 из 17)

При поставці УУМС-2 штатна версія програми MONITOR уже розміщена в Flash-пам'яті основного мікроконтролера AT89S8252, а файл із вихідним кодом програми входить у комплект поставки.

Функціональний состав

Системна програма MONITOR складається з наступних блоків:

− штатна таблиця векторів переходу по перериваннях;

− блок ініціалізації апаратних ресурсів УУМС-2 (портів, таймерів, переривань);

− блок тестування елементів індикації УУМС-2;

− блок завантаження програми користувача (у т.ч. процедура прийому байтів програми користувача й розміщення в зовнішній пам'яті);

− блок активізації функціональної програми користувача;

− блок підпрограм формування затримок;

− блок підпрограм формування даних у двоїчно-десятковому впакованому форматі для відображення на семисегментних індикаторах;

− блок підпрограм виконання базових арифметичних операцій (додавання, вирахування, множення, розподіл) над даними, представленими в п'ятьох форматах: ціле однобайтове беззнакове, ціле однобайтове зі знаком, ціле двухбайтове беззнакове, ціле двухбайтове зі знаком, формат із плаваючою крапкою (два байти мантиси зі знаком, байт зі зміщеним порядком);

− блок підпрограм перетворення форматів даних (із целочисленого формату у формат із плаваючою крапкою й назад);

− блок підпрограм для відображення целочислених даних (без знака й зі знаком) на семисегментних індикаторах.

Штатна таблиця векторів переходу по перериваннях

У цьому блоці реалізовані переходи на елементи таблиці векторів у програмі користувача. Для переходів використані адреси, що відрізняються від штатних на 2000h. Наприклад, по перериванню від таймера 0 (штатний вектор розташований за адресою 000Bh) заданий перехід на адресу 200Bh. По перериванню від послідовного порту UART (штатний вектор розташований за адресою 0023h) виробляється перевірка ознаки активності програми користувача UP_ACT. Якщо UP_ACT=0, то в цей момент виконується програма MONITOR, і, відповідно, відбувається перехід на підпрограму UAPP_M? розташовану в MONITOR-і. Якщо UP_ACT=1, тобто виконується програма користувача, то робиться перехід на адресу 2023h, тобто на вектор обробки переривання в програмі користувача.

Блок ініціалізації апаратних ресурсів

У цьому блоці виробляється установка режимів роботи паралельних і послідовних портів, таймерів і системи обробки переривань основного мікроконтролера AT89S8252. Установлювані режими представлені в табл. 2.1. Інформація представлена в порядку завдання відповідних настроювань у вихідному тексті програми MONITOR. Для забезпечення універсальності всі коментарі у вихідному тексті програми виконані англійською мовою.

Таблиця 2.1 – Режимів роботи паралельних і послідовних портів, таймерів і системи обробки переривань

Апаратний блок або ресурс мікроконтролера Установлювані режими
Вибір активного банку регістрів Активний банк 0
Стік Дно стека – 70h, розмір стека – 16 байт, максимальна адреса вершини – 7Fh
Ознака активності програми користувача (UP_ACT) Ознака скинута (UP_ACT = 0), тому що виконується програма MONITOR
Послідовний порт 9-ти бітова посилка (8 біт даних, біт контролю парності); швидкість передачі задається програмно; посилки, у яких 9-й біт дорівнює нулю, не ігноруються
Таймери Таймери 0 й 1 настроєні на режим 2 (8-розрядний рахунковий регістр із автоперезавантаженням стартового числа).В MONITOR-і використається тільки таймер 1.Стартове число дорівнює 253 для забезпечення швидкості передачі 9600 біт/с. Значення біта SMOD - 0.Режим для таймера 2 не задаєтьсяТаймер 1 - включений
Система обробки переривань Високий пріоритет переривання від послідовного порту UART.Дозволено переривання від послідовного порту UART
Лінія P3.5 порту P3 – прийом сигналу від кнопки ПУСК про перехід на програму користувача Лінія настроєна на уведення інформації
Мікросхема портів К580ВВ55 Всі порти (А,У и С) настроєні на уведення
Порт P2 Записано старшу частину адреси блоку адрес, по яких розміщені порти зовнішніх пристроїв УНМС-2 (індикація, елементи вводу-виводу)

Блок тестування елементів індикації УНМС-2

У цьому блоці виконується тестування лінійки світодіодів, блоку семисегментних індикаторів і ЖК-дисплея.

Тестування виробляється тільки при включенні живлення УНМС-2. При натисканні кнопки СКИДАННЯ для перезавантаження системи тестування не виконується.

У ході тестування виробляється включення й відключення названих елементів індикації й користувач повинен візуально проконтролювати відображення певних даних. Порядок тестування наступний:

− відбувається очищення ЖК-дисплея;

− на лінійці світодіодів чотири рази по черзі запалюються й гаснуть ліва й права половини лінійки з інтервалом 0,4з;

− семисегментні індикатори чотири рази відображають число -8888 за схемою: включення на 0,4з - гасіння на 0,4з;

− у кожній позиції ЖК-дисплея одночасно відображається число 8 і показується протягом 2с., після чого ЖК-дисплей очищається.

Блок завантаження програми користувача

Після завершення тестування елементів індикації УНМС-2 переходить у режим завантаження програми користувача (т.зв. системний режим).

При виконанні цього блоку на лінійці світодіодів відображається "вогонь, що біжить" (час перемикання близько 0,4 с).

Коли черговий байт програми користувача переданий з ПЭВМ й отриманий послідовним портом ПЭВМ, формується апаратне переривання й викликається підпрограма його обробки (UAPP_M), у якій прийнятий байт листується з буфера послідовного порту в черговий осередок зовнішньої пам'яті, а також відображається на семисегментних індикаторах як 16-ричное число.

Також у блоці завантаження виробляється циклічно перевірка стану кнопки ПУСК (апаратний сигнал фіксується в біті M_UP). Перевірка виробляється, поки біт не прийме значення "0".

Програма користувача розміщається в зовнішній пам'яті програм УНМС-2, що фізично реалізована як ОЗУ. При роботі MONITOR-а ця область сприймається мікроконтролером як пам'ять даних.

Блок активізації функціональної програми користувача

Даний блок є останнім перед початком виконання програми користувача.

Перехід до цього блоку від попередні відбувається тільки при натисканні кнопки ПУСК (біт M_UP приймає значення "0").

У цьому блоці виконується чотириразове включення й вимикання лінійки світодіодів з періодом 0,8 з, а також наступні дії:

− виконується гасіння семисегментних індикаторів;

− зупиняється таймер 1, таким чином послідовний порт вимикається;

− установлюється в "1" ознаку активності програми користувача UP_ACT;

− активізується 1-й банк регістрів;

− виконується перехід на програму користувача за адресою 2000h.

Інші блоки програми MONITOR містять службові підпрограми, які частково використаються в самому MONITOR-і й можуть без обмежень викликатися в програмі користувача (див. табл. П1).

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

Порядок виконання програми MONITOR на УНМС-2

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

Порядок й умови виконання основних блоків програми MONITOR представлені в табл.2.2.

Таблиця 2.2 – Порядок й умови виконання основних блоків програми MONITOR

Порядок виконання Виконуваний блок Умови виконання
1 Команда стартового переходу на блок ініціалізації Включення живлення УНМС-2 або рестарт системи при натисканні кнопки СКИДАННЯ
Штатна таблиця векторів переходу по перериваннях При виникненні відповідних переривань.В MONITOR-і використається тільки переривання від послідовного порту UART
2 Блок ініціалізації апаратних ресурсів УНМС-2 Включення живлення або рестарт системи при натисканні кнопки СКИДАННЯ
3 Блок тестування елементів індикації УНМС-2 Однократно тільки при включенні живлення УНМС-2
4 Блок завантаження програми користувача в зовнішню пам'ять УНМС-2 Завершення блоку 2 (і 3 при включенні живлення). Виконується до натискання кнопки ПУСК
У рамках 4 Процедура прийому байтів програми користувача й розміщення в зовнішній пам'яті Сигнал переривання від послідовного порту UART у випадку прийому байта від ПЕОМ.
5 Блок активізації функціональної програми користувача Натискання кнопки ПУСК

Взаємодія із програмою користувача

Використання службових підпрограм MONITOR-а

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

Для виклику службової підпрограми в програмі користувача потрібно оголосити ім'я (необов'язково співпадаюче з наведеним у табл. П1) і зв'язати його з адресою розміщення потрібної підпрограми.

Наприклад, для відображення 16-ричного значення в одній позиції семисегментного індикатора можна скористатися підпрограмою SSI_1p, розташованої за адресою 0900h. Для цього в програмі користувача потрібно зв'язати довільне ім'я із зазначеною адресою, а потім використати це ім'я як адреса виклику.

Дана підпрограма очікує а акумуляторі значення числа для відображення, а в регістрі DPTR - системна адреса необхідної позиції індикатора.