- •1. Мета роботи
- •2. Короткі теоретичні відомості
- •2.1. Призначення та режими роботи iнтерфейса
- •2.2. Структура мiкросхеми кр580вв55
- •2.3. Робота iнтерфейса кр580вв55.
- •3.2. Робота мiкросхеми в режимі 0.
- •0000 0110 – 06 (Вмiст акумулятора пiсля операцiї)
- •3. Опислабораторної установки
- •4.1.Виконується на самостiйнiй пiдготовцi перед виконанням роботи.
- •4.2. Виконується в лабораторiї.
- •5. Опрацювання дослідних даних
- •6. Контрольні запитання
- •7. Література
- •4. Завдання
2.3. Робота iнтерфейса кр580вв55.
2.3.1. Програмування режиму роботи.
Режим роботи мiкросхеми вибирається Записом Керуючого Слова в регістр керуючого слова.
Iнтерфейс при цьому встановлюється в один iз трьох режимiв:
– Режим 0, в якому здiйснюється простий ввiд–вивiд портами А, В, С;
– Режим 1, що забезпечує стробований ввiд–вивiд портiв А, В;
– Режим 2, який органiзовує двонаправлений канал через порт А.
Режими роботи портiв А та В встановлюються незалежно один вiд одного.
Режим роботи порта С вибирається в залежностi вiд режиму роботи портiв А та В.
Сигналом Reset=1 регiстр РКС встановлюється у стан, при якому всi порти переходять в режим роботи 0 (шини портiв А, В, С переходять у високоiмпедансний стан).
Якщо зняти сигнал Reset (встановити 0), то вмiст РКС не змiниться, залишиться тим самим i режим роботи iнтерфейса.
Формат Керуючого Слова, що визначає режим роботи мiкросхеми, показаний на мал.4, де розряди керуючого слова означають:
Рисунок 4. Формат керуючого слова
D7 – вибiр режиму роботи iнтерфейса:
при D7=1 здiйснюється запис керуючого слова при запису/зчитуваннi;
при D7=0 РКС скидається в 0 при установцi/скиданнi;
D6, D5, D4, D3 – задають роботу групи А:
D6, D5 –визначають режим роботи групи А (так, при D6=0, D5=0 вибирається режим 0);
D4 – програмує порт А (РА7...РА0) на ввід (D4=1) або вивід (D4=0);
D3 – програмує пiвпорт С(H) (РС7...РС4) на ввід (D3=1) або на вивід (D3=0);
D2, D1, D0 – визначають роботу групи В:
D2 – вибирає режим роботи групи В (при D2=0 – режим 0, при D2=1 – режим 1);
D1 – програмує порт В (РВ7...РВ0) на ввід (D1=1) або вивід (D1=0);
D0 – прорамує пiвпорт С(L) (РС3...РС0) на ввід (D0=1) або вивід (D0=0).
Приклад: Встановлення iнтерфейса на ввід в режимі 0.
MVI A, 80 (1000 0000)–формування керуючого слова
OUT 7F (0111 1111)–вивiд в регiстр керуючого слова (при А0=1,А1=1).
Першою командою (MVI A) керуюче слово 80 записується в акумулятор, а за командою OUT пiсля її дешифрацiї мiкропроцесор виставляє на адресну шину адресу 007F. Пiсля цього здiйснюється запис керуючого слова, що з’являється на шинi даних МП, в регiстр керуючого слова iнтерфейса (для адресацiї iнтерфейса використовуються тiльки два молодшi адреснi розряди А0,А1, а розряд А7 (А7=0) формуе сигнал CS мiкросхеми iнтерфейса). Інші розряди адреси для керуавння мікросхемою не використовуються. Адресація прстроїв вводу/виводу здійснюється однобайтовою адресою А0...А7 (7F H=0111 1111).
3.2. Робота мiкросхеми в режимі 0.
У цьому режимi канали групи А та В можуть програмуватись на простий ввiд–вивiд, причому кожна група може працювати як один 8–розрядний (порти А та В) та один 4–розрядний ( С(H) або С(L) ) канали вводу–виводу.
Можливi 16 рiзних комбiнацiй схем вводу–виводу в залежностi вiд вмiсту розрядiв D4, D3, D1, D0.
Послiдовнiсть формування сигналiв керування роботою iнтерфейса в режимi 0 показана часовими дiаграмами при зчитувані (мал.5) та запису (мал.6).
Рисунок 5. Зчитування даних в режимі 0
Слiд пам’ятати, що при зчитуваннi данi на шину D7...D0 поступають зi входiв без запам’ятовування в регiстрах портiв. При запису D7...D0 запам’ятовуються в портах перед видачею на вихiд.
Керуюче слово при зчитуваннi–запису в режимі 0:
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
1 |
0 |
0 |
1/0 |
1/0 |
0 |
1/0 |
1/0 |
Сигнали А0, А1, СS повиннi фомуватися до подачi сигналiв RD або WR та тривати пiсля їх закiнчення. Данi на входах портiв А, В, С (вхід) при зчитуваннi мають встановлюватись до сигналу RD. Iнформацiя на шинi даних (D7...D0) повинна встановлюватись до сигналу WR та зберiгатись пiсля його закiнчення (те ж у випадку з сигналом RD).
П
риклад
1.
Необхiдно скласти програму для зчитування даних з молодших розрядiв порта С (пiвпорт С(L)) i запису їх в порт виводу В. Данi будуть задаватись трьома тумблерами, що пiд’єднанi до трьох розрядiв пiвпорта C(L), i виводитися на вiсiм свiтлодiодiв, пiд’єднаних до порта В. Для програмування пiдпорта С(L) на ввiд, а порта В на вивiд, необхiдно в керуючий регiстр записати керуюче слово
01010001 = 81
Адреса керуючого регiстра (КР) – 111110 11 = FB ,
адреса порта С – 111110 10 = FA,
адреса порта В – 111110 01 = F9.
Програма для перезапису даних з порта вводу в порт виводу подана в табл. 3.
Таблиця 3.
Адреса |
Машинний код |
Асемблер |
Коментар |
||
Мітка |
Команда |
||||
8000 |
3Е 81 |
|
MVIA. 81 |
Запис в акумулятор А керуючого слова |
|
8002 |
D3 FB |
|
OUT FB |
Запис вмісту акумулятора в керуючий регістр ППІ |
|
8004 |
DB FA |
VVOD |
IN FA |
Зчитування даних з півпорту вводу С(L) в акумулятор |
|
8006 |
D3 F9 |
|
OUT F9 |
Запис вмісту акумулятора в порт виводу В |
|
8008 |
C3 04 80 |
|
JMPVVOD |
Повернення на ввід |
|
За рахунок органiзацiї циклу програма постiйно здiйснює зчитування даних з трьох тумблерiв i виводить їх на свiтлодiоди. Замiна стану одного з тумблерiв вiдповiдае змiнi стану свiтлодiоду у вiдповiдному розрядi.
Для зупинки програми необхiдно натиснути клавiшу "СБРОС".
Так як при вводi даних в акумулятор використовуються тiльки три тумблери для формування чотирибiтового слова (нульовий розряд не пiд’єднаний, що вiдповiдає логiчнiй 1), необхiдно видiляти певнi бiти слова, а iншi iгнорувати. Видiлення певних бiтiв слова виконується за допомогою логiчноi функцii "I" i називається маскуванням.
Маскування реалiзується в МП командами ANI, ANA i виконується iндивiдуально для кожного бiта, що мiстися в акумуляторi (кожен бiт слова, що записаний в акумуляторi, множиться на вiдповiдний бiт слова, який вказується командою ANI (ANA)). Пiсля виконання цих команд незмiнними залишаються бiти акумулятора тiльки в тих розрядах, над якими виконувалось логiчне множення на 1.
Нехай потрiбно ввести через C(L) число 0110 (06). Тумблерами задаємо значення 1...3 розрядiв. Нульовий розряд завжди буде рiвний 1 (тобто є можливiсть задавати тiльки непарнi числа). Таким чином, на входi C(L) одержимо число 0111 (07). Щоб ввести 0110, необхiдно виконати маскування для першого, другого i третього розрядiв числа 0111, а значення молодшого розряду iгнорувати. Для цього використовуємо команду ANI OE (1110), за якою молодший розряд числа в акумуляторi множиться на 0. Результатом виконання команди буде
(опер.I) 0000 0111 – 07 (вмiст акумулятора)
0000 1110 – 0Е (маска)
––––––––––––––––––
