Микропроцессоры и микроконтроллеры

 
 
 
Не волнуйтесь, если что-то не работает. Если бы всё работало, вас бы уволили.
Mosher’s Law of Software Engineering
Русский | Українська



На правах рекламы:



Rambler's Top100 Рейтинг@Mail.ru
Микропроцессоры и микроконтроллеры :: Канали вводу-виводу на основі МК51 :: Побудова каналів прийому-передачі даних в паралельному коді

Побудова каналів прийому-передачі даних в паралельному коді

Розширення кількості портів вводу-виводу даних в паралельному коді для МК51 може виконуватися таким чином:

rn

- підключення зовнішніх регістрів - безпосередньо до портів МК51 та розміщення як елементів ВПД через системний інтерфейс МК51;

rn

- підключення спеціалізованих ВІС портів вводу-виводу - безпосередньо до портів МК51 та розміщення як елементів ВПД через системний інтерфейс МК51;

rn

- підключення зсуваються регістру до послідовного порту ( «повільний» паралельний порт).

rn

17.3.1. Підключення зовнішніх регістрів до МК51

rn

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

rn

Безпосереднє підключення регістрів до портів МК51

rn

Реалізується у випадку, коли МК51 використовується без зовнішньої пам'яті даних. При цьому група зовнішніх (однотипних) регістрів своїми лініями D0 ... D7 паралельно підключаються до одного з портів МК51. Підключення повинно виконуватися через буферні підсилювачі-повторювачі. Через інший порт МК51 програмним шляхом повинні видаватися сигнали управління регістра.

rn

На схемі мал. 17.2 для прикладу показано підключення 4-х регістрів в режимі видачі даних з МК51. Нехай порт Р0 служить для передачі байтів даних, а порт Р1 - для видачі сигналів керування.

rn

Рис. 17.2

rn

Лінії Р1.0 і Р1.1 використовуються для створення номера регістра, через який повинен бути виданий поточний байт даних. Для вибору одного регістру використовується дешифратор, виходи якого є унікальними сигналами синхронізації для регістрів. Лінія Р1.2 служить для включення /відключення дешифратор, і, таким чином, всього блоку передачі (для встановлення адреси і синхронізації спрацьовування). Лінія Р1.3 використана для видачі сигналу дозволу передачі через регістри.

rn

Для видачі байтів з акумулятора МК51 через регістр RG1 потрібно виконати такі команди

rn

SETB P1.0; формування номера регістр

rn

CLR P1.1

rn

MOV P0, A; видача байта через порт

rn

CLR P1.2; включення дешифратор - видача строба запису в RG1

rn

SETB P1.2; відключення дешифратор - зняття строба

rn

SETB P1.3; видача сигналу дозволу видачі через регістри

rn

Самостійно - модифіковані схему та програму для прийому даних у МК51, а також забезпечити роздільне управління видачею через регістри (у базовій і нової схеми).

rn

Підключення регістрів як елементів ВПД

rn

У цьому випадку кожен регістр логічно розглядається як байт в адресному просторі ВПД. Тому видача байтів в регістр повинна виконуватися за допомогою команди MOVX. Фізично регістри підключаються до системного інтерфейсу МК51. Адреса, що видається з МК через системний інтерфейс, повинен надходити на адресний селектор (на основі дешифратор), функцією якого є формування строба запису в потрібний (тобто адресуемий) реєстр. Має сенс об'єднати цей сигнал по «І» з сигналом # WR, формується МК при виконанні команди MOVX, т.к. дані видаються з МК пізніше, ніж адресу, але в момент активності сигналу # WR. Варіант схеми представлений на мал. 17.3.

rn

Для передачі байтів з МК через регістр RG1 необхідні такі команди:

rn

MOV DPTR, # <адреса регістра RG1>; настроювання регістра DPTR

rn

MOVX @ DPTR, A; видача байтів в регістр RG1

rn

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

rn

rn

Рис. 17.3

rn

17.3.2. Підключення спеціалізованої БІС портів вводу-виводу К580ВВ55
безпосередньо до МК51

rn

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

rn

З точки зору програміста ППІ розглядається як чотири комірки пам'яті в ВПД: регістри-фіксатори каналів А, B, C і регістр налаштування режимів ППІ - регістр керуючого слова (РУС).

rn

Електричний інтерфейс ППІ з мікропроцесорної системою представлений шиною даних D0-D7, лініями А0, А1 для адресації внутрішніх регістрів портів, сигналом # CS дозволу роботи ППІ і сигналами стробірованія читання - # RD і запису - # WR.

rn

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

rn

Принципи програмування ППІ докладно викладено в літературі.

rn

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

rn

Можна запропонувати такий розподіл ліній портів МК: порт Р0 - введення-виведення даних, порт Р1 - видача адресних сигналів та сигналів управління. Можлива схема підключення ППІ до МК51 показана на ріс.17.4.

rn

rn

Нехай канал А використовується в режимі вводу, канал B - виводу, канал С - виводу. Декларативная частина програми при цьому має вигляд

rn

INIT_PPI equ 10010000B

rn

CS bit P1.2

rn

A0 bit P1.0

rn

A1 bit P1.1

rn

RD bit P1.3

rn

WR bit P1.4

rn

OUT_INF data 70H

rn

IN_INF data 60H

rn

; Ініціалізація системи

rn

SETB CS; CS = 1

rn

SETB RD; RD = 1

rn

SETB WR; WR = 1

rn

CLR A0

rn

CLR A1

rn

; Настройка ППІ (завантаження РУС)

rn

SETB A0 Адреса РУС "11"

rn

SETB A1

rn

CLR CS; CS = 0

rn

MOV P0, # INIT_PPI

rn

CLR WR; Запис у РУС

rn

NOP

rn

NOP

rn

ORL P1, # 00010100B; зняття сигналів управління

rn

; Висновок через порт В; Введення байтів з порту А

rn

SETB A0; Адреси CLR A0; Адреси

rn

CLR A1; каналу У CLR A1; каналу А

rn

CLR CS MOV P0, # 0FFH; порт Р0 на

rn

MOV P0, # OUT_INF CLR CS; введення

rn

CLR WR CLR RD

rn

NOP NOP

rn

NOP MOV INF_IN, P0

rn

ORL P1, # 00010100B ORL P1, # 00001100B

rn

17.3.3. Підключення ППІ як елемента ВПД

rn

У цьому випадку кожен регістр каналу ППІ логічно розглядається як осередок ВПД з відповідними принципами звернення до неї. Обмін між МК51 і ППІ буде здійснюватися під керуванням МК51 по команді MOVX. При цьому видача адреси каналу та сигналів управління # RD і # WR виконується автоматично.

rn

Варіант підключення ППІ до системного інтерфейсу МК51 показано на мал. 17.5. Системний інтерфейс надає в розпорядження зовнішніх пристроїв демультіплексірованние, фізично окремі шини адреси
А0-А7 (А15) і даних D0-D7. Сигнали # RD і # WR, які генеруються в МК51, подаються безпосередньо на однойменні входи ППІ. Сигнали на входах ППІ А0 та А1 визначають внутрішній адресу каналу А, B, C або РОС, ці висновки підключаються безпосередньо до адресним лініях А0, А1. У разі використання малої кількості БІС ППІ для спрощення схем дешіфраціі адрес порти ППІ логічно розміщують по старшим або молодшим адресами системного адресного простору. Таким чином, старші адресні лінії (А2-А7) підключаються до схем дешіфраціі для формування сигналу # CS дозволу роботи ППІ. У даній схемі підключення зроблено згідно з таким розподілом адрес: канал А - 0FCH, канал В - 0FDH, канал С - 0FEH, реєстр РУС - 0FFH.

rn

Нехай треба забезпечити такий розподіл ліній портів: канали А і В - на висновок інформації, канал С - введення. Всі канали працюють в режимі 0 - програмно-керованого синхронного обміну.

rn

rn

; Код налаштування ППІ:

rn

INIT_PPI equ 10001001B

rn

; символічні імена для адрес портів і РКС

rn

SA_A equ 0FCH

rn

SA_B equ 0FDH

rn

SA_C equ 0FEH

rn

SA_R equ 0FFH

rn

; Ячейки РПД для даних, які видаються і приймаються

rn

OUT_INF1 data 70H

rn

OUT_INF2 data 71H

rn

IN_INF data 60H

rn

; Ініціалізація ППІ

rn

MOV A, # INIT_PPI

rn

MOV R0, # SA_R

rn

MOVX @ R0, A

rn

; Видача байта через порт А; Видача байта через порт В

rn

MOV R0, # SA_A MOV R0, # SA_B

rn

MOV A, OUT_INF1 MOV A, OUT_INF2

rn

MOVX @ R0, A MOVX @ R0, A

rn

; Прийом байта через порт С

rn

MOV R1, # SA_C

rn

MOVX A, @ R1

rn

MOV IN_INF, A

rn

Порівняльний аналіз схем на ріс.17.4 і 17.5 показує, що при безпосередньому підключенні ППІ до портів МК51 (тобто логічному розміщенні в ППІ в АПВВ) застосовується мінімум апаратних ресурсів для підключення ППІ до МК51, але виникають труднощі у програмній підтримці обміну за рахунок «ручного» формування сигналів управління. Розміщення ППІ в просторі зовнішньої пам'яті вимагає побудови системного інтерфейсу МК51 і блоків дешіфраціі адреси, але при цьому досягається простота програмування. Крім того, подібне розміщення має практично необмежені можливості збільшення кількості портів вводу-виводу. При цьому програмна реалізація практично не ускладнюється. Апаратна реалізація потребує побудови каскадних схем дешіфраціі адреси. Отже, у разі використання великої кількості ППІ або необхідного наявності зовнішньої пам'яті в системі підключення ППІ як елемента ВПД є єдино можливим варіантом побудови системи.













При использовании любых материалов с сайта обратная ссылка на сайт Микропроцессоры и микроконтроллеры обязательна.