9361

Мікропроцесорна лабораторія Мікролаб КР580ІК80

Конспект

Информатика, кибернетика и программирование

Мікропроцесорна лабораторія Мікролаб КР580ІК80 Вступ Даний курс призначений для вивчення елементів апаратного і програмного забезпечення систем, побудованих на базі мікропроцесора KP580ІK80. У першому розділі дані загальні принципи побудови пристрої...

Русский

2013-03-04

1.21 MB

22 чел.

Мікропроцесорна лабораторія Мікролаб КР580ІК80

Вступ

Даний курс призначений для вивчення елементів апаратного і програмного забезпечення систем, побудованих на базі мікропроцесора KP580ІK80.

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

В другому розділі на прикладі "Мікролаб КР580ІК80" розглядаються апаратні засоби мікро-ЕОМ, принципи побудови окремих вузлів. Описується взаємодія мікропроцесора з оперативним запам'ятовуючим пристроєм, з постійним запам'ятовуючим пристроєм, із клавіатурою (через пристрій вводу-виводу), розглядається організація виводу даних на індикатори.

У третьому розділі розглядається набір команд мікропроцесора КР580ІК80. Дано приклади написання програм і виконання їх на мікро-ЕОМ "Мікролаб КР580ІК80",

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

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

Заняття 1

ОСНОВНІ ЕЛЕМЕНТИ МІКРОПРОЦЕСОРНОЇ СИСТЕМИ

Мікропроцесор (МП) - пристрій, що виконує функції програмної обробки інформації, аналогічні функціям центрального процесора звичайної ЕОМ, і реалізований на одній схемі великого ступеня інтеграції (ВІС) чи у вигляді модуля, що містить декілька ВІС.

Ранні ЕОМ виконувалися з застосуванням тисяч електронних ламп. Вони були громіздкими і незручними. Наступне (друге) покоління ЕОМ будувалося на транзисторах, що зробило їх значно надійніше, зменшило їхні розміри і вартість. Це поклало початок практичному використанню комп'ютера. У 1960 р. були виготовлені маленькі і могутні ЕОМ на основі сотень вентилів, тригерів і інших подібних їм інтегральних схем - малі інтегральні схеми (МІС). В міру розвитку напівпровідникової технології стало можливим сполучити в одній  інтегральній схемі кілька десятків вентилів - середні інтегральні схеми (СІС) – (лічильник, дешифратори, регістри і суматори).

Роботи з мініатюризації ЕОМ продовжувалися, і в 1971 р. був створений перший МП. Мікропроцесорний кристал містить тисячі вентилів і є великою інтегральною схемою (ВІС).

Крім того, одержали розвиток ВІС пам'яті, що зберігають тисячі біт цифрової інформації в одному корпусі. Використання ВІС дало можливість зменшити розміри і знизити вартість невеликих ЕОМ. Застосування МП дозволило почати виробництво мініатюрних недорогих комп'ютерів. Зараз  МП застосовується в багатьох випадках там, де раніш використовували схемну логіку. Мікропроцесорні пристрої набагато дешевші і мають менше компонентів, чим їхні попередники на основі МІС і СІС. Невеликі мікропроцесорні системи можна будувати на декількох мікросхемах. Часто це заміняє плати з декількома десятками мікросхем меншого ступеня інтеграції. Внаслідок значного зменшення числа дискретних компонентів і внутрішніх зв'язків значно збільшилася надійність. Зменшення числа мікросхем МІС і СІС також можливо за рахунок використання спеціалізованих інтегральних схем замість МП. Однак розробка спеціалізованих інтегральних схем – дуже складний і дорогий процес і може бути виправдана тільки при виробництві великих серій. МП дозволяє використовувати для досягнення мініатюризації стандартні мікросхеми. Алгоритм роботи визначається програмою, що зберігається в пам'яті. Виробництво мікросхем пам'яті з регулярною топологією відносно недорого. Мікропроцесорні системи можуть здійснювати самодіагностику. Такі прилади, як цифрові вольтметри, можуть виконувати функції автоматичного усереднення по числу вимірів, додавання чи вирахування величин при кожному вимірі, самокалібрування та ін. Застосування приладів з вбудованим МП дозволяє використовувати клавіатуру замість багатопозиційних перемикачів на передній панелі і забезпечує можливість дистанційного керування. На рис.1, показана спрощена схема мікропроцесорної системи.

Мікро-ЕОМ "Мікролаб КР580ІК80", призначена для вивчення апаратної частини і програмного забезпечення, має ту ж структуру.

МП (названий також процесором) є "мозком" системи. Він містить усю логіку для розпізнавання і виконання списку команд (програми). Пам'ять зберігає програму і дані. Щоб звернутися до програми, збереженої в пам'яті "Мікролаб КР580ІК80", необхідно:

1.Відкрити мікро-ЕОМ і включити живлення, тумблер режиму поставити в положення АВТ.

2.Натиснути кнопку СБРОС - на індикаторах займуть усі нулі.

3.Натиснути кнопки 3, 0, 0 - число 0300 висвітиться на правих індикаторах.

4.Натиснути кнопку УСТ.АД. - число 0300 висвітиться на лівих індикаторах, а на двох крайніх правих індикаторах буде вміст комірки пам'яті з адресою 0300.

5.Натиснути кнопку ПУСК - почнеться виконання програми, записаної в пам'яті з адреси 0300.

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

Провідники, що відповідають однойменним розрядам усіх пристроїв системи, у кожній шині з'єднані паралельно. МП використовує адресну шину для вибору комірки пам'яті чи пристрою вводу/виводу. Вибравши інформацію з даної адреси за допомогою адресної шини, МП пересилає її по шині даних. Інформація може передаватися з МП у пам'ять і пристрій вводу/виводу, з пристрою вводу/виводу і пам'яті в МП. Слід пам‘ятати, що МП, як правило, бере участь у всіх операціях перенесення даних. Керуюча шина призначена для передачі керуючих сигналів, ознак стану периферійного устаткування і процесора. Один знак двійкової інформації (1,0) називається бітом. Електричний біт інформації - це логічний рівень напруги сигналу. Амплітуда логічних рівнів дискретна: лог.1 – високий рівень, лог.0 – низький. МП працює з даними не як з окремими бітами, а як із групами бітів, називаних "словами". Найбільш поширені МП, що оперують 8-бітними словами чи байтами. Ці МП називаються 8-бітними. Для 8-бітних процесорів байт і "слово" синоніми, однак термін "слово" використовується також для позначення групи з 16 і більше біт.

ПРОГРАМИ

Для виконання системою необхідної задачі потрібно відповідний список команд:

1). зчитати дані з клавіатури;

2). записати дані на дисплей;

З). повторити з кроком 1.

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

ДРАЙВЕРИ З ТРЬОМА СТІЙКИМИ СТАНАМИ

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

Дозвіл

Вхід

Вихід

0

0

1

1

0

1

0

1

0 – низький стан

1 – високий стан

3-й стан

3-й стан

Буфер має інверсний вхід дозволу, що працює таким чином. Коли рівень напруги на вході низький (відповідає логічному 0), дозволяється передача вхідного сигналу на вихід і буфер працює в режимі передачі, тобто сигнал із входу передається на вихід. Якщо ж на вході "високий" рівень (відповідає логічній 1), драйвер знаходиться в третьому стані, що називають станом з високим імпедансом. На рис.3, показана еквівалентна схема, що забезпечує третій стан драйвера.

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

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

 

МІКРОПРОЦЕСОР

На мал.5, показані основні сигнали типового МП. Тут ми бачимо 16 адресних ліній (А0 - А15), що утворюють шину адреси, і вісім ліній даних (D0 - D7), що утворюють шину даних. Шина адреси – однонапрямлена, тобто адреса формується центральним процесором і сигнали адреси на шину надходять від процесора до інших пристроїв. Шина даних – двонапрямлена. Це означає, що дані по ній можуть проходити в обох напрямках. Сигнали "ЗАПИС" і "ЧИТАННЯ"  керують напрямком передачі даних по шині даних, тобто визначають напрямок перміщення даних з точки зору центрального процесора. Сигнал "ЗАПИС" означає передачу даних від процесора до комірки пам‘яті чи в пристрій виведення. Сигнал "ЧИТАННЯ"  означає передачу даних до процесора від комірки пам‘яті чи пристрою введення. Сигнали "СБРОС" і "переривання" забезпечують додаткові функції керування. Сигнал "СБРОС" використовується для приведення в початковий стан внутрішніх схем МП. Сигнал  "Переривання" дозволяє МП переривати виконання поточної задачі для негайного рішення іншої задачі. Використання всіх сигналів буде описано в розділах, що стосуються апаратної частини мікропроцесорних систем. Сигнал "СИНХР" синхронізує всі пристрої в системі і встановлює темп виконання команд.

СБРОС

ПЕРЕРИВ.

СИНХР.

A0

A1

A2

A3

A4

A5

A6

A7

A8

A9

A10

A11

A12

D0

D1

D2

D3

D4

D5

D6

D7

ЗАПИС

ЧИТАННЯ

СТРУКТУРА ПАМ'ЯТІ.

В мікропроцесорних системах використовують інтегральні схеми пам'яті для збереження програм і даних. Існують мікросхеми, здатні зберігати більш 64 тис. бітів в одному кристалі. 65536-бітна пам'ять може зберігати понад 8 тис. символи або близько трьох сторінок машинописного тексту на кристалі площею близько 1см2. Найпростішим запам'ятовуючим пристроєм є тригер, що зберігає 1 біт інформації. Регістри містять кілька тригерів в одному корпусі про загальний вхід синхронізації. Технологія ВІС дозволяє розташовувати тисячі тригерів в одному корпусі, але однак при з'єднанні тисяч тригерів в одному корпусі неможливо мати окремий вивід для кожного. Для вирішення цієї проблеми використовують адресні входи для вибору потрібного нам тригера. Дешифратор, розташований у кристалі пам'яті, розшифровує адреси і зв'язує обрану комірку з виводом даних. Дешифратор перетворить двійкову адресу на виході у вісім окремих виходів, один для кожної можливої комбінації на трьох адресних лініях. Ці сигнали керують тристабільними драйверами на виході кожної комірки пам'яті (тригера). Дані з адресованої комірки поміщаються на лінію виводу даних. Такий механізм Дозволяє використовувати одну лінію даних для всіх комірок пам'яті в кристалі. Структура пам'яті може містити не тільки 1, але 4, і 8 розрядів у залежності від типу інтегральної схеми (ІС). Якщо ІС має 8 інформаційних входів, то кожна комірка пам'яті зберігає 8 бітів інформації. Незважаючи на те, що пам'ять може містити тисячі комірок, одночасно може бути доступна тільки одна. Число адресуємих комірок залежить від числа адресних ліній Якщо адресна лінія одна, то можна виділити дві комірки з адресами: 0 або 1. Використовуючи дві адресні лінії, можна вибрати одну з чотирьох комірок: 00, 01, 10, 11. Звичайне число комірок 2N, де N – число адресних ліній.

ПОСТІЙНІ Й ОПЕРАТИВНІ ЗАПАМ'ЯТОВУЮЧІ ПРИСТРОЇ

Інтегральні схеми пам'яті, використовувані в мікропроцесорних системах, поділяють на дві категорії: постійні запам'ятовуючі пристрої (ПЗП) і оперативні запам’ятовуючі пристрої (ОЗП). ПЗП – це пам'ять, з якої можна тільки зчитувати. Інформація запрограмована в неї ще при  виготовленні або за допомогою спеціальної процедури – програмування та установки її в схему. Програма, записувана в ПЗП, часто є програмою стандартного матзабезпечення. ОЗП - це пам'ять, у якій дані можуть зберігатися і змінюватися. Важливою особливістю напівпровідникових ОЗП є їхня непостійність: вони втрачають свою інформацію при відключенні живлення і неможливо визначити, яка інформація буде записана в ОЗП після його включення. Вміст ПЗП, навпаки, не може бути змінено, тому воно використовується для збереження постійної програми і постійних даних. Для тимчасових програм і збереження даних необхідно використовувати ОЗП.

ОЗП 1Кх8 містить 1024 восьмибітні комірки. Шина даних є двонапрямленою, тому що дані можуть надходити в пам'ять чи зчитуватися з пам'яті. ОЗП має додатковий керуючий вхід, названий ЗАПИС/ЧИТАННЯ. Для запису даних в ОЗП вибирається адреса, дані надходять по лініях даних і на вході ЗАПИС/ЧИТАННЯ встановлюється низький рівень. Якщо в цей момент на вході ВК (вибірка кристала) також низький рівень, то інформація заноситься в пам'ять.

Звичайно лінія запису активна при низькому рівні на ній. Це означає, що якщо рівень високий, то виробляється зчитування, якщо низький - запис. Помітимо, що цей вхід не активний до установлення ВК.

ПЗП й ОЗП бувають різних типів і з різною кількістю слів і розрядів. У наступних розділах ПЗП й ОЗП будуть розглянуті більш докладно. При використанні великих обсягів пам'яті вводиться число К=1024 (210 біт). Таким чином, вищевказана пам'ять містить 2К байтів чи 16К бітів. Тому що кожна комірка містить 8 бітів, те така структура описується як 2Кх8 ПЗП. Коли на вході ВК низький рівень, вихідні драйвери ПЗП приведені в дію. Коли рівень на ВК високий, інформаційні виходи знаходяться в стані з високим імпедансом. Тристабільні виходи дозволяють об'єднати лінії даних багатьох пристроїв і вибрати один пристрій шляхом подачі на вхід ВК низького рівня.

Урок 2

СИСТЕМИ ЧИСЛЕННЯ

У цьому розділі розглядаються десяткова, двійкова, вісімкова і шістнадцяткова системи числення. Людина звичайно працює з десятковою системою, а цифрова ЕОМ - з двійковою системою. Оскільки найбільш легке представлення двікових величин забезпечують вісімкова і шістнадцяткова системи, "Мікролаб" використовує шістнадцяткову систему для представлення двійковозакодованих програм і даних. Розглянемо загальне представлення чисел у різних системах числення.

ДЕСЯТКОВА І ДВІЙКОВА СИСТЕМИ ЧИСЛЕННЯ

Найбільш звичною для оператора є десяткова чи система з основою 10. Основа 10 означає, що одним цифровим знаком можна представити десять різних чисел: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Цифрові ЕОМ використовують двійкову чи систему з основою 2. Це значить, що однією цифрою можна представити два різних числа: 0 і 1. Це природна система числення для цифрових систем, оскільки цифровий сигнал має тільки два стани: низький і високий, котрі можуть бути інтерпретовані, як 0 и 1. У десятковій системі позиції цифр мають ваги: 100=1, 101=10, 102=100, 103=1000 і т.д. У двійкової системі 20=1, 21=2, 22=4 і т.д. Щоб перейти з двійкової системи в десяткову, десяткові числа в рядку просто складаються 11001=(lx20)+(0x21)+(0х22)+(1х23)+(1х24)=1+0+0+8+16=25.

Мал.1 показує механізм перетворення числа з десяткової в двійкову систему. Спочатку десяткове число поділяється на 2, залишок від розподілу (який у цьому прикладі дорівнює 1) стає молодшим розрядом результату (крайнім праворуч). Результат розподілу потім знову поділяється на 2, залишок буде другим розрядом результату. Цей процес продовжується доти, поки у результаті частка від розподілу не стане рівною нулю.

Bicімкова cистема числення

Оскільки двійкові числа містить більше цифр, ніж їх десятковий еквівалент, вони більш складні у використанні.. Наприклад, при записі числа "10111001" легко зробити помилку і записати "10110001".  Щоб запобігти подібних помилок, необхідне більш компактне представлення двійкових чисел. Можна було б використовувати десяткові числа, але переведення дуже незручне. На мал.2 показано представлення , що називається вісімковим, тобто системою з основою 8

3 6 2    362

011 110 010    011110010=362

Мал.2. Перетворення чисел з двійкової системи в вісімкову.

Двійкове число ділиться на групи по три розряди кожна. Кожна така група замінюється її вісімковим еквівалентом. Тому двійкове число "101001" може бути представлене як вісімкове число 51. Однак, вісімкові числа і виглядають, як десяткові, їх неможна плутати. Десятковим  еквівалентом числа 1010 є 20+23+25=1+8+32=41.  Набагато простіше провести прямі і обернені перетворення між двійковою і вісімковою системами, ніж між двійковою і десятковою.

ШІСТНАДЦЯТКОВА СИСТЕМА ЧИСЛЕННЯ

Іншим представленням двійкових чисел є їхнє представлення в шістнадцятковій системі  числення чи системі з основою 16. Кожна група з чотирьох розрядів заміняється одним символом (мал.3). Тому що чотири розряди займає представлення чисел від 0 до 15, то необхідний спосіб для представлення десяткових величин від 10 до 15. Для цієї мети використовують букви від А до F. У шістнадцятковій системі (як показано на мал.3) рахунок ведеться так: 0, 1...8, 9, А, В, С, D, E, F, 10, 11,... Перетворення між, двійковою і шістнадцятковою системами дуже легкі. Двійкове число поділяється на групи по чотири розряди, і кожна група перетворюється у відповідний символ. Щоб зробити зворотне перетворення, кожен символ заміняється чотирма розрядами. Звикнувши використовувати букву А для позначення 10, B – для 11 і т.д., можна виконувати перетворення дуже легко. Шістнадцяткова система, найбільш широко уживається і буде використана в даному навчальному курсі. Вона більш краща, ніж вісімкова, оскільки восьмирозрядне двійкове число може бути представлене двома шістнадцатирозрядними символами  й у той же час трьома восьмирозрядними. Тому шістнадцяткове представлення чисел більш компактне.

Рис.3. Шістнадцяткова система числення

ТЕРМІНОЛОГІЯ ПОРОЗРЯДНИХ ПОЗИЦІЙ

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

Урок 3

ОСНОВИ МАТЗАБЕЗПЕЧЕННЯ

Як описано в попередньому розділі, система мікро-ЕОМ складається з апаратної частини і матзабезпечення. Програма пишеться спочатку в такому вигляді, що зручний для програміста, а потім вона повинна бути переписана і зберігатися в кодах, "зрозумілих" МП. МП потім зчитує ці коди з пам'яті і виконує зазначені операції. Важливо зрозуміти, що може робити мікро-ЕОМ і чого вона робити не може.

ЧОГО "НЕ РОЗУМІЄ" МІКРО-ЕОМ  .

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

МІКРО-ЕОМ ЯК ЛОГІЧНИЙ ПРИСТРІЙ

Мікропроцесорні системи часто використовуються для заміни схем, що складаються зі стандартних логічних пристроїв. Щоб проілюструвати різницю між "запрограмованими" і традиційними логічними пристроями, розглянемо використання МП як просту схему «І». Схема «І», заснована на МП, вимагає вхідного порту для входів схеми і вихідного порту для виходів схеми (мал.1). МП, використовуючи команди, що зберігаються в пам'яті, виконує функцію «І». Оскільки схема «І» має тільки один вихід, потрібно тільки один розряд у вихідному порту.

Для схеми «І», заснованої на МП, потрібна відповідна програма. Далі приводиться список команд, що виконують функцію «І»:

1. Зчитати дані з вхідного порту.

2. Перейти на крок 5, якщо усі входи  мають високий рівень, у іншому випадку - продовжувати.

3. Встановити низький рівень на виході.

4. Перейти на крок 1.

5. Встановити високий рівень на виході.

6. Перейти на крок 1.

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

Графічно програма представлена структурною схемою, що складається з блоків різних типів, з'єднаних лініями: прямокутний блок позначає будь-які дії програми, ромбічний – ухвалення рішення. Овальний блок ставиться на початку схеми, у ньому записується назва програми, а також наприкінці схеми.

На мал.3, показана структурна схема програми для схеми «І». Стрілки показують напрямок виконання програми. Хоча структурна схема містить ту ж інформацію, що і лістинг (роздруківка) програми, вона більш наочна.

Якщо складання програми важке, структурна схема допоможе продумати, як вона повинна бути написана. Використовуючи структурну схему, можна перевірити логіку міркувань, повернутися до раніше написаної програми і швидко відновити її функції.

Проведемо експеримент, у якому "Мікролаб" виступає в ролі схеми «І», а ПЗП мікро-ЕОМ містить програму для виконання функції «І». Експеримент дозволить простежити за виконанням даної програми. Для цього необхідно:

1.Натиснути кнопку СБРОС,

2.Натиснути кнопки 0, 3, Е, О и УСТ.АД., тим самим встановити  початкову адресу програми.

3.Натиснути кнопку ПУСК - програма «І» почне виконуватися.

4.Знайти три тумблери, поміщені внизу панелі. Ці тумблери зв'язані з портом вводу і є входами схеми «І», розташовані поруч вісім світлодіодів зв'язані з портом виводу. Самий правий використовується як вихід схеми.

5.Встановити  всі три вхідних перемикачі у верхнє положення, тим самим подати високий рівень на розряди вхідного порту. Крайній праворуч світлодіод буде світитися, тому що на усіх входах високий рівень. Цей індикатор зв'язаний з нульовим бітом в порту виводу, що використовується як вихід схеми «І».

6.Змінити положення кожного з вхідних перемикачів. Індикатор перестане світитися, оскільки не на усіх входах буде високий рівень.

7.Натиснути кнопку СБРОС. Встановити  вхідні перемикачі у верхнє положення.. На виході (світлодіоди) не буде ніякого відгуку. Це значить, що виконання програми припинилося.

Мікропроцесорна система може виконувати функцію звичайної схеми «І» з одним недоліком – вона менш швидкодіюча. Програма схеми «І» складається з чотирьох команд, а "Мікролаб" вимагає близько 3 мкс для виконання однієї команди. Тому схема «І» має час затримки (час між змінами на вході і на виході), приблизно 3 мкс х 4 = 12 мкс. Звичайна ТТЛ схема має час затримки приблизно 10 нс – більш ніж у 1000 разів менше. Цей приклад ілюструє швидкодію МП у порівнянні зі звичайною логікою. Різниця тим більше, ніж складніше система. Однак часто це не настільки істотно, тому що швидкість звичайної логіки в дійсності набагато більше, ніж потрібно. Для чого використовувати таку складну систему, якщо досить звичайної мікросхеми «І»? Дійсно, якщо це єдина функція, що система повинна виконувати, потрібно використовувати схему «І». Однак МП забезпечує велику гнучкість. На його основі можна побудувати різні схеми за допомогою зміни програми, можна додати значно більше входів і функції схеми набагато ускладняться. Розглянемо, наприклад, логічний пристрій з 8-ма виходами, що діє як електронний замок. Вихід активізується, якщо входи розташовані в спеціальному порядку. Це можна здійснити, використовуючи традиційну логіку, а також мікропроцесорну систему, як для простої схеми «І». Звичайно, потрібна нова програма, більш складна, ніж програма схеми «І», але апаратна частина, крім пристроїв вводу/виводу, не зміниться. Крім того, "код" електронного замка може бути змінений за рахунок зміни програми.

МОВИ ПРОГРАМУВАННЯ

Мова, "зрозуміла" МП, на якій пишуться програми, називається машинною мовою (машинним кодом). Тому що МП має справу безпосередньо з цифровими сигналами, то команди машинної мови закодовані в двійковому коді, наприклад 00111100. Людині важко користуватися машинною мовою, оскільки запис 00111100 - мало наочний. Можна полегшити роботу, вживаючи шістнадцяткову систему, заміняючи 00111100 на "ЗС". Однак цього ще недостатньо для розпізнавання команди. Наступний крок - заміщення командного коду коротким ім'ям, названим мнемонікою. Наприклад, код "ЗС" для МП КР580ІК80 означає збільшення вмісту регістра А і позначається як INR А. Мнемоніка набагато легша для запам'ятовування, ніж машинні коди. Заміняючи кожен код мнемонікою, можна написати програму. Мнемоніка може бути легко перетворена в машинні коди після написання програми. Ось чому не обов'язково запам'ятовувати машинні коди, а мнемонічне значення кожної команди запам’ятати легко. Програми, написані з використанням мнемоніки, називають програмами мовою Асемблер. Машинна мова звичайно визначається призначенням МП і не може бути змінена. Асемблер створюється при виробництві МП для зручності програміста, але не передбачається призначенням пристрою. Наприклад можна записати INC А замість INR А і обидва вирази будуть переведені в машинний код "ЗС". Хоча Асемблер має великі переваги перед машинною мовою, але він важкий при написанні складних програм. Щоб полегшити програмування, були створені мови високого рівня. Вони схожі на англійську мову і зовсім не залежать від типу МП. Типовою командою може бути LET COUNT=10 чи PRINT COUNT. Ці команди допускають набагато більш складні дії, ніж ті, що може "зрозуміти" МП. Ось чому мікро-ЕОМ , що використовують мови високого рівня, також містять довгу складну програму (постійно зберігається в їхній пам'яті), що переводить програму з мови високого рівня на машинну мову. Прості команди, написані на мові високого рівня, можуть переводитися в десятки команд машинною мовою. Такий транслятор програми називається компілятором.

ПРИКЛАДИ ПРОГРАМУВАННЯ

На мал..4 приведена структурна схема програми, що рахує до 10. У цій програмі немає початку і кінця, вміст комірки просто наростає від 0 до 10 і потім усе повторюється (види програм і програмування будуть більш детально обговорюватися в наступних розділах).

Таблиця 1

Лістінг програми рахунка до 10 на мові BASIC

1. LET COUNT=0

Установка  комірки = 0

2. LET COUNT=COUNT+1

Збільшення комірки

3. IF COUNT=10 THEN 1

Перейти на 1, якщо комірки=10

4. GOTО 2

Перейти на 2

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

Перші рядки програми точно відповідають двом першим блокам схеми. У першому рядку в комірку пам'яті, позначену COUNT, засилається 0.Другий рядок LET COUNT=COUNT+1 - це просто спосіб позначення рахунку. Третій і четвертий рядки виконують функції перевірочного блоку. Третій рядок перевіряє, чи дорівнює COUNT 10. Якщо COUNT=10, то виконується команда, записана в першому рядку. Якщо ж COUNT≠10, то ця команда не виконується, а виконується рядок 4. Ця команда говорить: "Перейди на рядок 2". Таким чином, дві ці команди виконують дії, необхідні блоком перевірки в структурній схемі. Якщо простежити програму крок за кроком, можна побачити, як відбувається нагромадження результату рахунка.

Кожен МП має власну машинну мова, тобто власний Асемблер. У даному прикладі використовується Асемблер МП КР580ІК80, на якому розроблена "Мікролаб".

У табл.2 приведено лістинг програми рахунка до 10 мовою Асемблер.

Таблиця 2       Лістинг програми лічби до 10 на мові Асемблер

Мітка

Команда

Коментар

START:

MVI А,0

Встановити А регістр в 0

LOOP:

INR A

Збільшити А регістр

СРІ 10

Порівняти А регістр з 10

JZ START

Перейти на початок якщо

JMP LOOP

Перейти на LOOP

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

Для програми мовою Асемблер коментарі необхідні. Вони корисні для усіх, кому потрібно зрозуміти програму, чи для програміста, якому треба повернутися до цієї програми після закінчення деякого часу. Перша команда MVI А, 00 (безпосереднє засилання в акумулятор 00). Акумулятор (називається А-регістром) - це місце зберігання даних у МП. Ця команда еквівалентна команді LET COUNT=0, за винятком того, що замість імені змінної COUNT використовується позначення А для внутрішнього регістра МП. Пізніше буде сказано, чому цей регістр називається акумулятором. Зараз для простоти приймемо, що, це місце в МП, куди завантажуються нульові дані. Наступна команда INR А означає збільшення вмісту акумулятора. Акумулятор містить результат рахунка, так що ця команда еквівалентна .команді LET COUNT=COUNT+1. Усі три наступні команди виконують функцію перевірки. Команда CPI 10 (безпосереднє порівняння) означає порівняння величини в акумуляторі з числом 10. Вона не викликає переходу в залежності від результату порівняння, а замість цього встановлює спеціальний тригер, названий прапорцем, якщо величина в регістрі А дорівнює 10. Наступна команда JZ START перевіряє цей прапорець. Якщо числа рівні, ця команда визначає, що прапорець установлений, і викликає перехід на рядок з міткою START. Обидві ці команди (CPI 10 JZ, START) виконують функцію оператора IF COUNT=10 THEN 1 мовою BASIC. Остання команда JMP LOOP просто забезпечує перехід на рядок з міткою LOOP. Це еквівалентно оператору GOTO 2 мовою BASIC. Розглянута програма в машинних кодах приведена в табл.3

Таблиця 3        Програма рахунка до 10 на трьох мовах

Basic

Асемблер

Машинна мова

1. LET COUNT=0

START: MVI A,0

адреса та вміст

8000 ЗЕ код

8001 00 дані

2.LET COUNT=COUNT+1

LOOP: INR A

8002 ЗС код

3. IF COUNT=10.THEN1

CPI 10

8003 FE код

8004 ОА дані

JZ START

8005 СА код

8006 00

8007 80 адреса

4. GOTO 2

JMP LOOP

8008 СЗ код

8009 02

800А 80 адреса

Функції цієї програми не змінилися, а особливості роботи з машинною мовою тепер очевидні. Однак причина використання цієї мови істотна: МП "розуміє" тільки її. Відзначимо, що вміст комірок пам'яті приведено в таблиці в шістнадцятковому коді, а МП "розуміє" тільки двійковий код. Значить шістнадцятковий машинний код повинний бути переведений у двійковий.

Кожна комірка пам'яті в "Мікролаб" містить 8 бітів інформації (що може бути представлено двома шістнадцятковими символами). Кожна команда починається з коду операції, необхідного для виконання команди. Усі коди операцій МП для КР580ІК80 мають 8 бітів у довжину і займають одну комірку пам'яті. За КОП можуть іти 0, 1 чи 2 байти даних у залежності від команди. Перший байт (ЗЕ) за адресою 8000 - це КОП для команди MVI А. Однак це тільки частина всієї команди. Він інформує про те, що необхідно помістити інформацію в акумулятор. Далі потрібно інша комірка пам'яті для завантаження самої цієї інформації. Отже, випливає що комірка пам'яті (адреса 8001) містить 00 - дані, необхідні для засилання в акумулятор. Третя комірка містить КОП другої команди INR А. Цей КОП (ЗС) "наказує" МП збільшити вміст акумулятора. Тому що в цій команді не міститься додаткової інформації, вона займає тільки одну комірку пам'яті. Код FE - це КОП для команди порівняння CPI. Як і в команді MVI А, тут за КОП випливають додаткові дані для її виконання, яким приділяється ще одна комірка пам'яті. Внаслідок шістнадцяткового представлення інформації число 10 виражається як 0А. Команда порівнює вміст акумулятора з числом 10 і встановлює прапорець (як це було описано вище), якщо вони рівні. Команда JZ має КОП СА, що має адресу 8005. Цей КОП інформує МП про необхідність переходу, якщо прапорець установлений. У наступних двох комірках пам'яті зберігається адреса, на яку потрібно перейти. Оскільки довжина адреси для КР580ІК80 16 бітів, потрібно два комірки (по 8 бітів) для збереження адреси. Частини адреси зберігаються у зворотному порядку: молодші розряди записуються в першу чергу, старші - слідом за ними. Таким чином, адреса 8000 зберігається у вигляді 00 80. Команда Асемблера JZ START означає , що МП повинен перейти до команди з міткою START. Далі програма повинна зчитувати КОП з комірки, що відповідає мітці START (8000 у нашому випадку). Остання команда JMP LOOP закодована в такий же спосіб. Різниця лише в тім, що цей перехід не залежить від яких-небудь умов. Код такого типу переходу - СЗ. Адреса переходу (8002) зберігається в комірках пам'яті так само, як і для команди JZ.

Відзначимо, що програма машинною мовою складається з послідовностей байтів, кожний з яких може мати одне з трьох значень: КОП, дані, адреса переходу. Електричні схеми МП визначають, що повинно випливати за КОП - або дані, або адреси, і "пам'ятають" про це.

З вищесказаного випливає, що мови високого рівня набагато легші для програміста і не залежать від приватного виду МП. Однак переведені в машинний код програми займають багато місця в пам'яті; крім того, потрібно мати довгі програми - транслятори. Мови високого рівня також менш ефективні з позиції швидкості виконання операцій і розподілу пам'яті. Еквівалентна програма, написана мовою Асемблер, виконується значно швидше і займає менше пам'яті. Асемблер  широко використовується для програмування на мікро-ЕОМ. Він більш важкий для написання програм, ніж мова високого рівня, однак він легший для перекладу в машинні коди. Там, де необхідно швидше й ощадливіше виконати програми, Асемблер незамінний. Програмування на Асемблері допоможе опанувати навичками роботи з мікропроцесорними системами.

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

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

Проведемо експеримент по перевірці вмісту частини пам'яті "Мікролаб". Для цього необхідно:

1. Натиснути кнопку СБРОС;

2. Натиснути кнопку 5, 5, УСТ.АД. Це означає, що треба перевірити адреса 0055. Дані, що зберігаються по цій адресі, можна побачити на двох крайніх правих індикаторах.

3. Для перевірки наступної комірки натиснути кнопку АД +. На тих же двох правих індикаторах можна побачити вміст наступної комірка;

4. Натискаючи кнопку АД +, переглянути частину програми і порівняти її з роздруківкою програми монітора, приведеної в технічному описі "Мікролаб",

5. Простежити в роздруківці монітора відповідність машинних кодів і мнемоніки (коди команди приведені в додатку).

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

У табл.1 приведена карта пам'яті мікролабораторії. На ній показаний розподіл адрес пам'яті для кожного пристрою. ПЗП резервує адреси з 0000 по 03FF. Монітор використовує адреси з 0000 по 02FF, а 0300-03FF (265 байт) можуть бути використані для розширення можливостей монітора. Область з 0400 до 05FF також може бути використана для запису додаткових програм. Варто тільки пам'ятати, що програма в ці області може бути записана тільки програмуванням ПЗП. Програма, що займає область адрес з 0400 до 05FF, записується (шляхом програмування) у ПЗП, що знаходиться в адаптері.

ОЗП резервує адреси з 8000 по 83FF. Помітимо, однак, що не всі ОЗП доступні для наших програм. Адреси з 83С7 до 83FF використовуються програмою монітора і не можуть бути використані нашими програмами. Область користувача: з адреси 8000 по 83С6.

Урок 4

ВИКОРИСТАННЯ "МІКРОЛАБ КР580ІК80"

Мікролабораторія - мікро-ЕОМ, розроблена спеціально для цілей навчання. Вона використовує МП КР580ІК80, ПЗП ємністю 1K і ОЗП ємністю 1K. У мікро-ЕОМ є клавіатура, з якої можна вводити програми, дані для збереження, команди для керування роботою мікрокомп'ютера і дисплея, що дозволяє спостерігати вміст пам'яті і регістрів, вісім світлодіодних індикаторів і три тумблери, зв'язаних із МП за допомогою порту вводу/виводу. Генерація звуків також виконується процесором. ПЗП містить програми для зчитування з клавіатури, виконання команд і виводу даних на дисплей, тобто вся робота системи керується програмою монітора, записаною в ПЗП.

Карта пам'яті "Мікролаб

Таблиця 1 “ КР580ІК80 “

Адреси

Ємність пам'яті

ПЗП/ОЗП

Використання

FFFF

8400

31K

Невикористовувана область

83FF
83С7

57

ОЗП

Робоча область монітора

83С6
8000

967

ОЗП

Область користувача

7FFF
0600

30,5K

Невикористовувана область

05FF
0400

512

ПЗП

Область користувача

03FF
0300

256

ПЗП

Додаткова область монітора

02FF
0000

768

ПЗП

Область монітора

ПЕРЕВІРКА ПАМ'ЯТІ, ЗАПИС І ЗБЕРЕЖЕННЯ ДАНИХ

Проведемо експеримент по перевірці вмісту пам'яті.

1. Натисніть кнопку СБРОС.

2. Натисніть кнопки 8, 0, 0, 0 і УСТ.АД. Тепер чотири лівих цифри дисплея показують адресу, яку тільки що ввели, а дві крайні праві цифри показують дані, що зберігаються по цій адресі. Адреси і дані, висвітлені на дисплеї, виражені в шістнадцятковому коді.

3. Натисніть кнопку АД.+. На лівих індикаторах буде спостерігатися збільшення адреси, а на двох крайніх правих індикаторах висвітиться вміст наступної комірки пам'яті. Багаторазово натискаючи кнопку АД.+, можна переглянути вміст пам'яті.

4. Натисніть кнопку АД.-. На лівих індикаторах відбудеться зменшення адреси на 1, а на двох крайніх правих індикаторах висвітиться вміст комірки пам'яті, що відповідає цій адресі. Таким чином, натискаючи кнопку АД.-, можна переглянути вміст пам'яті в зворотному порядку.

Проведемо експеримент по записі даних у пам'ять "Мікролаб".

1. Натисніть кнопки 8, 0, 0, О и УСТ. АД. Це визначить адрес 8000, що є початковою адресою ОЗП.

2. Натисніть кнопки 0, 0, ЗП, тобто запишіть 00 у комірку пам'яті з адресою 8000. Відбулося збільшення адреси, і на лівих індикаторах видно адресу 8001. На двох крайніх правих індикаторах тепер видно вміст комірки з адресою 8001, а те, що було записано в комірку з адресою 8000, змістилося на два індикатори вліво

3. Натисніть кнопки С, 3 і ЗП, тобто запишіть дані СЗ за адресою 8001. Відбувається збільшення адреси.

4. Запишіть у наступну комірка з адресою 8002 дані 00, а в комірка з адресою 8003 - 80.

5. Натисніть кнопку АД.-. Це зменшить на одиницю адреса і на двох крайніх правих індикаторах з'являться дані, які тільки що ввели.

6. Повторіть крок 5, поки не перевірите, що весь уведений вами лістинг міститься в пам'яті.

Можна також перевірити дані, натиснувши кнопки 8, 0, 0, 0 УСТ.АД. і потім використовуючи кнопку АД.+ для перевірки послідовних комірок.

Проведемо експеримент по виправленню помилок.

1. Натисніть кнопки 0, 0, 0, 1 і УСТ.АД. - вибрали першу адреса ПЗП.

2. Натисніть кнопки 0, 0 і ЗП. Це означає, що ви намагаєтеся записати нулі в обрану комірку, а ця комірка знаходиться в ПЗП і дані туди не запишуться.

3. Щоб переконатися в цьому, перевірте вміст комірки з адресою 0001. Для цього натисніть кнопку АД. Ви побачите, що в комірки з адресою 0001 записано 92, а не 00. Таким чином, ваша помилкова дія не була сприйнята.

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

1. Натисніть кнопки 0, 9, 0. Припустимо, що в цей момент ви згадали, що адреса, що ви хочете записати, 8020. І, хоча ви вже почали вводити адресу, помилку можна виправити, натиснувши кнопки 8, 0, 2, 0 и УСТ.АД.

2. Тепер, коли ви ввели правильну адресу, можна ввести потрібні дані. Натисніть кнопки 7, 9. Ці дані з'являться на правій стороні дисплея.

3. Припустимо, що це не ті дані, що ви хотіли ввести: вам потрібно було ввести 69. Тоді натисніть кнопки 6, 9 і введіть правильні дані, а неправильні змістяться вліво і будуть загублені. Можна вводити дані безупинно, але "Мікролаб" зберігає тільки дві останні цифри. Після цього, якщо натиснути кнопку ЗП, дані запишуться в пам'ять.

4. Натисніть кнопку ЗП. Тепер записали дані 6-9 за адресою 8020.

5. Припустимо, що дані треба змінити на 68. Натисніть кнопку АД.-. На дисплеї з'явиться адреса 8020 і дані 69. Наберіть потрібні дані (68) і натисніть кнопку ЗП. У такий спосіб дані змінені.

ПРОСТА ПРОГРАМА

Дані, записані в ОЗП, приведені в табл.2, є реальною програмою.

Таблиця 2     Дані, записані в ОЗП

Адреса

Зміст

8000

00

8001

СЗ

8002

00

8003

80

Код 00, збережений за адресою 8000, має мнемонічне позначення NOP, що визначає відсутність операції. Ця команда, яка вказує її ім'я, нічого не робить (не виконує ніяких дій). Однак вона може бути використана в якості короткої тимчасової затримки. Але найбільш важливе використання її як просторовий заповнювач. Якщо пізніше треба повернутися назад і ввести нові команди в програму, що вже написана, можна замінити команди NOP потрібними командами. Якщо ви не помістили команди NOP у програму, вам доведеться переміщати великий шматок програми для того, щоб помістити одну додаткову команду.

Інша команда програми – перехід (JMP - мнемонічне позначення). Код операції – СЗ. Ця команда означає перехід до адреси, обумовленій у наступних двох байтах, пам'яті. У першому байті пам'яті міститься молодший адресний . байт, а в другому - старший адресний байт. Таким чином, адреса переходу 8000 зберігається в такий спосіб: 00 - в комірки 8002 і 80 - в комірки 8003.

Ця програма  звичайно, нічого не робить, але вона забезпечує нескінченний цикл. Структурна схема програми показана на мал.1.

Проведемо експеримент по виконанню програми користувача в автоматичному і кроковому режимах.

1. Переключіть тумблер режиму в положення КРОК. Програма буде виконуватися в кроковому режимі.

2. Введіть програму, зазначену в табл. 2.

3. Встановите початкову адресу програми 8000.

4. Натисніть кнопку ПУСК. Команда, показана на дисплеї, виконається, і дисплей покаже наступну команду. Помітимо, що, хоча може показатися, що кнопка ПУСК (у кроковому режимі) працює так само, як кнопка АД.+, їхні функції зовсім різні.. Коли використовуєте кнопку АД.+, ви просто перевіряєте вміст пам'яті. Натискаючи кнопку ПУСК (у кроковому режимі), ви інтерпретуєте вміст комірки пам'яті, висвітлене на дисплеї, як команду, що виконується МП.

Перед тим, як "Мікролаб" виконає команду, дисплей повинний показувати комірку, що містить код операції. Комірка, з якої починається виконання програми, не повинна містити дані чи адреси. Наприклад, програма (табл.1) може починатися з адреси 8000 чи 8001, але не є адресою 8002 чи 8003.

5. Тепер на дисплеї показана команда переходу СЗ. Натисніть кнопку ПУСК. Тому що це команда переходу, програма перейде до адреси 8000. Помітимо, що комірки пам'яті, що містять адресу переходу, у цьому випадку не висвітлюються, тому що, коли ви натискаєте кнопку ПУСК (у кроковому режимі), "Мікролаб" виконує цілком усю команду, що включає зчитування двох байтів в адреси переходу.

6. Натисніть кнопку ПУСК ще два рази, щоб цикл повторився.

7. Переключіть тумблер режиму в положення АВТ. Тепер програма буде в автоматичному режимі.

8. Установіть початкову адресу 8000 і натисніть кнопку ПУСК. Програма виконується (безупинно) на максимальній швидкості (приблизно 3 мкс на команду). На дисплеї нічого не міняється, тому що при виконанні даної програми (табл.2) не передбачений вивід даних на індикацію. (Як і якими командами відбувається вивід даних на індикацію, буде розглянуто нижче). "Мікролаб" не реагує також при виконанні даної програми на натискання всіх кнопок, крім кнопки СБРОС. Це проходить внаслідок того, що в даній програмі не передбачене опитування клавіатури. А з програми монітора, у якій таке опитування передбачене, ми вийшли в момент натискання кнопки ПУСК.

9. Натисніть кнопку СБРОС. Задана програма припинить виконуватися і почне виконуватися програма монітора. На індикаторах висвітяться всі нулі, і "Мікролаб" буде готовий до вводу даних.

На відміну від всіх інших кнопок, кнопка СБРОС не опитується програмним способом, а сигнал з неї заведений на вхід СБРОС МП.

ПОРТ ВВОДУ/ВИВОДУ

"Мікролаб" має порт вводу/виводу, що реалізований на програмованому периферійному інтерфейсі (мікросхема КР580ВВ55). Порти цього інтерфейсу можуть бути або портами виводу, або портами вводу., у залежності від того, як інтерфейс запрограмований. До трьох розрядів порту цього інтерфейсу підключені тумблери. Цей порт буде програмуватися як порт вводу А. А до 8 розрядів порту В підключені світлодіодні індикатори. Цей порт буде програмуватися як порт виводу, тобто МП зможе зчитувати дані з тумблерів і виводити дані на світлодіодні перемикачі.

Таблиця 3

Лістинг програми для перепису даних з порту вводу в порт виводу

Адреса

Зміст

Мітка

Команда

Коментарі

8000

ЗЕ

MVI A, 81

8001

81

8002

D3

OUT FB

8003

FB

8004

DB

START:

IN FA

8005

FA

8006

D3

OUT F9

8007

F9

8008

СЗ

JMP START

8009

04

800А

80

Щоб запрограмувати інтерфейс , як було передбачено FA - порт вводу, FB - порт виводу, необхідно подати на нього код 81 за адресою FB. Перша команда MVI А,81 означає завантаження акумулятора кодом 81. Наступна команда OUT FB записує вміст акумулятора в порт за адресою FB, тобто порт (інтерфейс) програмується. Далі йде команда IN FA, що забезпечує запис даних з порту з адресою FA в акумулятор. Команда OUT F9 означає вивід даних з акумулятора в порт виводу за адресою F9. Оскільки ця адреса в нашому випадку привласнений порту В, відбувається вивід даних з акумулятора в порт (на світлодіодні індикатори). Таким чином, програма пересилає дані з порту вводу в порт виводу. Остання. команда - перехід (JMP). Вона завершує цикл, що виконується безупинно. Отже, дані вихідного порту будуть відповідати даним порту вводу під час виконання програми. МП КР580ІК80 може адресувати до 256 портів вводу і стільки ж портів виводу. Тому для адресації портів досить два шістнадцятирічних розряди, а не чотири, як це потрібно для пам'яті.

Проведемо експеримент по виконанню програми для передачі даних з порту вводу в порт виводу.

1. Введіть програму, зазначену в табл.3.

2. Почніть виконання програми з адреси 8000.

3. Поставте тумблер порту вводу в будь-яке положення. Верхнє положення відповідає 1, нижнє - 0 .

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

5. Змініть положення тумблерів порту вводу. Дані порту виводу повинні змінитися відповідно.

6. Натисніть кнопку СБРОС. Програма зупиниться, керування перейде до монітора.

7. Змініть положення тумблерів порту вводу. Дані порту виводу не зміняться, тому що введена програма більше не виконується.

Слід зазначити, що, при бажанні, перед записом даних у порт виводу, можна зробити над ними будь-які дії, передбачені системою команд МП. Наприклад, можна зчитати дані з порту вводу, проінвертувати їх і ввести в порт виводу. Для цього в програму (табл.3) необхідно додати команду, що забезпечує інвертування даних .

Урок 5

ОСНОВНІ ПРИНЦИПИ ПРОГРАМУВАННЯ

РЕГІСТРИ МІКРОПРОЦЕСОРА

МП КР580ІК80 містить ряд внутрішніх регістрів, частина з яких може використовуватися для збереження й обробки даних. Ці регістри відрізняються від регулярних комірок пам'яті тим, що вони знаходяться усередині МП і вибираються конкретною командою (наприклад, команда MVI A вибирає акумулятор). Керування регістрами здійснюється безпосередньо (без використання шин) керуючою логікою усередині процесора. Вони найбільше підходять для тимчасового збереження і збереження проміжних результатів.

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

ПРОГРАМА МОНІТОРА “МІКРОЛАБ”

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

Коли натискається кнопка ПУСК, програма монітора змушує процесор перейти до адреси, зазначеній на дисплеї "Мікролаб". Коли натискається кнопка СБРОС, мікролабораторія повертається до програми монітора. Програма монітора дозволяє перевіряти вміст регістрів у кроковому режимі після виконання кожної команди (тобто після кожного кроку). На третьому і четвертому індикаторах, рахуючи праворуч, після виконання кожної команди (кроковий режим) висвічується вміст акумулятора. Крім того, після кожного кроку команди програма монітора записує вміст регістрів у спеціальні комірки ОЗП. Отже, можна перевірити вміст регістрів на кожнім кроці, переглянувши відповідні комірки ОЗП (табл. 1).

Таблиця 1           Адреси регістрів МП

Адреса

Регістр

83ЕВ

Акумулятор

83ЕА

Регістр ознак

83Е9

B регістр

83Е8

C регістр

83Е7

D регістр

83Е6

Е регістр

83Е5

Н регістр.

83Е4

L регістр

83ЕЗ

Покажчик стека (старший байт)

83Е2

Покажчик стека (молодший байт)

83Е1

Програмний лічильник (старший байт)

83ЕО

Програмний лічильник (молодший байт)

ПРОГРАМА РАХУНКУ

На мал.2, показана структурна схема програми, що "змушує" комірку пам'яті рахувати в двійковому коді від 0 до 255 і потім повторювати цей рахунок.

Спочатку один регістр А (в даному випадку акумулятор) встановлюється в 0. Потім вміст акумулятора записується в комірку пам'яті з адресою 8020 і збільшується на 1. Далі запис у комірку пам'яті повторюється знову. У табл.2, приводиться лістинг програми.

Програма починається з адреси 8004 замість 8000, так що потім можна додати кілька команд на початку програми (у "Мікролаб" 8000 - перша комірка ОЗП, отже, програма користувача не може починатися раніш цієї адреси). Перша команда - MVI А, 0.

Таблиця 2

Лістинг програми рахунка

Адреса

Уміст

Мітки

Команди

Коментарі

8004

ЗЕ

MVI A,0

Установка А в "0"

8005

00

8006

32

LOOP:

STA 8020

Акомірка пам'яті

8007

20

8008

80

8009

00

NOP

800А

ЗС

INR A

Збільшити А

800В

СЗ

JMP LOOP

Перехід до LOOP

800С

06

800D

80

Вона завантажує в акумулятор нулі. Наступна команда - STA 8020 пересилає вміст акумулятора в комірку пам'яті 8020. Код 32 в комірки з адресою 8006 вказує, що це команда STA. Коли процесор зчитує цей код, він "розуміє", що наступні два байти (адреси 8007 і 8008) містять адресу, по якій повинний бути записаний вміст акумулятора (у даному випадку 8020). Варто пам'ятати, що байти адреси записуються в зворотному порядку. Ця команда не змінює вмісту акумулятора, вона просто копіює дані в комірку пам'яті. За командою STA йде команда NOP, щоб зарезервувати місце для наступного використання. Наступна команда - INR А, вона збільшує вміст акумулятора. Коли досягається максимальна величина рахунка (у двійковому коді - 11111111, у шістнадцятковому - FF чи 255 - у десятковому), вміст акумулятора скидається і подальший рахунок йде з нуля. Це звичайний режим роботи двійкового лічильника.

Остання команда - перехід. Ця команда повертає програму до команди STA, адреса 8006.

Проведемо експеримент по виконанню описаної програми в кроковому режимі.

1. Введіть у пам'ять "Мікролаб" програму, приведену в табл.2. Перевірте правильність її запису в пам'ять.

2. Переключіть тумблер режиму в положення КРОК.

3. Встановіть початкову адресу програми (8004). На двох крайніх правих індикаторах з'явиться команда MVI А (код ЗЕ).

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

5. Натисніть кнопку ПУСК. Виконано команду STA 8020. Вміст акумулятора не змінився, у комірці пам'яті 8020 повинні з'явитися нулі. Щоб перевірити вміст цієї комірки, натисніть кнопки 8, 0, 2, 0, а також кнопку УСТ.АД. На двох крайніх правих індикаторах - нулі. Це вміст комірки 8020. Набираючи будь-яку іншу адресу, можна переглянути будь-яку комірку пам'яті після кожного кроку виконання програми. Набираючи відповідні адреси, можна також переглянути і вміст регістрів МП (див.табл.1).

6. Натисніть кнопку ВОЗВР. Тим самим ви повернулися до виконання вашої програми і виконали наступну команду (NOP). На індикаторах знову з'явився вміст регістра ознак і акумулятора.

7. Натисніть кнопку ПУСК. Виконано команду INR А. На індикаторі видно одиницю, що свідчить про збільшення вмісту акумулятора .

8. Перевірте вміст комірки 8020. У ній знаходяться нулі, тому що перепис одиниці з акумулятора в цю комірку ще не відбувся.

9. Натиснувши кнопку ВОЗВР., поверніться до виконання вашої програми.

10. Натисніть кнопку ПУСК, виконається наступна команда (STA 8020), тобто вміст акумулятора переписався в комірку 8020.

11. Перевірте вміст комірки 8020. Тепер там знаходиться одиниця.

12. Натиснувши кнопку ВОЗВР. і далі натискаючи кнопку ПУСК, виконайте програму по кроках. Простежте, як міняється вміст акумулятора.

ОРГАНІЗАЦІЯ ПРОГРАМ

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

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

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

Програми, що працюють на інші програми, називаються підпрограмами. Підпрограми можуть мати інші підпрограми, що працюють на них і т.д.

Приклад. На мал.3. приведена проста програма, що забезпечує запис у комірку пам'яті 8020 нулів та одиниць. У цій програмі використовуються підпрограми. Одна підпрограма використовується для запису в комірку пам'яті одиниць, інша - для запису нулів.

Основна програма містить тільки три команди: одну - для виклику підпрограми "нулі", іншу - для виклику підпрограми "одиниці". і третю - для переходу до початку.

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

Команда CALL змушує МП перейти до підпрограму. Мітки "0" і "1" визначають підпрограми і містяться по реальній адресі, коли мова Асемблер переводиться в машинний код. Перші дві команди кожної з підпрограм уже розглянуті раніше. Остання команда RET (повернення) визначає кінець підпрограми і повертає МП до виконання основної програми. У табл. 3 показана повна програма з машинними кодами.

Таблиця 3      Лістинг програми запису в комірку пам'яті нулів і одиниць

Основна програма

Адреса

Вміст

Мітки

Команди

Коментарі

8000

CD

Н

CALL 0

Підпрограма запису нулів

8001

09

8002

80

8003

CD

CALL 1

Підпрограма запису одиниць

8004

OF

8005

80

8006

C3

JMP Н

Повтор

8007

00

8008

80

Підпрограма запису нулів у комірку пам'яті 8020

8009

ЗЕ

0:

MVI A, 00

Записати в А нулі

800А

00

800В

32

STA 8020

Записати вміст А в

комірку

800С

20

800D

80

800Е

З9

RET

Повернення в основну програму

Підпрограма запису одиниць у комірку пам'яті 8020

800F

ЗЕ

1:

MVI A, FF

Записати в А одиниці

8010

FF

8011

32

STA 8020

Записати вміст А в комірку

8012

20

8013

80

8014

З9

RET

Повернення в основну програму

CALL складається з коду операції CD, за яким випливає адреса підпрограми. Адреса підпрограми зберігається в такий же спосіб, як і адреса переходу. Команда RET складається тільки з коду С9. Ніякої адреси команда не містить. Однак же МП "знає", куди повертатися, коли він зустрічає команду повернення наприкінці підпрограми. Коли виконується команда CALL, адреса повернення, тобто адреса команди, що випливає після виклику підпрограми, зберігається в спеціальному місці пам'яті, що називається СТЕК. Коли наприкінці  підпрограми зустрічається команда RET, МП одержує зі СТЕКА адресу повернення. Програма повертається до основної програми. Робота СТЕКА здійснюється майже цілком автоматично. Більш докладно СТЕК буде описаний у наступних розділах. Проведемо експеримент по використанню програми, приведеної в табл.3.

1. Введіть дану програму в пам'ять "Мікролаб".

2. Поставте тумблер режиму в положення КРОК.

3. Встановіть початкову адресу програми (8000) і натисніть кнопку ПУСК. Виконується перша команда програми (CALL 0), і відбувається перехід до підпрограми (адреса 8009).

4. Натисніть кнопку ПУСК. Виконується наступна команда, що є першою в підпрограмі. В акумулятор заносяться нулі.

5. Натисніть кнопку ПУСК. Вміст акумулятора заноситься в комірку пам'яті з адресою 8020. Перевірте вміст цієї комірки. Там записані нулі.

6. Натисніть кнопку ВОЗВР. Виконається команда RET, і ви повернетеся в основну програму (адреса 8003).

7. Натисніть кнопку ПУСК. Відбудеться перехід у другу підпрограму (адреса 800F).

8. Натисніть два рази кнопку ПУСК. В. акумулятор запишуться одиниці (FF), і вміст акумулятора перепишеться в комірку пам'яті з адресою 8020.

9. Перевірте, чи є в комірці 8020 FF.

10. Натисніть кнопку ВОЗВР. Виконається команда повернення (RET), і відбудеться перехід до основної програми (адреса 8006). По цій адресі будуть записані команди безумовного переходу до адреси 8000. Після цього програма почне виконуватися знову.

11. Натисніть кілька разів кнопку ПУСК, перегляньте програму.

ПЕРЕРИВАННЯ

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

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

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

EI - дозволити переривання, DI - заборонити переривання.

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

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

Номер

Код на шині

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

переривання

даних

програма обробки переривання

RSTO

З7

0000

RST1

CF

0008

RST2

D7

0010

RST3

DF

0018

RST4

Е7

0020

RST5

EF

0028

RST6

F7

0030

RST7

EF

0038

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

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

Урок 6

СТРУКТУРА І ФУНКЦІОНУВАННЯ МІКРОПРОЦЕСОРА КР580ІК80

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

СТРУКТУРА МІКРОПРОЦЕСОРА КР580ІК80

На мал.1, приведена спрощена структурна схема МП КР580ІК80. Акумулятор зв'язаний шиною  даних з арифметико-логічним пристроєм (АЛП). АЛП виконує всі дії з даними, наприклад такі, як збільшення чи числа додавання двох  чисел. Регістр тимчасового збереження з'єднаний з іншим входом АЛП, цей регістр недоступний програмісту. Він автоматично керується схемами керування МП. Прапорці являють собою набір тригерів, що показують результат останньої операції, виконаної АЛП. Наприклад, прапорець нуля встановлюється, якщо результат операції дорівнює нулю.

Регістр коду операції, дешифратор коду операції, програмний лічильник і пристрій керування і синхронізації використовуються для вибору команд із пам'яті і їхнього виконання. Припустимо, що повинна бути виконана команда, що зберігається в комірці з адресою 8000. Програмний лічильник через шину адреси видасть на пристрій пам'яті адресу 8000. З пам'яті на шину даних надійде вміст комірки 8000 (код операції) і МП запише його в регістр коду операції. Цей регістр передасть інформацію дешифратору коду операції, що розпізнає код і видає керуючі сигнали для схем синхронізації і керування. Схеми керування і синхронізації - це як би процесор усередині процесора. ПЗП усередині МП містить мікро код (чи мікропрограму), що точно вказує процесору, що робити, щоб виконати кожну команду. Записаний мікро код, що звичайно задається виготовлювачем МП, називаний мікропрограмою, визначає мову МП і не може змінюватися при записі програм, виконуваних процесором.

Наприклад, для команди MVI А в пристрій керування і синхронізації надходить дешифрований код операції ЗЕ. Потім збільшується адреса в програмному лічильнику. Пристрій керування визначає, що за цим кодом операції випливає байт даних, так що вміст комірки пам'яті, зазначеної програмним лічильником, зчитується в акумулятор. Мікропрограма вкаже керуючій логіці, що команда виконана. Вміст програмного лічильника збільшується, і наступний байт програми (наступний код) зчитується в регістр коду операції. Потім почнеться виконання команди.

ОСНОВНІ ОПЕРАЦІЇ МІКРОПРОЦЕСОРА

МП КР580ІК80 може виконувати чотири основних типи операцій:

1 - читання даних з  пам'яті чи порту вводу;

2 - запис даних у  пам'ять чи порт виводу;

3 - виконання внутрішніх операцій МП.

4 - передача керування іншій комірці пам'яті.

Перші два типи операцій не потребують пояснень. Третя (внутрішні операції) включає дії з регістрами (у тому числі з акумулятором) без звертання до пам'яті чи портам вводу/виводу. Наприклад, вміст одного регістра може бути переписаний в інший  регістр чи вміст регістра може бути збільшено чи зменшено. Четверта група містить у собі такі команди, як JMP,.CALL, RET.

СИНХРОНІЗАЦІЯ МІКРОПРОЦЕСОРА Й ІНФОРМАЦІЯ ПРО СТАН

Командний цикл визначається як проміжок часу, необхідний для вибірки і виконання команди. Формат команд МП КР580ІК80 містить від одного до трьох байтів. Кожен командний цикл складається з одного, двох, трьох, чотирьох чи п'яти машинних циклів. Машинний цикл потрібно щораз, коли центральний процесор звертається до пам'яті чи портів вводу/виводу. Етап вибірки в командному циклі вимагає одного машинного циклу для кожного обраного байта. Тривалість виконання командного циклу залежить від виду обраної команди. Деякі команди не вимагають додаткових машинних циклів, крім тих, котрі необхідні для вибірки команди. Однак інші команди вимагають додаткового машинного циклу для запису і зчитування даних у пам'ять чи з пам'яті й у порт  виводу чи з порту вводу. Кожен машинний цикл складається з трьох, чотирьох чи п'яти тактів. Тривалість кожного такту дорівнює тривалості одного періоду синхросигнала (тривалість такту при частоті 2 МГц - 0,5 мкс). Логічна схема синхронізації МП вимагає два незбіжних тактових імпульси Ф1 і Ф2 (мал.2). Імпульс Ф1 є тактовим імпульсом, що поділяє машинний цикл на такти.

На початку кожного машинного циклу МП виробляє сигнал СИНХР. Протягом дії цього сигналу на шину даних видається байт стану (інформація про стан). Цей байт розшифровується зовнішніми пристроями. У ньому міститься інформація про те, що буде відбуватися в даному машинному циклі: запис у пам'ять, читання з пам'яті, запис у порт, читання з порту.

ВИКОНАННЯ ПРОГРАМИ

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

Помітимо, що коди операцій і дані перемішані в пам'яті. Одна адреса може містити код, що має дві - адреси переходу, потім знову код і знову дані. Програміст повинний бути упевнений у тому, що пам'ять містить правильну послідовність кодів і даних. МП не може знайти розходження між ними. Коди, адреси переходів і дані - це просто комбінації бітів, збережених у пам'яті. Уся ця інформація зчитується тим самим способом і передається по одній і тій же шині даних. МП завжди повинний мати інформацію про те, що зчитується код операції чи дані, і обробляти їх відповідно. Процесор виходить з того, що перша комірка, що він зчитує , містить код операції. Якщо код операції вимагає байта даних, то МП "знає", що наступний байт -дані, і обробляє їх відповідним чином. Байт, що випливає за байтом даних, МП сприймає як код наступної операції. Якщо дані будуть неправильно витлумачені й оброблені як код операції, то виконання програми цілком вийде з-під контролю.

Урок 7

АПАРАТНІ ЗАСОБИ

ШИНА ТРЬОХ СТАНІВ

Драйвер трьох станів дає можливість застосовувати шину з розділеними даними. Цей принцип, залишається незмінним незалежно від числа ліній у шині. Типова шина даних має вісім ліній. Шина трьох станів подібна телефонній лінії. До такої шини можна підключати багато передавачів і приймачів. На мал.3 показана шина цифрової схеми з чотирма передавачами (драйверами трьох станів) і двома приймачами (звичайними вентилями). Драйвери трьох станів мають вихід на загальну шину, але інформація на неї надходить тільки від одного передавача, на який поданий сигнал керуючої логіки, що дозволяє. У цей момент інформація інших драйверів не має значення, тому що їхні виходи знаходяться у високоімпеданстному стані, отже, будуть ізольовані від шини

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

Описані пристрої є однонапрямленими. Це або приймачі, або передавачі. Існують також двонаправлені пристрої, що є і приймачами, і передавачами. На мал.5 показана шина з двома приймачами-передавачами. Тут показані тільки два пристрої, але їх може бути і більше. Кожен приймач-передавач має два керуючих сигнали: сигнал дозволу виходу для драйвера трьох станів і стробування даних для входу. Прикладом двонаправленого пристрою є ОЗП.

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

ШИНА ДАНИХ

Шина даних "Мікролаб" є двонаправленою 8-розрядною шиною трьох станів. МП і ОЗП є , і приймачами, і передавачами. ПЗП є тільки передавачем, порт вводу/виводу - і приймачем, і передавачем.

На мал.6 показано, як ці пристрої з'єднані із шиною даних. МП, ОЗП, ПЗП і порт вводу/виводу мають на виходах драйвери трьох станів. Входи вибору кристала дають дозвіл драйверам і викликають появу даних з обраного пристрою на шині даних.

МП у системі діє як-диспетчер, він гарантує, що у визначений момент шину використовує тільки один пристрій. Якщо МП повинний зчитати дані з ПЗП, то він спочатку забороняє свої власні виходи даних, а потім генерує керуючі сигнали, що вимагаються для підключення ПЗП до шини даних. Потім інформація з виходів ПЗП з'являється на шині даних, і МП зчитує дані. Зчитування інформації з. ОЗП і порту вводу/виводу виконується подібним чином. Щоб записувати дані в пристрій, таке як ОЗП чи порт вводу/виводу, МП спочатку поміщає записувані дані на шину даних. Потім він генерує керуючі сигнали, що посилають імпульс запису на відповідні пристрої. Імпульс потім змушує пристрій записати в себе ці дані.

Дані йдуть через МП. Наприклад, щоб передати дані з порту вводу/виводу в ОЗП, МП спочатку зчитує дані з порту, а потім записує їх в ОЗП. Через те, що дані не можуть передаватися прямо з порту вводу/виводу в ОЗП, вони повинні тимчасово запам'ятовуватися в МП.

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

У мікролабораторії шина даних має вісім ліній. МП КР580ІК80 може одночасно обробляти 8 бітів даних і називається 8-розрядним МП. Ранні МП використовували 4-розрядну шину, а деякі нові пристрої використовують 16-розрядну шину даних.

ШИНА АДРЕСИ

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

Шина адреси МП КР580ІК80 має 16 ліній, що забезпечує пряму адресацію 216 - 65536 комірок пам'яті. Ці лінії позначаються АТ., А1...А15. АТ - самий молодший біт.

ДЕШИФРАТОР АДРЕСИ

Дешифратор адреси є частиною керуючої логіки, він генерує сигнали вибору пристрою, коли на шині адреси присутні визначені адреси.

Наприклад, на мал.7 показаний адресний дешифратор для адреси 3000 (0011 0000 0000 0000 - двійковий код)

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

КЕРУЮЧА ШИНА

Весь процес координується керуючою шиною. Більшість керуючих сигналів генерується МП.

Сигнали ЧТ і ЗП - це основні керуючі сигнали МП КР580ІК80. Якщо ЧТ знаходиться на активному рівні, то виконується операція зчитування, МП сигналізує, що він зчитує дані із шини даних. Якщо сигнал ЗП знаходиться в стані лог. 0, то це означає, що виконується операція запису. МП поміщає дані на шину даних і сигналізує адресуємому пристрою запам'ятати ці дані. Основне розходження між керуючою шиною і шинами адреси і даних полягає в тім, що кожен провід у керуючій шині виконує окрему функцію, у той час як у шин адреси і даних кожна лінія передає однаковий тип інформації.

ДЕШИФРАЦІЯ АДРЕСИ ДЛЯ ПЗП

Припустимо, що дешифрація адреси потрібно для ПЗП, що містить 512 байтів (мал.9). Оскільки шина адреси містить 16 розрядів (А0-А15), а для дешифрації адреси ПЗП потрібно тільки дев'ять молодших (А0-А8), то старші розряди, що залишилися, А9-А15, інвертовані й об'єднані за схемою «І» із сигналом читання використовуються для дозволу вибору ПЗП. Інформація розрядів А0-А8 дешифрується внутрішнім дешифратором самого ПЗП, а для дешифрації розрядів А9-А15 потрібно окремий зовнішній дешифратор.

Однак більшість мікропроцесорних систем використовують більш одного кристала ЗП, тобто потрібний більш складний адресний дешифратор. Так наприклад, у "Мікролаб" три вищеописаних 512-байтних ПЗП з'єднані послідовно і відповідно мають адреси, приведені в табл.1

ПОРТ ВВОДУ/ВИВОДУ

Порт вводу/виводу в "Мікролаб" побудований на мікросхемі КР580ВВ55. Мікросхема являє собою однокристальний програмований пристрій вводу/виводу рівнобіжної інформації. Цей програмувальний периферійний інтерфейс (ППІ) призначений для сполучення МП із різними периферійними пристроями. Для цього в ППІ мається три 8-розрядних порти вводу/виводу (мал.8).Кожен порт може бути запрограмований або на ввід, або на вивід

Таблиця 1           Адреси, призначені кожному з трьох 512-байтных ПЗП "Мікролаб"

ПЗП

Адреси ПЗП

Розряди адреси 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

0

1

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1

ПЗП 0

11

0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1

5l2

513

0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1

ПЗП 1

1023

0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1

1024
1025

0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1

ПЗП 2

1535

0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1

Тепер адресні лінії повинні вказувати не тільки яке слово в кристалі буде адресуватися, але і який кристал пам'яті буде вибиратися.

Молодші 9 бітів адреси вказують комірка у кожнім кристалі, а старші 7 бітів вказують адресуємий кристал.

Відзначимо, що тільки біти А9 і А10 відрізняються друг від друга при дешифрації одного кристала. На мал.10 показано, як виконується розглянута адресація.

Молодші 9 бітів адреси безпосередньо надходять на адресні лінії всіх трьох ПЗП. Це зв’язано тим, що. ці біти вказують комірку в сурдині кристала. Потім дешифратор адреси "розглядає" 7 старших бітів адреси і генерує сигнали ВК. Два молодших біти старшої половини А9 і А10 використовуються для вибору кристалів. Старші біти, що залишилися, використовуються для дозволу дешифратора тільки тоді, коли вони усі знаходяться в низькому стані. З цього випливає, що керуючий сигнал ЧИТАННЯ використовується як сигнал дозволу дешифратора. Це еквівалентно об'єднанню за схемою «І» цього сигналу з кожним виходом дешифратора .

Принцип дешифрації в "Мікролаб" аналогічний описаному. Однак дешифратор виконаний на інших логічних елементах і тому виглядає трохи складніше.

Урок 8

КЕРУВАННЯ О3У

ОЗП дешифрується так само, як ПЗП, за винятком деяких додаткових керуючих схем запису і зчитування. Крім входу ВК, ОЗП має вхід ЗАПИС.

Таблиця 2

Таблиця істинності ОЗП

ВК

ЗАПИС

Функція

0

0

Запис

0

1

Читання

1

0

Кристал не обраний

1

1

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

ДЕШИФРАЦІЯ АДРЕСИ

СТРУКТУРА АДРЕСАЦІЇ МІКРОПРОЦЕСОРНОЇ ЛАБОРАТОРІЇ

Мікропроцесорна лабораторія КР580ІК80 містить у собі блок пам'яті, що складається з ОЗП і ПЗП. У табл.1 показана карта пам'яті мікро-ЕОМ.

В основному обсязі пам'яті монітору приділяються адреси з 0000 по 02FF. Але можна розширити цю область до 03FF, запрограмувавши відповідний ПЗП.

Для ОЗП ємністю 1Кбайт відведені адреси з 8000 по 83FF, у яких старші 57 байт належать до робочої області монітора, а інші можуть використовуватися на вибір користувача.

Інші адреси, крім визначених вище, не використовуються і залишаються в розпорядженні користувача, тому що всі шини адреси і даних виводяться на виходи плати мікро-ЕОМ для стикування з зовнішнім пристроєм.

У "Мікролаб" використовуються кристали ОЗП 1Кх1, тобто для того, щоб організувати пам'ять 1Кх8, необхідно вісім кристалів, з'єднаних паралельно, як це і реалізовано в "Мікролаб". Адресні і керуючі сигнали надходять паралельно на усі вісьмох кристалів ОЗП, а лінії даних цих кристалів утворять 8-розрядну шину даних.

АПАРАТНА ЧАСТИНА СХЕМИ ДЕШИФРАЦІЇ

Розглянемо принцип роботи схеми дешифрації адреси, що складається з дешифратора (ДО155ІД4) і логічних схем (мал.1). Принципова електрична схема приведена в додатку.

Якщо на входах дозволу дешифратора D27 (ніжки 2 і 14) з'являється сигнал лог.0, то дешифратор відкривається. Тоді на усіх виходах дешифратора з'являються лог.1, крім одного лог.0 у залежності від комбінації на адресних входах (13, 3, 1, 15) дешифратора. Цей нульовий сигнал і дозволяє вибір потрібної ОЗП чи ПЗП відповідно до сигналів, що дозволяють читання/запис ОЗП, читання ПЗП.

Таблиця 1.                         Карта пам'яті мікро-ЕОМ

Адреси

Ємність пам'яті

ПЗП/ОЗП

Використання

у двійковому коді по розрядах

у шістнадцятковому коді

11111111 10000100

FFFF 8400

31К

Невикористана область

10000011 10000000

83FF 8000

ОЗП

Область користувача

01111111 00000100

7PFF 0400

31К

Невикористана область

00000011 00000011

03FF 0300

256

ПЗП

Додаткова область монітора

00000010 00000000

02FF 0000

768

ПЗП

Область монітора

З встановленням рівня лог.0 на входи мікросхем D48(15), D49(15) дозволяється вивід інформації з ОЗП на шину даних.

Для узгодження ОЗП з двонаправленою шиною даних використовується двонаправлений шинний формувач (мікросхеми D48, D49). У випадку відсутності лог.0 на вході УВ шинні формувачі або знаходяться в режимі заборони, тоді їхні вихідні значення знаходяться в третьому стані, або в режимі вводу інформації в ОЗП, тоді проводиться запис даних.

Вибір цього режиму, здійснюється відповідно до сигналу ЗАПИС, що надходить із процесора. На входи ОЗП (ніжка 3) приходить лог.0, що дозволяє запис в ОЗП (мікросхеми D53 - D36, D38 - D41).

За вибір комірки ОЗП чи ПЗП відповідає старший розряд адресної шини А15. ВК із групи ПЗП в кінцевому рахунку виконується адресним  розрядом А9, що надходить на дешифратор відповідно до табл.2.

Таблиця 2         Адресація кристалів ПЗП

А15

А9

D45

D46

0

0

0

1

1

0

0

1

ДЕЯКІ СПОСОБИ ДЕШИФРАЦІЇ

Для виконання дешифрації адреси можна використовувати інші способи. Вибір способу залежить від безлічі факторів, таких як обсяг пам'яті, число периферійних пристроїв, типи використовуваних пристроїв вводу/виводу  і ЗП. Деякі пристрої мають виводи,  що дозволяють, використовувані при дешифрації адреси.

ДЕШИФРАЦІЯ ЛІНІЙНОГО ВИБОРУ.

Лінійний вибір, найпростіший спосіб дешифрації, не використовує логіку дешифрації адреси. Старші розряди шини адреси діють безпосередньо як сигнали вибору кристала. На мал.2 показаний приклад дешифрації лінійного вибору, ОЗП вибирається щораз, коли А15 знаходиться у високому стані (лог.1). Це відповідає всім адресам від 8000 до FFFF. ПЗП вибирається щораз, коли А14 знаходиться у високому стані, що відповідає адресам 4000-7FFF. Однак ПЗП також вибирається, якщо А14 і А15 знаходяться у високому стані, що відповідає адресам COOO-FFFF. Це перекриває адресний простір ОЗП. На обидва пристрої надходить сигнал дозволу, якщо робиться спроба зчитувати інформацію з однієї з цих адрес .

Це викликає збій шини, що є недоліком схеми лінійної дешифрації. Цей спосіб зручний для дешифрації ЗП, периферійних плат, де знаходяться  перемикачі чи перехідники, що встановлюють адресу кожної плати в системі. Вентилі, що виконують функцію "роздільне АБО", також використовуються для виконання функції компаратора.

Недоліком способу є втрата великого адресного простору. Тому цей метод обмежується невеликими системами дешифрації.

ДЕШИФРАЦІЯ ЗА ДОПОМОГОЮ ЛОГІЧНОГО КОМПАРАТОРА

Найбільш простий і гнучкий спосіб дешифрації - дешифрація за допомогою логічного компаратора. При цьому вибирається одна частина з 2 можливих адресних полів з N адресних входів. На мал.3 показана схема, що генерує один сигнал вибору, пристрою і шість старших адресних бітів системи. Кожен вхід А компаратора порівнюється з відповідним входом В. Коли всі 6 пар входів співпадають, вихід компаратора переходить у низький стан. Для встановлення логічного рівня на входах В компаратора використовуються перемикачі

Урок 9

ЗАПАМ'ЯТОВУЮЧІ ПРИСТРОЇ І ПЕРИФЕРІЙНІ ПРИСТРОЇ

ЗАПАМ'ЯТОВУЮЧІ ПРИСТРОЇ

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

ОПЕРАТИВНІ ЗАПАМ'ЯТОВУЮЧІ ПРИСТРОЇ

ОЗП використовуються в програмувальній частині пам'яті користувача для запам'ятовування даних майже у всіх системах з Мікро-ЕОМ . Існує два типи ОЗП: статичні і динамічні.

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

У динамічних ОЗП для збереження інформації використовують конденсатор. У конденсаторі запамятовується  заряд, ідентифікуючий лог.1, відсутність заряду модифікує лог.0. Цей метод простіше, однак конденсатор може втратити свій заряд, і через кілька мікросекунд лог.1 може стати лог.0. Тому заряди повинні регенеруватися. Регенерування полягає в зчитуванні послідовності адресних комірок ОЗП за певний час. У процесі зчитування даних кристал ОЗП автоматично переписує ту ж саму інформацію в комірку, що зчитується. У результаті всі лог.1 відновлюються до повного заряду, а всі лог.0 - до повної відсутності заряду. Динамічні ЗП звичайно регенерують, принаймні, кожні 2 мкс.

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

ОЗП мікропроцесорної лабораторії побудовано з використанням статичного ЗП ємністю 1К біт. Воно побудовано на МДП ВІС К565РУ2 з організацією 1Кх1 бітів. Щоб одержати 8-розрядне слово, треба взяти 8 таких ЗП. На мал.1 показана схема з'єднання кристалів ОЗП в "Мікролаб"

ПОСТІЙНІ ЗАПАМ'ЯТОВУЮЧІ ПРИСТРОЇ

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

Існують чотири різних типи ПЗП.

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

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

Існують також стираємі ППЗП, подібні ГЗП. Дані в них можуть стиратися і перепрограмуватися. Програмуємі біти запам'ятовуються як заряд конденсатора з нульовим витоком.

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

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

ПЗП мікролабораторії реалізовано на двох біполярних мікросхемах ППЗП КР556РТ5 з організацією 512х8 бітів (мал.2). Передбачено можливість збільшення ємності ПЗП до 1,5К байта, для чого необхідно додати 1 мікросхему в адаптер для ПЗП. 768 байтам ПЗП (у який записана програма монітора) приділяються адреси від 0000 до 02FF. Інформація в цій області пам'яті не може бути змінена користувачем за допомогою перезапису.

Для зміни його вмісту необхідні нові мікросхеми ПЗП з занесеною в них постійною програмою користувача, що у цьому випадку буде грати роль монітора системи. Якщо ж користувачу потрібно розширити функції системи без зміни вже закладених у неї можливостей, то його додаткова постійна програма може розташовуватися по адресах від 0300 до. 03FF.

ПЕРИФЕРІЙНІ ПРИСТРОЇ МІКРО-ЕОМ

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

ПРОГРАМУВАЛЬНИЙ ПЕРИФЕРІЙНИЙ ІНТЕРФЕЙС І КЛАВІАТУРА

У "Мікролаб" клавіатура сполучена із системою через ППІ (ВІС КР580ИК55). Засобом керування всіма операціями системи є програма монітора. Усі функції монітора задаються за допомогою простих операцій клавіатури. Мікро-ЕОМ має на передній панелі .25 клавіш і перемикачі режиму роботи, що забезпечують прямий і зручний зв'язок з мікропроцесорною системою без яких-небудь додаткових апаратних засобів. Клавіатура має матричну організацію ЗП, крім кнопки СКИДАННЯ. Опитування й обробка її кодів виконується програмою монітора за допомогою мікросхеми D37 – ППІ. Мікросхема D37 містить три програмувальних 8-розрядних шини - введення/виведення, що відповідають трьом портам, і може працювати в різних режимах, що задаються програмою. У "Мікролаб" ППІ встановлюється програмою монітора в режим для сканування клавіатури.

Функціонально цей режим забезпечує наступну конфігурацію: дві 8-розрядні шини (порт А і В) та дві 4-розрядні шини (порт С). Кожна з них може працювати як у режимі введення, так і в режимі виведення, що визначається керуючим словом. У МІКРО-ЕОМ 4 старших біти шини порту С програмуються на виведення, а порт А- на введення. Програма монітора видає по черзі на С-виходи мікросхеми D37 (виводи 13, 12, 11). негативні імпульси, зчитуючи після кожного виведення інформації з порту А (мал.3). Кожен розряд порту С з С-виходів надходить через буферний каскад D8 на 8 кнопок (ряд). Кожен вхід порту А є з’єднанням трьох кнопок з різних рядів (мікросхеми D56-D58). У випадку, якщо жодна з кнопок ряду, на який поданий низький рівень, не натиснута, у порт А надійде код FF (шістнадцятковий формат), якщо ж натиснута хоча б одна кнопка, то у відповідному розряді порту А з'явиться лог.0. З огляду на номер ряду і розряду порту А, в якім при введенні був лог.0 , монітор формує код натиснутої кнопки і звертається у відповідності з ним  до потрібної підпрограми, що виконує відповідну цій кнопці операцію.

До восьми розрядів порту В підключені світлодіодні індикатори. Цей порт буде програмуватися як порт виведення.

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

До нульового розряду порту В крім світлодіодів підключений гучномовець, тобто, склавши певним чином програму, можна змусити гучномовець звучати.

ПРИСТРІЙ ІНДИКАЦІЇ

Вихідним пристроєм, що служить для візуального спостереження за внутрішнім станом системи, у МІКРО-ЕОМ є вісім восьмисегментних індикаторів табло VD1 - VD8. На них відображаються вхідні дані, адреси пам'яті, дані пам'яті, зміст регістрів центрального процесора ЦП і прапорців станів відповідно до операцій клавіатури. Інформація відображається .на індикаторах у шістнадцятковому коді. Індикація інформації динамічна. Дані на індикатори передаються з восьми старших комірок ОЗП з адресами 83F8-83FF за допомогою прямого доступу до пам'яті без участі ЦП. У кожній з цих комірок ОЗП знаходиться восьмисегментний код, що відповідає своєму індикатору.

Схема керування запитом шин складається з генератора імпульсів, зібраного на транзисторах Т2, ТЗ, час елементами, що задають, якого є резистори R56, R58 і конденсатор С6. На виході мікросхеми D54.4 (виведення 16) формується сигнал "Зхв.ш" (захоплення шини), що надходить на ЦП (D11, виведення 13), тривалістю 3-5 мкс із періодом повторення 1-2 мск. Цей імпульс також надходить на лічильник D51, який використовується для сканування адрес восьми комірок ОЗП, де запам'ятовуються дані для індикатора і синхронного підключення живлення до відповідного індикатору. Поки ЦП знаходиться в режимі захоплення шин, викликаного цим імпульсом, на його виході "Птр.Зхв." (підтвердження захоплення) є присутнім рівень лог.1. у цей час дані для відповідного індикатора надходять з відповідної комірки ОЗП в тригер - подачі даних (D50) по спаду сигналу "Зпр.ш" (запит шини) і висвічуються індикатором. Подібним чином з інтервалом 1-2 мск. висвічуються всі 8 індикаторів.

ПЕРИФЕРІЙНІ ІНТЕРФЕЙСНІ КРИСТАЛИ

З використанням різноманітних ВІС (кристалів введення/виведення) спрощується сполучення, зменшується кількість компонентів, зменшується вартість і збільшується ефективність системи. Найпростішим з таких кристалів є розглянутий вище ППІ. Він являє собою 40-вивідну ІС, що містить 3 шини введення/виведення (мал.4). Кожна із шин використовується як вхідна чи вихідна шина. Напрямок кожної шини керується регістром на кристалі. Програми-ініціалізації, що знаходиться в ПЗП системи, установлює керуючий регістр у потрібну комбінацію вхідних і вихідних шин. Такі ВІС є дуже гнучкими, так як кожна шина може змінюватися програмою. Крім того, вони звичайно включають керуючу логіку для синхронізації роботи.

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

Є також різноманітні спеціалізовані інтерфейсні кристали, що включають контролери гнучких дисків, контролери ЕПТ, контролери ЗП з прямим доступом, контролери клавіатур і дисплея. Багато хто з цих ВІС є навіть більш складними, чим МП. Деякі з- них використовують для керування внутрішніми функціями МП загального призначення.

Рис.4. Периферійний інтерфейсний пристрій, що містить три 8-розрядних шини введення/виведення.

Послідовні входи і виходи (мал.5), універсальні асинхронні передавачі і приймачі. Вони приймають байт даних із МП, а потім видають його по одному біті, тобто діють подібно регістру паралельно-послідовного введення/виведення. Крім того можуть автоматично вводитися біти старту, зупинки  й інші синхронізуючі і керуючі сигнали.

Формат керується керуючим регістром, подібним до розглянутого для ППІ.

Урок 10

СИГНАЛИ КЕРУВАННЯ В МІКРОПРОЦЕСОРНІЙ СИСТЕМІ

СХЕМИ КЕРУВАННЯ

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

Для виконання команд МП КР580ІК80 потрібно 1-5 машинних циклів. На початку кожного циклу на шину даних видається байт стану (протягом дії сигналу СИНХР.) Тому що інформація про стан видається з ЦП на шину даних на протязі коротких інтервалів часу, то необхідно подбати про її збереження. У типовій структурі системи КР580ІК80 для збереження байта стану і його дешифрації використовується спеціальний системний контролер.

У мікролабораторії системний контролер складається з двонаправленого шинного формувача, підключеного до системної шини даних, і регістра станів D14, виходи якого відповідають стану ЦП у поточному машинному циклі. Стробірування регістра виконується в момент приходу синхроімпульсу Ф1 (ТТЛ) і синхросигнала СИНХР., тобто під час видачі процесором на шину даних інформації про стан. З цієї інформації і сигналів ЦП (ВИДАЧА, "Птр.зхв", ПРИЙОМ) одержують стандартні команди мікропроцесорної системи: "Птр.пр" (підтвердження переривання), "Чт." /читання/, "Зп." /запис/, "Чт.ЗП", "Зп.ЗП".

ІНШІ КЕРУЮЧІ СИГНАЛИ

Синхроімпульси

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

У мікролабораторії генератор зібраний на трьох інверторах D1. Елементом, що задає час, є ємність С, що задає частоту генерування, рівну 18 МГц. З виходу генератора сигнал надходить на вхід С  зсувного регістра D3, що виконує роль подільника вхідної частоти. Коефіцієнт розподілу дорівнює 9 і визначається зворотними зв'язками з виходів регістра через мікросхему (8 І-НІ) на вхід Р. На кожному виході регістра з'являються негативні імпульси, зсунуті щодо сусіднього розряду на t=1/18 мкс і з частотою проходження 2 МГц (18/9 МГц). Вихідні імпульси з 1-го і 0-го розрядів регістра надходять на вентиль і формують синхроімпульс Ф1 (ТТЛ-рівня). .Синхроімпульс Ф2 (ТТЛ) формується сигналами, що надходять з 3-го і 7-го розрядів регістра на RS-тригер.

Сигнал УСТАНОВКА

У блок центрального процесора входить схема формування сигналу УСТАНОВКА. Скидання може виконуватися двома способами: автоматичне скидання при включенні живлення і ручне скидання, здійснюваний натисканням кнопки СКИДАННЯ на передній панелі, при цьому сигнал лог.0  надходить на D-вхід тригера D4 і проходить (із приходом на Т-вхід тактового імпульсу  f=2 МГц ) на вихід, де тримається протягом часу, кратного періоду синхроімпульсу Ф2,

Сигнал ГОТОВНІСТЬ

Як було відзначено, дії процесора синхронізуються основним тактовим генератором. Період синхронізації регулює розподіл часу на всі дії обробки. Однак швидкість циклу обробки обмежена часом звертання до пам'яті. Якщо процесор послав адресу зчитування на запам'ятовуючий пристрій, то він не може продовжувати роботу, поки не відповість запам'ятовуючий пристрій. Багато запам'ятовуючих пристроїв можуть відповідати набагато швидше, ніж вимагає цикл обробки. Однак деякі не можуть видавати адресуємий байт у мінімальний час, установлюваний тактовим генератором процесора. Тому процесор повинний мати засоби для синхронізації, що дозволяє запам'ятовуючому пристрою запитувати стан чекання. Якщо запам'ятовуючий пристрій приймає сигнали ЗЧИТУВАННЯ чи  ЗАПИС, то він встановлює сигнал запиту в лінії ГОТОВНІСТЬ процесора, тимчасово перериваючи його роботу. Після того, як запам'ятовуючий пристрій отримав час для відповіді, він звільняє лінію ГОТОВНІСТЬ процесора, і цикл команди продовжується.

Коли вхід сигналу ГОТОВНІСТЬ переходить у низький стан, МП переходить у стан чекання. У цьому стані шини залишаються до тих пір, поки сигнал ГОТОВНІСТЬ знову не перейде у високий стан. Стан чекання дозволяє застосовувати повільні ЗП і пристрій введення/виведення.

У мікролабораторії вихід сигналу підтвердження того, що ЦП знаходиться в стані чекання, з'єднаний із входом сигналу ГОТОВНІСТЬ. Таким чином, МП знаходиться в стані чекання протягом одного такту, тобто протягом одного періоду синхросигналу.

Сигнал ЗАХОПЛЕННЯ ШИН

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

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

Прямий доступ до пам'яті - це метод перенесення даних безпосередньо між пам'яттю і периферійним пристроєм. Через МП не проходять. Це забезпечується керуючим входом "Зхв.ш" МП. Коли ця лінія знаходиться у високому стані, МП закінчує машинний цикл, виконуваний тепер, і потім зупиняється, щоб перевести лінію "Птр.зхв." у високий рівень. Усі виходи шин МП (адресної, даних і керування) переводяться у високоімпеданстний стан. Тепер периферійні пристрої можуть керувати цими шинами і виконувати всі потрібні перенесення даних. Коли лінія "Зхв.ш." установлюється периферійним пристроєм в низький стан, МП продовжує роботу з тієї крапки, де він зупинився.

Для видачі адресних і керуючих сигналів периферійний пристрій повинний мати керуючий пристрій для прямого доступу до пам'яті. Наявні кристали контролера прямого доступу до пам'яті (ПДП), що виконують цю функцію. Якщо МП системи має ПДП, то всі буфери шин повинні мати три стани. Лінія "Птр.зхв" забороняє виходи буферів і дозволяє контролеру ПДП використовувати ці шини.

ПЕРЕРИВАННЯ

Як спосіб поліпшення роботи процесора в багатьох ЦП включаються засоби переривання. Переривання дозволяють зовнішній апаратній частині запросити в процесора негайне виконання якихось дій. Вони переривають звичайний хід програми і передають керування на спеціальну програму матеріального забезпечення.

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

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

B КР580ІК80 є тригер дозволу переривання, що може бути встановлений чи скинутий. Якщо тригер знаходиться в нульовому стані, то система переривань блокована і запити переривань не сприймаються. Коли ЦП сприймає запит переривання від зовнішнього пристрою, відбувається наступне:

1 - закінчується виконувана команда;

2 - скидається біт дозволу переривання;

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

Пристрій, що перериває, звичайно формує команду RST, що представляє собою команду виклику однієї з восьми 8-байтових підпрограм, розташованих у перших 64 комірках пам'яті. Вхід запиту переривання здійснює це переривання. Схема, що запитує переривання, видає код на шину даних, вказуючи адресу обслуговування переривання, на якій і відбувається перехід. У мікролабораторії переривання забезпечує роботу системи в кроковому режимі. Тумблер встановлюється в положення КРОК, і при натисканні кнопки ПУСК сигнал приходить на вхід запиту переривань МП. МП, виконавши одну команду, зупиняє подальше виконання програми, що не відновляється доти, поки не буде натиснута кнопка ПОВЕРНЕННЯ. У цей час виконується підпрограма обробки переривання і відбувається виведення на дисплей вмісту акумулятора і регістра стану (прапорців).

НАВАНТАЖЕННЯ

Одним з факторів, гарантуючих роботу логіки є вихідне навантаження. Вихід вентиля може подавати тільки обмежений по величині струм і, якщо схема змушена видавати більший струм, то вона перестає правильно діяти. Якщо схема значно перевантажена, то логічні рівні можуть змінитися, а вентиль перегрівається і згоряє.

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

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

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

ПРОГРАМНІ ЗАСОБИ

СИНХРОНІЗАТОР

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

На мал.1 показана синхронізація операції запису. Перед виконанням будь-якої операції адреса повинна бути стабільна якийсь час (час вибору). Це дозволяє дешифраторам внутрішньої адреси пам'яті вибирати певні комірки пам'яті. Дані повинні бути стабільними певний період часу (називаний часом установки) перед виконанням запису, а також після імпульсу запису (час затримки).

Основною одиницею синхронізації є стан, що триває один період синхроімпульсу. Один машинний цикл складається з 3-5 станів. Більшість простих операцій вимагає одного машинного циклу. Цикл команди - це час, необхідний для виконання всієї команди. Він складається з 1-5 машинних циклів.

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

Урок 11

РЕГІСТРИ І ПЕРЕРИВАННЯ

ОПИС КОМАНД

Для опису команд уведені деякі скорочення. Термін данні введений для позначення восьми розрядів даних, адрес - для позначення в 16 розрядів адрес (повний опис команд МП КР580ІК80 приведено в додатку)

Команди маніпулювання з даними MVI, INR, СМА

Однією з основних задач МП є завантаження акумулятора даними. Це виконується командою MVI А [дані] (безпосереднє завантаження акумулятора). Дані завантажуються в акумулятор, запам’ятовуються в байті, що випливає за кодом.

Після того, як дані введені в акумулятор, необхідні команди для роботи з ними. Раніше використовувалися дві команди: INR А (збільшення вмісту акумулятора), СМА (інвертування вмісту акумулятора).

Команди перевірки і переходу CPI, JZ, JMP

Щоб перевірити вміст акумулятора, використовується команда CPI [дані] (безпосереднє порівняння) . При цьому порівнюються дані, зазначені в другому байті команди, із вмістом акумулятора, і, відповідно, установлюються прапорці процесора. Дотепер використовувався тільки нульовий прапорець, що встановлюється, якщо в результаті операції отримується нуль. Команда JZ [адреса] (перехід, якщо 0) перевіряє нульовий прапорець, попередньо встановлений попередньою командою, такою як CPI, і викликає перехід при встановленому прапорці . Команда безумовного переходу JMP [адреса] викликає перехід незалежно від стану прапорця. Адреса переходу обох команд запам'ятовується в двох байтах пам'яті, що випливають за кодом операції.

Команди передачі між акумулятором і пам'яттю LDA, STA

Команди LDA [адреса] (завантаження акумулятора) і STA [адреса]. (запам'ятовування вмісту акумулятора) передають дані між акумулятором і пам'яттю. Адреса комірки пам'яті вказується в двох байтах, що випливають за операційним кодом.

Команди зв'язку з підпрограмою CALL, RET

Для використання підпрограм потрібно дві команди. CALL [адреса]. використовуються для переходу до підпрограми, a RET (повернення) використовується для закінчення підпрограми. Команда CALL вказує адресу так само, як команда переходу. Команда RET не вказує, адреси, але викликає перехід до команди, що випливає за попередньо виконаною командою CALL.

Команди керування перериваннями EI, DI

Команда EI (дозвіл переривань) дозволяє обрані переривання. Команда DI (заборона переривань) забороняє всі переривання.

Щодо невеликого набору команд, перерахованих вище, характеризують основні можливості МП КР580ІК80. Однак система команд цього МП включає значно більше число команд, що полегшує написання програм. Аналогічно при конструюванні апаратної частини можна здійснити будь-який логічний ланцюг при використанні вентилів І-НІ. Однак апаратна частина спрощується з використанням таких пристроїв, як вентилі АБО-НІ, тригери, мультиплексори, лічильники і суматори.

РЕГІСТРИ ЗАГАЛЬНОГО ПРИЗНАЧЕННЯ

У МП КР580ІК80 є шість 8-розрядних регістрів, що використовуються для тимчасового запам'ятовування даних. На мал.1 показана структурна схема МП КР580ІК80, що включає ці регістри (B,C,D,E,H і L) і регістр, покажчик стека.

Для використання цих регістрів необхідні деякі нові команди. Команда MVI, що завантажує дані в акумулятор, може бути використана з будь-яким регістром. Наприклад, MVI D [дані] забезпечує запис даних у регістр D. Загальною формою запису цієї команди. є MVI R [данні] , де R -будь-який регістр (А, В, С, D, E, H, L). Хоча акумулятор є спеціальним у змісті використання для результатів обчислень, він також може бути використаний як регістр загального призначення.

Команда INR також може бути використана з будь-яким регістром. Загальною формою запису є INR R. Наприклад, INR H нарощує вміст регістра H. Дані можна переміщати з одного регістра в іншій. Це виконується командою MOV R1, R2. Регістр R1 є місцем призначення, а R2 - джерелом. Наприклад, MOV А,Н переносить вміст регістра Н в акумулятор, але вміст регістра Н не міняється.

Регістри загального призначення зручні, коли програма використовує трохи різних перемінних. Кожен регістр може бути використаний для визначеної мети. Немає необхідності використовувати комірки ОЗП для запам'ятовування даних доти, поки досить 6 регістрів. Наприклад, програма, що зчитує 6 різних подій, може використовувати один регістр для рахунка кожної події.

НЕПРЯМА АДРЕСАЦІЯ

У додатку в командах MOV записаний регістр М. Однак це не реальний регістр. Так позначається комірка пам'яті, адреса якої запам'ятовується в регістрах Н и L. Така адресація називається непрямою, тобто команда вказує, де запам'ятовується адреса, а не дійсна адреса (у даному випадку регістри Н и L). Наприклад, якщо регістр Н містить 12, а регістр L - 37 (рис. 2) команда MOV A, M буде завантажувати в акумулятор вміст комірки пам'яті з адресою 1237. Результат буде той же, як при команді LDA 1237. Це являє приклад того, як одна операція може бути виконана двома способами. МОV А,М яка є командою, записаною у програмному лічильнику. На індикаторі даних у двох правих розрядах висвічується вміст флангового регістра, а в у двох лівих - вміст акумулятора.

Таблиця 1

Приклади програми

Адреса

Данні

Команди

Коментарі

8000

06

MVI В,37

Завантаження числа

8001

37

у регістр В

8002

60

MOV Н,В

Завантаження регістра Н

вмістом регістра В

8003

24

INR Н

Збільшення вмісту регістра Н

Проведемо експеримент для демонстрації використання регістрів загального призначення при роботі команди MOV.

1. Введіть програму, приведену в табл.1 програма спочатку заносить у регістр B число 37, потім переносить його вміст у регістр Н, нарешті, нарощує регістр Н.

2. Упевніться, що програма правильно записана в пам'ять.

3. Встановіть тумблер АВТО у положення ШАГ.

4. Натисніть послідовно кнопки 8, 0, 0, 0, УСТ.АД.

5. Натисніть кнопку ПУСК. При цьому виконується команда MVI В,37. На індикаторі адрес висвічується число 8002

6. Натисніть послідовно кнопки 8, 3, Е, 9, УСТ.АД. На індикаторі адрес установиться адреса регістра В. На індикаторі даних у двох правих розрядах висвічується число 37 - вміст регістра В після виконання команди MVI В, 37.

MOV є однобайтовою командою, але вимагає попереднього завантаження регістрів Н и L. З іншого боку, LDA 1237 є 3-байтною командою. Однак їй часто надають перевагу, тому що вона не вимагає запам'ятовування адреси в регістрах Н и L. Непряма адресація особливо зручна при роботі з таблицями.

Таблиця 2  Програма лічильника

Адреси

Дані

Команди

Коментарі

8000

21

LXI Н,83F7

8001

F7

8002

83

8003

36

MVI М,0

8004

00

8005

CD

CALL

SEG

8006

C0

8007

01

8008

21

LXI Н,

83F7

8009

F7

800А

83

800В

D7

RST 2

800С

34

INR M

800D

C3

JMP

8005

800Е

05

800F

80

Підпрограма обробки переривання

8015

CD

CALL

KEY IN

8016

16

8017

02

8018

FE

CPI 10

8019

10

801А

CA

JZ

800С

801В

ОС

Продовження табл.2

Адреса

Данні

Команди

801С

80

801D

СЗ

JMP

8005

801Е

05

801F

80

83D1

СЗ

JMP

8015

83D2

15

83D3

80

7. Натисніть кнопку ВОЗВР. На індикаторі адрес висвічується адреса 8003. При цьому виконається команда MOV Н, В.

8. Встановіть на індикаторі адрес число 83Е5 - адреса регістра Н. На індикаторі даних у двох правих розрядах висвічується число 37 - вміст регістра Н після виконання команди MOV Н, В. Установивши на індикаторі адрес адреса регістра В, переконаєтеся, що цей регістр усе ще містить число 37.

9. Натисніть кнопку ВОЗВР. На індикаторі адрес висвічується число 8004 - адреса наступної команди. При цьому виконується команда INR Н. Установивши на індикаторі адрес адреси регістра Н, переконаєтеся, що його вміст збільшився на 1, тобто став дорівнювати 38.

ПЕРЕРИВАННЯ

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

"Мікролаб" використовує команду RST для виконання переривання. Вона подібна команді CALL, за винятком того, що не явно визначає адресу. RST 2 еквівалентна CALL 0010, Адреса 0010 - фіксується при конструюванні МП КР580ІК80 і не може бути змінений. У "Мікролаб" у програмі монітора по цій адресі записаний перехід на визначену адресу в даному випадку 83D1. За адресою 83D1 необхідно записати перехід на підпрограму обробки переривання.

ВИКОРИСТАННЯ КРАПОК ПЕРЕРИВАННЯ

Крапки переривання зручно використовувати при налагодженні програм. Ці крапки можна вводити після написання програми шляхом заміни деякої команди крапкою переривання. Крапка переривання зупиняє програму в потрібному місці, тому не треба виконувати попередні команди по кроках. Якщо програма виконується правильно, крапка переривання може бути замінена NOP чи командою, що замінила крапка переривання. У "Мікролаб" переривання RST 1 виводить програму користувача на монітор.

Апаратні крапки переривання

Крім програмного переривання в Мікро-ЕОМ може бути реалізоване апаратне переривання.

У "Мікролаб" таке переривання використовується для організації крокового режиму. Якщо тумблер режиму знаходиться в положенні КРОК  і натискається кнопка ПУСК, то на МП надходить сигнал переривання, що сприймається їм як RST 7, (це забезпечується апаратною частиною). Підпрограма обробки переривання RST 7 є підпрограмою крокового режиму.

Проведемо експеримент по використанню крапки переривання.

1. Введіть програму, приведену в табл.2. Основна програма, записана в комірках 8000-800F. являє собою програму лічильника з крапкою переривання. Рахунок ведеться з комірки 83F7. Вміст цієї комірки виводиться на крайній правий індикатор. Перед кожним збільшенням лічильника відбувається переривання програми, і починає виконуватися підпрограма з адреси 8015. У цій підпрограмі передбачене опитування клавіатури, і якщо натиснута кнопка ПУСК, відбувається повернення в основну програму, де відбудеться чергове збільшення комірки 83F7. Таким чином, після кожного натискання кнопки ПУСК буде відбуватися збільшення на 1 вмісту, комірки 83F7.

2. Встановіть тумблер режиму в положення АВТ і, натискаючи кнопку ПУСК, спостерігайте на правому індикаторі рахунок даних цих команд подібно виконанню ANA R, тільки реалізуються інші логічні функції. Оскільки  адресу чи дані визначати не потрібно, то всі ці команди вимагають тільки один байт коду операції (див. набір команд МП КР580ІК80).

Урок 12

НАБІР КОМАНД МІКРОПРОЦЕСОРА КР580ІК80

ЛОГІЧНІ КОМАНДИ

В основі побудови цифрових схем лежить логічний вентиль, а найбільше широко використовуються чотири базові функції вентиля: "НЕ", "І", "АБО", "роздільне АБО". Кожна з цих функцій може бути реалізована програмним способом .

Функцію "НЕ" виконує команда СМА (доповнення акумулятора). Кожен біт акумулятора після виконання цієї команди інвертується.

Функцію "І" виконує команда ANA R. Символ R позначає або один з регістрів, або комірку пам'яті. Наприклад, ANA D викликає об'єднання по "І" вмісту регістра D і акумулятора. Результат залишається в акумуляторі, вміст регістра (у нашому прикладі D) не змінюється. Операція з якимсь визначеним регістром має свій код.

Рис.1 показує апаратний еквівалент команди ANA R. Функція "І" виконується індивідуально для кожного біта акумулятора. Наприклад, якщо А=1011 0110 і D=0011 1100, результатом команди ANA D буде:

Функцію "АБО" виконує команда ORA R (об'єднання по "АБО" акумулятора і регістра R)

Функцію "роздільне АБО" виконує команда XRA R.

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

Таблиця 1   Програма, що демонструє дію логічних команд

Адреса

Вміст

Мітка

Команда

Коментарі

8000

• • •

MVI A, 81

8001

• • •

8002

• • •

OUT FB

8003

8004

• • •

START

IN FA

8005

8006

• • •

'MVI B, OA

8007

• • •

8008

• • •

ANA B

8009

• • •

OUT F9

800А

• • •

800В

• • •

JMP START

800С

• • •

800D

• • •

Кожне мнемонічне позначення повинне бути перетворене у відповідний КОП і доповнено необхідними даними (якщо потрібно). Ця програма зчитує дані з перемикачів вхідного порту, а потім поєднує їх по "І" з числом 0000 1010. Результат з'являється на світлодіодних індикаторах.. Потім програма повертається на початок, і процес нескінченно повторюється, так що можна змінити вхідні дані і перевірити відповідні вихідні.

1. Переведіть програму (табл. 1) у машинний код і введіть у мікролабораторію.

2. Перевірте правильність введення програми.

3. Встановіть початкову адресу 8000 і натисніть кнопку ПУСК. Програма виконується.

4. Встановіть вхідні перемикачі в 1. Індикатори показують  0000 1010.

5. Змінить положення перемикачів і перевірте відповідні виходи. Біти, що поєднуються по "І" з нулями, не залежать від положення перемикачів.

6. Натисніть кнопку СКИДАННЯ для повернення керування монітором. Помітьте, що перемикачі не впливають більше на стан індикаторів. Замінить команду ANA В (за адресою 8008) командою ORA В.

7. Запустіть програму.

8. Подивіться на відповідність між різними положеннями вхідних перемикачів і станами індикаторів. Помітьте розходження між функціями "І" і "АБО". Виходи бітів, об'єднаних по "АБО" з нулями, залежать від положення перемикачів.

9. Натисніть кнопку СКИДАННЯ. Замініть команду ORA В на XRA (КОП-А8). Повторіть кроки 7 і 8. Біти, об'єднані по "виключне АБО" з одиницями, інвертуються.

МАСКУВАННЯ

Типове застосування логічних команд - виділення визначених бітів слова (чи маскування). Для приклада припустимо, що нам потрібно перевірити стан одного з перемикачів, підключених до порту введення, а стан інших проігнорувати. На мал.2 показана структурна схема програми, що перевіряє перемикач, з'єднаний із другим бітом вхідного порту. Якщо ключ замкнуть, індикатор загоряється і навпаки.

Табл.2 показує лістинг програми. Спочатку програма робить програмування інтерфейсу. Потім вона зчитує дані з вхідного порту в акумулятор, засилає в регістр В слово, що маскує, і поєднує по "І" регістр В и регістр А. У результаті всі біти, крім другого, приводяться до нуля. Значення другого біта результату буде залежати від положення перемикача. Програма використовує команду JZ для переходу, якщо встановлений прапорець нуля.

Таблиця 2  Програма перевірки другого біта

Адреса

Вміст

Мітка

Команда

Коментарі

8000

MVI A,81

8001

8002

OUT FB

8003

8004

START

IN FA

8005

8006

MVI В, 04

8007

8008

/

ANA В

8009

JZ OFF

800А

800В

800С

ON

MVI A,- FF

800D

i

800Е

OUT F9

800F

8010

JMP START

8011

8012

8013

OFF

MVI A, 00

8014

8015

OUT F9

8016

8017

JMP START

8018

8019

Нульовий прапорець індикує, що повний байт (і тому біт 2) дорівнює 0.

Проведемо експеримент по виконанню цієї програми.

1. Переведіть програму в машинний код і введіть у мікролабораторію. Перевірте правильність введення програми.

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

3. Змініть програму, щоб перевірити інший перемикач. Якщо програма не працює, ретельно перевірте переклад у машинні коди і правильність введення програми.

СКИДАННЯ АКУМУЛЯТОРА

Команда XRA А поєднує по "виключне АБО" акумулятор з самим собою. Тому що логічна функція "виключне АБО" будь-якого числа із самим собою дає в результаті нуль, ця команда очищає акумулятор, використовуючи тільки один байт пам'яті. Інша команда MVI А, Про вимагає два байти пам'яті.

ЗМІЩЕННЯ ДАНИХ

Інша часто необхідна функція - це зміщення даних  вправо чи вліво. В апаратурі це виконується за допомогою зміщуючих регістрів. МП КР580ІК80 має команди, що зміщують дані в акумуляторі.

RRC (кругове обертання вправо) робить зміщення вправо, a L -уліво. Ці команди оперують тільки з акумулятором. Кругове обертання означає, що молодший біт зрушується на місце старшого чи навпаки (мал.3).

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

Лістинг програми приведений у табл.3. Після програмування інтерфейсу програма заносить в акумулятор код 1000 0000. Потім виконується виведення вмісту акумулятора на індикатори. Команда виведення (OUT F9) повторюється якийсь час, тому що вона знаходяться в петлі затримки організованої за допомогою регістрів D і Е. Затримка забезпечує повільну зміну стану індикаторів, без неї зміщення даних акумулятора було б настільки швидке, що ми б не могли простежити за ним.

Проведемо експеримент по виконанню цієї програми.

1. Переведіть програму в машинний код і введіть у мікролабораторію .

2. Перевірте правильність введення програми і запустіть її. На індикаторах з'явиться ефект "вогню, що біжить," вправо. Якщо не вдалося досягти потрібного ефекту, перевірте правильність машинних кодів записаної програми.

3. Замініть команду RRC на RLC. У цьому випадку спостерігається "вогонь, що біжить," уліво.

Таблиця 3  Програма для демонстрації функцій команд зміщення

Адреса

Вміст

Мітка

Команда

Коментарі

8000

MVI A, 81 1

8001

^

8002

OUT FB J

8003

8004

MVI A, 80

8005

8006

LOAD

MVI D,40

8007

8008

• MVI Е, FF

8009

800А

LOAP

OUT F9

800В

800С

DCR Е

800D

JNZ LOOP

800Е

800F

8010

DCR D

8011

JNZ LOOP

8012

8013

RRC

8014

JMP LOAD

8015

8016

8017

4. Ви можете також змінити частоту переключення індикаторів, заносячи в регістр D різні числа (тобто змінюючи затримку). Для цього досить змінювати код за адресою 8007, тобто змінювати другий байт команди MVI D. Заміняючи код за адресою 8005, ви можете змінити комбінацію "запалених" індикаторів.

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

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

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

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

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

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

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

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

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

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

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

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

Команди PUSH і POP

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

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

Урок 13

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

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

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

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

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

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

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

  1.  визначити задачу;
  2.  прийняти рішення - розділити на функціональні блоки;
  3.  скласти алгоритм програми;
  4.  написати програму;
  5.  випробувати і налагодити кожну команду;
  6.  випробувати і налагодити повну програму.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Програма затримки

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

ПРОГРАМА КОНТРОЛЕРА "ВОГНІ, ЩО БІЖАТЬ"

Після складання алгоритмів і визначення характеристик, можна писати програми. Основна програма послідовності досить проста (табл.2).

Таблиця 2

Мітки

Команди

Коментарі

SEQ

MOV А, 92

MVI D, I

CALL DELAY

MOV A, 49

MVI D, I

CALL.DELAY

MOV A, 24

MVI D, I

CALL DELAY

Програма послідовності встановлює в регістр А число 92 - код вихідних індикаторів, при якому світлодіоди 1, 4, 7 - горять, а світлодіоди 2, 3, 5, 6, 8- погашені.

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

РОЗРОБКА ПРОГРАМИ ЗАТРИМКИ

У табл.3 приведена програма затримки, алгоритм якої показаний на мал. 2.

Таблиця 3  Проста програма затримки

Мітки

Команди

Коментарі

Примітка

DELAY

DCR А

Що зменшує

4 такти

Рахунок

JNZ DELAY

Продовження

7/10

рахунка, якщо

тактів

Вміст

Аккумулято

ра 0

RET

Повернення

10 тактів

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

Час затримки, отриманий при виконанні цієї програми, можна проаналізувати в такий спосіб:

у примітках зазначене число періодів синхроімпульсів (тактів), необхідних для виконання кожної команди; для DCR А потрібно чотири такти. Для JNZ, у випадку виконання умови, потрібно 10 тактів, якщо ж умова не виконується - 7 тактів. Для RET потрібно 10 тактів. Для кожного прогону по петлі потрібно 4+10=14 тактів. Для останнього прогону потрібно 4+7+10=21 такт, тому що команда JNZ не викликає переходу і вимагає сімох тактів, для команди RET потрібно 10 тактів.

Отже, рівняння для затримки має вид:

затримка=(А-1)*14+21 (тактів)

Один такт триває 0,5 мкс. Тому рівняння можна переписати в такий спосіб:

затримка=(А-1)*7 мкс+10,5 мкс

тут А - початковий вміст акумулятора.

Сама довга затримка викликається установкою акумулятора в нуль. При першому прогоні по петлі вміст акумулятора зменшується і стає рівним 255. Первісна установка в нуль еквівалентна тому, що А=256. Отже, максимальна затримка дорівнює (256-1)*7+10,5=1795 мкс.

Використання пар регістрів

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

Програма, що використовує пари регістрів, приведена в табл.4. Використання команди DCX В, що зменшує вміст пари регістрів В,С дозволяє збільшити рахунок затримки до значення 2562=65536. Тому що команда DCX В не впливає на нульовий прапорець МП, то для цього використовується команда ORA C. Після  цього може бути використана команда JNZ.

Таблиця 4

Мітки

Команди

Коментарі

DELAY

DCX У

MOV А, У

ORA C

JNZ DELAY

RET

Час затримки, отриманий при виконанні цієї програми, визначається по формулі, що має вид:

затримка=(N-1)*24+31 (тактів)= (N-1)*12 мкс+15,5 мкс .

Тут N - початковий вміст регістрів B, C, максимальна затримка =(65536-1)*12+15,5=0,786 с. Таку затримку можна одержати, якщо спочатку занести 0 у регістри В, С.

Для одержання затримки, використовуваної в програмі контролера "вогні, що біжать", організується лічильник у регістрі D. Число, спочатку записане в регістр D, визначає, скільки разів виконується затримка 0,786 с. Максимальна затримка, отримана таким чином, дорівнює 256х0,786=201 с.

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

Таблиця 5

Мітки

Команди

Коментарі

DELAY

LXI B, 0

Початок рахунка внутрен

їй петлі

LOOP

DCX У

Петля затримки 0,786 c

MOV А, B

ORA З

JNZ LOOP

DCR D

Зменшення основного

лічильника і робота

по петлі,

RET

якщо =0

Команда LXI В,0 заносить 0 у пари регістрів В, С. Далі виконується затримка 0,786 с. Регістр D використовується для рахунка основної затримки. У цій програмі дві петлі: зовнішня і внутрішня. Внутрішня петля генерує затримку 0,786 с., зовнішня - безліч таких затримок. Така організація програми називається вкладенням.

Повна програма контролера "вогні, що біжать" приведена в табл. 6.

Таблиця 6

Адреси

Коди

Мітки

Команди

Коментарі

8000

ЗЕ

MOV A, 81

MOV A,81

8001

81

8002

D3

8003

FB

OUT FB

8004

ЗЕ

SEQ

MOV A, 92

8005

92

8006

D3

OUT F9

8007

F9

8008

16

MVI D, I

8009

01

800А

CD

CALL DELAY

800В

22

800С

80

800D

ЗЕ

MOV A, 49

800Е

49

800F

D3

OUT F9

8010

F9

8011

16

MVI D, I

8012

01

8013

CD

CALL DELAY

8014

22

8015

80

8016

ЗЕ

MOV A, 24

8017

24

8018

D3

OUT F9

8019

F9

801А

16

MVI D.I

801В

01

801С

CD

CALL DELAY

801D

22

801Е

80

801F

C3

JMP SEQ

8020

04

8021

80

8022

01

DELAY

LXI B,0025

8023

00

8024

25

8025

OB

LOOP

DCX В

8026

78

MOV А, В

8027

B1

ORA С

8028

C2

JNZ LOOP

8029

25.

802А

80

802В

15

DCR D

802С

С2

JNZ DELAY

802D

22

802Е

80

802F

С9

RET


КЛАВІАТУРА

Клавіатура являє собою набір ключів (кнопок), організованих у вигляді матриці 8х3. Кожен ряд з 8 кнопок опитується (апаратне забезпечення описане в уроці 9). Дані, що зчитуються, перетворяться в код, що відповідає натиснутій кнопці, за допомогою програми монітора KEYIN (адреса 0216). Ця програма викликається за допомогою команди CALL KEYIN. Після повернення з програми KEYIN в акумуляторі буде міститися код натиснутої кнопки (табл.1). Ця програма монітора може використовуватися для читання з клавіатури.

Коди кнопок

Кнопка

Код

0

00

1

01

2

02

3

03

4

04

5

05

6

06

7

07

8

08

9

09

А

ОА

B

ОВ

C

ОС

D

OD

E

ОЕ

F

OF

ПУСК

B03BP.

10

11

УСТ.АД.

12

АД.-

13

АД.+

14

ЗП

45

ВИВОД

16

ВВЕДЕННЯ

17

У табл.2 показаний лістинг програми, що викликає звуковий сигнал, якщо натиснута кнопка 7. Клавіатура читається за допомогою вищеописаної програми KEYIN, що заносить код натиснутої клавіші в акумулятор.

Команда CPI 07 встановлює нульовий прапорець процесора, якщо вміст акумулятора дорівнює 07. Команда JNZ READ викликає повернення програми на початок, якщо нульовий прапорець не встановлений. Якщо нульовий прапорець установлений то буде викликатися підпрограма ВЕЕР, Потім процес повторюється. Таким чином, звуковий сигнал буде генеруватися при натисканні кнопки 7.

Введіть лістинг програми в мікролабораторію і перевірте правильність введення. Запустіть програму.

Таблиця 2 Програма виклику звукового сигналу

Адреса

Зміст

Мітка

Команда

Коментарі

8000

CD

READ

CALL KEYIN

8001

16

8002

02

8003

FE

CPI 07

8004

07

8005

C2

JNZ READ

8006

00

8007

80

8008

CD

CALL BEEP

8009

50

800А

03

800В

СЗ

JMP READ .

800С

'00

800D

80

Натисніть кнопку 7 - динамік гуде. Натисніть будь-яку іншу кнопку - звуковий сигнал відсутній.

Складіть програму, що генерує звуковий сигнал, якщо натиснуті у певній послідовності три певні кнопки, наприклад 7, 3, 9. Цю програму можна взяти за основу при створенні електронного замка. Складання програми почніть зі структурної схеми. Введіть програму в мікролабораторію і перевірте її виконання.

СКАНУВАННЯ КЛАВІАТУРИ

На мал.1 приведена спрощена схема клавіатури. За один цикл зчитуються дані з одного ряду з восьми кнопок. Для простоти розглянемо тільки один ряд, тобто кнопки 0, 1, 2..7.

Читання ряду ключів представляє собою двокрокову операцію: запис даних у скануючий порт для вибору кнопок, читання байта даних читаючим портом.

Щоб вибрати певний ряд кнопок, що відповідає біт скануючого порту (РС4, РС5 чи РС6) встановлюється в лог.1, інші біти залишаються рівними лог.0. Таким чином, щоб вибрати ряд кнопок 0... 7, потрібно послати в порт FA код 1001 1111. (9FH), щоб вибрати кнопки 8...F - код 1010 1111 (AFH)   і щоб вибрати кнопки ПУСК... Введення код 1100 1111 (CFH). Біти РС0...РС3, РС7 не використовуються при скануванні клавіатури і встановлюються рівними лог.1.

Отже, щоб зчитати дані з ряду 0...7, у порт FA виводиться байт 9F. Потім проводиться читання вхідним портом для збору інформації про стан стовпчиків. При натисканні певної кнопки відповідний біт читаючого порту буде встановлюватися в 0 (табл.3). Зверніть увагу, що коди кнопок, приведені в табл. 1 і 3, не збігаються. Кнопка з інших рядів при читанні обраного ряду не впливає на результати читання. Табл.4 показує програму, що реалізує тільки що описаний процес читання.

Таблиця 3  Коди, що читаються з клавіатури

Кнопка

Код, що читається, (двійковий)

Код, що читається,

(шістнадцятковій)

Немає затиснених кнопок

1111 •1111

FF

0

1111 1110

FE

1

1111 1101

FD-

2

1111 1011

FB

3

1111 0111

F7

4 -

1110 1111

EF

5

1101 1111

DF

6

1011 1111

BF

7

0111 1111

7F

Таблиця 4  Програма визначення стану кнопок

Команда

Коментарі

MVI А, 9F

OUT FA

IN F8

Вибір ряду кнопок 0. . .7

Читання стану кнопок

Програма KEYIN, описана вище, не тільки сканує клавіатуру, але і перетворить коди, що читаються зі стовпчиків (у залежності від обраного ряду), у коди, приведені в табл.1.

У табл.5 приведена програма для перевірки стану кнопки 2, що використовує вищеописаний спосіб читання клавіатури. Якщо кнопка 2 натиснута, генерується звуковий сигнал.

Таблиця 5  Програма перевірки стану кнопки 2

Адреса

Уміст

Мітка

Команда

Коментарі

8000

ЗЕ

MVI A.9F''

Вибір ряду кнопок 0...7

8001

9F

^

8002 -

D3

OUT FA

8003

FA

'

8004

DB

READ

IN F8

Читання стану колонок

8005

F8

8006

FE

CPI FB

Порівняння акумулятора з

с кодом (кнопка 2)

8007

FB

JNZ READ

Читати знову, якщо кнопка

8008

.З 2

2 не натиснута

8009

04

800А

80

800В

CD

CALL BEEP

Якщо натиснута кнопка 2,

800С

50

з'являється звуковий сигнал

800D

03

800Е

СЗ

JMP READ

Повторення програми

800F

04

8010

80

Наберіть програму на "Мікролаб" і перевірте її роботу.

УСУНЕННЯ ДЗЕНЬКОТУ

Іншим фактором, що повинний бути розглянутий при читанні з клавіатури, є виключення "дзенькоту". Як відомо, кнопки при натисканні не видають "чистий" імпульс - вони "дзенькають", як показано на мал.2. Коли металеві контакти торкаються один одного, виникає дзенькіт. Тривалість дзенькоту 1-50 мс у залежності від конструкції кнопки. Дзенькіт контактів потрібно враховувати, тому що він може привести до того, що замість одного натискання буде зафіксовано багато натискань кнопки.

Дзенькіт можна виключити шляхом введення схеми виключення дзенькоту в читаючий  порт чи за допомогою спеціальної підпрограми.

Рис.3, показує один зі шляхів виключення дзенькоту за допомогою програми. Клавіатура сканується, використовуючи програму KEYIN, описану  раніше. Якщо немає натиснутих кнопок, процес повторюється. Коли ж визначене натискання кнопки, клавіатура відключається на 50 мск, щоб не читати під час дзенькоту. Потім клавіатура сканується до моменту, поки ключ не відпущений. Знову вводиться 50 мск затримки, щоб виключити дзенькіт при відпусканні кнопки.

ІНДИКАЦІЯ

У мікролабораторії для індикації використовуються вісім семисегментних цифрових індикаторів.

Кожному індикатору відповідає комірка пам'яті, де зберігається семисегментний код  керуючий світінням сегментів індикатора (див. урок 9). Інформація з цих комірок посилається на індикатори  за допомогою спеціальної схеми, що забезпечує динамічний режим індикації

Задача матзабезпечення зводиться до підготовки семисегментних кодів і засиланню їх у комірки пам'яті 83F8...83FF. Комірка 83F8 відповідає лівому індикатору, 83FF - правому. Динамічна індикація здійснюється в мікропроцесорних системах не обов'язково за допомогою схеми. Сканування індикаторів можна здійснювати і за допомогою програми.

Монітор мікролабораторії містить програму SEGCG (адреса A013), що перетворить шістнадцяткові коди 0, 1, 2...4, Е, F у семисегментні і занесе їх у комірки пам'яті 83F8...83FF. Вихідні дані для цієї програми повинні знаходитися в комірках 83F4...83F7. Кожен байт із цих комірок відповідає парі індикаторів: вміст комірок 83F4 після перетворення висвітиться на двох лівих індикаторах, вміст комірок 83F7 - на двох правих.

У табл.6 приведена програма показу інформації яка використовує підпрограму SEGCG. Введіть програму і перевірте її роботу. На індикаторах повинні послідовно висвітлюються символи  1, 2, 3, 4, А, В, C, D.

Таблиця 6 Програма показу інформації

Адреса

Зміст

Мітки

Команда

Коментарі

8000 8001 8002

ЗЕ 12 32

MVI A, 12 STA 83P4

12[A]

A—[83F4]

8003

F4

8004

83

8005

ЗЕ

MVI A, 34

34--A

8006 8007 8008

34 32 F5

STA Q3FS

A[83F5]

8009

83

800А

ЗЕ •

MVI A,AB

АВ A

800В 800С 800D

АВ 32 F6

STA 83F6

A—[83F6]

800Е

83

800F

ЗЕ

MVI A, CD

CD A

8010 8011 8012

CD 32 F7

STA 83E7

A[83F7]

8013

83

8014

CD

CALL

Виклик

SEGCG

SEGCG

8015

CO

8016

01

8017

76

HLT

Зупинка

Напишіть програму, що виводить на два правих індикатори значення натиснутої кнопки, а на інші індикатори - нулі. Використовуйте при цьому підпрограми монітора KEYIN і SEGCG.

У попередній програмі ми використовували підпрограму SEGCG для одержання семисегментного коду. Але ця підпрограма оперує тільки із шістнадцятковими символами - 0...F, тобто не цілком використовує можливості семисегментних індикаторів.

Можна формувати семисегментний код і одержувати на індикаторах будь-які символи, що дозволяють одержати використовувані в мікролабораторії індикатори. Як уже говорилися, семисегментні коди повинні засилатися у визначені комірки пам'яті. Кожен біт у цих комірках відповідає певному сегменту (мал.4). Якщо біт дорівнює 1, то відповідний сегмент буде "горіти", і  - навпаки.

Урок 15

ДЕЯКІ ПРЕДСТАВЛЕННЯ ЧИСЕЛ І АЛГОРИТМИ

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

ДВІЙКОВЕ ПРЕДСТАВЛЕННЯ

Розглянемо представлення додатних і від’ємних чисел, використовуючи 8-бітне слово. Оскільки неможливо представити більше ніж 256 різних чисел за допомогою 8 біт, то діапазон дії обмежений від -127 до +127. Перші 128 чисел (від 0 до 127, 7F у шістнадятковому численні) визначаються як додатні. Від’ємні ж числа виходять при відліку від 0 у зворотну сторону. У випадку такого реверсивного лічильника, якщо регістр дорівнює 0000 0000 і рахунок зменшується, то випливає число буде 1111 1111 (FF). Тому FF представляється як -1. Це представлення називається доповненням до двох (двійкове доповнення).

Cтаршою значущою цифрою визначається знак. Якщо це 0, то число позитивне, якщо 1 - негативне. Процедура обчислення з доповненням до двох гранично проста. Для позитивних чисел двійкове доповнення і двійкове представлення збігаються (як показано першими восьми рядками). Для від’ємних чисел процедура обчислення двійкового доповнення наступна :

1. Записати двійкове представлення абсолютного значення, тобто для – 5 записати 0000 0101.

2. Виконати доповнення отриманого числа, тобто 0000 0101=1111 1010 (це називається доповненням до одиниці).

3. Додати одиницю для одержання двійкового доповнення (1111 1010=1111 1011=-5).

Для прикладу розглянемо двійкове доповнення числа 1111 1011 декількома шляхами в залежності від того, яка довжина слова і яка точність необхідні.

ПОДВІЙНА ТОЧНІСТЬ

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

(СТАРШИЙ БАЙТ)  (МОЛОДШИЙ БАЙТ)

Рис.1. Подвійна точність

У процесорі КР580ІК80 це може бути здійснене з допомогою інструкцій, що використовують пари регістрів за один раз, що можуть працювати одночасно з 16 бітами. Використання двох слів для одного числа називається подвійною точністю. У 8-бітному процесорі це розширює радіус до 65535 або +32767.

1111 1011 = 0000 0100 0000 0100+1=5,

тобто 1111 1011 є представленням –5.Помітимо, що число 1111 1011  може також інтерпретуватися як 25110, якби це розглядалося в двійковій системі, а не в системі з доповненням до двох. Тому необхідно постійно пам’ятати, у якій системі ведуться обчислення.

Система двійкового доповнення виявляється дуже зручною для арифметики. Двійкове доповнення числа при додаванні, вирахуванні, чи помноженні розподілі видають результат у двійковому доповненні. Ця властивість використовується в процесорних системах при представленні додатних і від’ємних чисел.

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

МЕТОД ФІКСОВАНОЇ КОМИ

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

На мал.2 показане представлення з фіксованою комою. У цьому прикладі 2 байти використовуються для запам'ятовування числа. Перший байт визначається як лівий байт від двійкової коми,

другий байт - праворуч від коми, що дозволяє представляти і такі малі числа, як 2-8=1/256, і дробові числа, такі як 3,17. Однак при цьому є обмеження 1/256 (тобто 0,004), радіус знаходиться в межах +127.

МЕТОД КОМИ, ЩО ПЛАВАЄ

При досить великому обсязі пам'яті, відведеному під представлення чисел (16 біт), методом фіксованої коми неможливо представити такі числа, як 360 000 000 000 чи 0,000000297. Ці числа можуть бути легко представлені при використанні мантиси і порядку, тобто методом коми, що плаває. Число 360 000 000 000, наприклад, може бути записане як 0,36*1012 (мантиса буде 0,36 і порядок 12), а 0,000000297 може бути записане як 0297*10-6(0,297 - мантиса, -6 – порядок).

Будемо вважати, що 2 байти використовуються для представлення числа так, як показано на мал.3. Один байт є мантиса, іншої - порядок. Радіус значень може бути визначений, думаючи, що як мантиса, так і порядок запам'ятовуються у формі двійкового доповнення, тобто він дорівнює ±10±127.

Метод коми, що плаває, використовується для представлення широкого діапазону чисел. Числа обсягом більш 2 байт використовуються для того, щоб одержувати більше розширення (більше чисел у мантисі).

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

ДЕСЯТКОВЕ ПРЕДСТАВЛЕННЯ

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

Ускладнення викликає з представленням десяткових чисел у двійковій системі процесора. Для прикладу допустимо, що десяткове число 28 зчитується з клавіатури. Число може бути перетворене в двійковий еквівалент 0001 1100 (1C), однак, якщо це число показується на дисплеї (десятковому), то воно повинно бути знову перетворене до десяткової системи, до цифр 2 і 8.

Альтернативний метод - переклад кожної десяткової цифри в незалежне 4-бітне слово (символ). Два 4-бітних слова потім поєднуються в один байт. Таким чином, 28 буде кодуватися як 0010 1000. Цей код називається двійково-десятковим кодом (ДДК). Помітимо, що всі двійкові символи з 1010 і 1.111 ніколи не використовуються в двійково-десятковому представленні. ДДК часто використовується в системах, що мають десяткові порти вводу/виводу, тому що це звільняє від процесу десятково-двійкового перетворення. Одна незручність методу - неефективне використання обсягу пам'яті. Найбільше десяткове число, що може бути запам’ятовано в байті, використовуючи ДДК,— 99, тоді як у число в двійковому виді максимальне число дорівнює 255. Арифметика також погано підходить для ДДК, тому що це "неприродна" система чисел. Однак більшість МП забезпечуються спеціальними інструкціями для зв'язку з ДДК.

АЛФАВІТНЕ ПРЕДСТАВЛЕННЯ

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

Найбільше що часто застосовується для цей код, що відповідає ДСТ 13052-67, приведений у табл.1. Кожному символу ставиться у відповідність двійкове значення. Цей код використовується, в основному, для забезпечення спеціальних функцій.

Код "0А", наприклад, використовується для виклику лінії завантаження на  дисплей чи друкувальний пристрій.

Загальна проблема програмування - переклад даних з одного коду в іншій. Для прикладу розглянемо проблему запису шіснадцяткових цифр на дисплей (семисегментний). Для того щоб визначити, які сегменти будуть включатися на дисплеї, для кожного символу потрібно перетворення з двійкового коду в семисегментний. Це здійснюється за допомогою методу, названого table look up. Сегментні коди для кожного символу запам'ятовуються як список у пам'яті, представлений таблицею. Щоб перевести двійковий код у відповідний семисегментний, досить глянути на таблицю "looked up" (мал.4).

Перший вивід у табл.1 містить семисегментний код для 0, наступний вивід - для 1, і так далі. Спочатку двійкове число перетвориться і додасться до адреси першого виходу в табл.1. Результатом є адреса таблиці виходів, що містять бажаний семисегментний код. Зміст адресуємої комірки потім читається, і на цьому перетворення закінчене.

МАТЕМАТИЧНІ АЛГОРИТМИ

Калькулятори, виконані на основі МП, здійснюють розподіл, множення, визначення синуса, косинуса і багато інших математичних операцій. Чисто арифметичні можливості процесора КР580ІК80 (і більшості інших 8-бітних процесорів) зводяться тільки до додавання і вирахування.

Однак, використовуючи тільки прості операції додавання і вирахування, можна представити будь-які складні математичні функції. Множення може бути представлене дуже просто за допомогою серії додавань і зсуву, для того щоб подивитися, як усе це робиться, розглянемо процес множення "вручну". Множене збільшується тільки на одну цифру множника за один раз. Результат з кожної наступної цифри множника зрушується вліво на одну позицію і результати складаються. Подібна процедура здійснюється і для двійкових чисел. Число, помножене на 1, дорівнює самому собі, а число, помножене на 0, дорівнює 0:

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

Обчислення таких функцій, як sin x чи cos x, є більш складною операцією. Алгоритм представлення функції синуса такий:

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

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

PAGE  81


Блок пам’яті

Пристрої ВВОДУ/ ВИВОДУ

Мікропроцесор

Клавіатура

Дисплей

ШИНА АДРЕС

ШИНА КЕРУВАННЯ

ШИНА ДАНИХ

рис.1. Структурна схема мікропроцесорної системи.

Вхід

Дозвіл

Вихід

Рис.2. Тристабільний драйвер

+5В

Рис.3. Еквівалентна схема тристабільного драйвера.

Дозвіл

Вхід

Вихід

сигнал А

сигнал В

сигнал С

сигнал D

Вихід

Вхід 1

Вхід 2

хід 1

Вхід 2

Вхід 1

Вхід 2

Вхід 1

Вхід 2

Рис.4. Вихід чотирьох сигналів на спільну лінію.

ШИНА АДРЕСИ

ШИНА ДАНИХ

Мал.6. Основні сигнали   МП

13:2=6 залишок 1

 6:2=3 залишок 0

 3:2=1 залишок 1

 1:2=0 залишок 1

  1310 =   1   1   0   12

Мал.1. Перетворення числа з десяткової в двійкову систему

Вхідний ПОРТ

Блок пам’яті

Мікропроцесор

Вихідний ПОРТ

ШИНА АДРЕС

ШИНА ДАНИХ

Мал.1. Схема мікропроцесора, виконуючого схему I

ЗЧИТАТИ ДАНІ З ВХІДНОГО ПОРТУ

СХЕМА І

ВСТАНОВИТИ ВИХІДНИЙ ПОРТ В ВИСОКИЙ СТАН

ВСТАНОВИТИ ВИХІДНИЙ ПОРТ В НИЗЬКИЙ СТАН

ВОНИ В ВИСОКОМУ СТАНІ ?

Рис.3. Структурна схема програми І

Вміст комірки = 0

Збільшити вміст комірки на 1

Рахунок до 10

ВМІСТ КОМІРКИ
= 10
?

Мал.4. Структурна схема програми рахунку до 10


 

А также другие работы, которые могут Вас заинтересовать

35915. Советский плакат 71.12 KB
  Политический плакат Основная статья: Советский плакат Виды искусства способные жить на улицах в первые годы после революции играли важнейшую роль в формировании общественного и эстетического сознания революционного народа. Он оказался самым мобильным и оперативным видом искусства[4]. В его плакатах заметна символикоаллегорическая тенденция советского искусства той поры.
35917. Тепловые эффекты растворения веществ 68.5 KB
  Определение энтальпии растворения соли кислоты или основания. Получить у преподавателя соль энтальпию растворения которой нужно определить при определении энтальпии растворения кислоты или основания необходимо соблюдать технику безопасности. Для определения энтальпии растворения соли используется калориметр схема которого показана на рисунке.
35918. Строение и метаболизм клеток животных. Строение и функции митохондрий. Клеточное дыхание 68 KB
  Ещё особенность внй мембраны очень высе содержание белков до 70 по весу предсх транспми белками ферментами дых цепи а также крупными АТФсинтетазными комплексами. Внуя мембрана в отличие от внешней не имеет спецх отверстий для транспорта мелких молекул и ионов; на ней на стороне обращенной к матриксу распся особые молекулы АТФсинтазы состоящие из головки ножки и основания. При прохождении через них протонов происходит синтез АТФ. Синтез АТФ унивей формы химй энергии в любой живой клетке.
35919. Основы экономики 65.8 KB
  Понятие и формы собственности. Владение – возможность определять судьбу объекта собственности продать подарить передать по наследству Распоряжение – управление объектом собственности с целью эффективного его использования можно сдать в аренду в пользование Пользование извлечение полезных свойств объекта собственности.лицу Формы собственности различаются в зависимости от того кто является собственником и осуществляет присвоение. В ГК РФ есть 4 формы собственности: 1.
35921. Функциональная стилистика 65.5 KB
  возникает много споров Функциональный стиль – разновидность литературного стиля предназначенный для функционирования в определенной сфере человеческой деятельности; общественно осознанная объединенная определена функциональным назначением в общ. Стиль художественной речи 2. Публицистический стиль 3. Научный стиль 5.
35922. Экологический мониторинг 64.5 KB
  МЕТОДЫ ЭКОЛОГИЧЕСКОГО МОНИТОРИНГА: Дистанционные аэрокосмические методы космические пилотируемые орбитальные станции корабли многоразового использования автономные спутниковые съемочные системы и т.; авиационного базирования самолеты вертолеты и микроавиационные радиоуправляемые аппараты и составляют значительную часть дистанционных данных remotely sensed dt как антонима контактных прежде всего наземных видов съемок способов получения данных измерительными системами в условиях физического контакта с объектом съемки; к...