Побудова каналів прийому-передачі даних в паралельному коді
Розширення кількості портів вводу-виводу даних в паралельному коді для МК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 і блоків дешіфраціі адреси, але при цьому досягається простота програмування. Крім того, подібне розміщення має практично необмежені можливості збільшення кількості портів вводу-виводу. При цьому програмна реалізація практично не ускладнюється. Апаратна реалізація потребує побудови каскадних схем дешіфраціі адреси. Отже, у разі використання великої кількості ППІ або необхідного наявності зовнішньої пам'яті в системі підключення ППІ як елемента ВПД є єдино можливим варіантом побудови системи.
|