Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_mps_lab_5.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2 Мб
Скачать
☆

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Е (маска)

––––––––––––––––––

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]