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

 
 
 
«Итерация свойственна человеку, рекурсия божественна.»
L. Peter Deutsch
Русский | Українська


Микропроцессоры и микроконтроллеры :: Канали вводу-виводу на основі МК51 :: Розробка схеми ССД та програмного забезпечення

Розробка схеми ССД та програмного забезпечення

У наведеному прикладі для зручності підключення до МК будемо використовувати восьміразрядний АЦП К572ПВ3. Ця БІС також є функціонально закінченим АЦП, яка безпосередньо сполученої з МП.

rn

Умовне схематичне позначення даного АЦП можна отримати з схеми ріс.20.1, а, а часові діаграми його роботи - з ріс.20.1, б. Рівень "1" на вході # RD забезпечує "сбросу" АЦП, а подача "0" на вхід # СS ініціює початок перетворення. Перетворення закінчується видачею сигналу BU = 1, зчитування вихідного коду можливо при комбінації # СS = 0 і # RD = 0. Час перетворення становить 7,5 мкс. Аналіз сигналу готовності слід виконувати за логікою, зворотного до описаної в попередньому прикладі (див. вище).

rn

Подібна схема управління АЦП дозволяє реалізувати подвійне його використання:

rn

- розміщення в системному АП, доступ командами звернення до пам'яті, які реалізуються з циклами очікування (в режимі доступу до ОЗУ або ПЗУ). Для МК51 така схема непридатна, так як команди MOVX з доступом до зовнішньої пам'яті реалізуються без тактів очікування;

rn

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

rn

rn

Підключення БІС АЦП до МК в основному подібно до описаного раніше. Слід виділити додаткові лінії портів МК для видачі сигналів керування на АМХ і сигналу # CS. Завдяки тому, що час перетворення в АЦП мало, використання обміну за переривання неефективно, тому розробимо протокол програмно-керованого обміну з очікуванням готовності даних. Таким чином, приймаємо такий розподіл ліній портів:

rn

порт Р0 - прийом на МК байтів даних з АЦП (результат перетворення);

rn

Р1.0 ... Р1.2 - видача з МК коду адреси каналу АМХ (0 ... 7);

rn

Р1.3 - видача сигналу дозволу роботи Е для АМХ;

rn

Р1.4 - видача сигналу RD для скидання /зчитування АЦП;

rn

Р1.5 - видача сигналу CS - дозволу перетворення для АЦП;

rn

Р1.6 - прийом на МК сигналу BU зайнятості АЦП.

rn

Розробка програми обслуговування ССД полягає в точному дотриманні послідовності видачі та аналізу сигналів управління, яка визначається тимчасової діаграмою ріс.20.1-б.

rn

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

rn

; декларативная частина

rn

CS bit P1.5

rn

RD bit P1.4

rn

BU bit P1.6

rn

E_AMX bit P1.3

rn

start_P1 equ 01101000B; Код для стартовою налаштування порту Р1

rn

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

rn

MOV P0, # 0FFH; Порт Р0 - на введення інформації

rn

MOV P1, # start_P1; Стартова видача сигналів через порт Р1

rn

...

rn

Процедура обслуговування перетворення по одному каналу очікує в акумуляторі (А) адресу каналу (0 ... 7) і повертає через акумулятор результат перетворення з цього каналу.

rn

ADT_chnl: ORL A, # start_P1; Об'єднання слова налаштування порту Р1

rn

MOV P1, A; з номером каналу та видача через порт

rn

NOP

rn

CLR E_AMX; Включення AMX

rn

SETB RD; "Скидання" АЦП

rn

NOP; Інтервал - 2 мкс

rn

NOP

rn

CLR CS; Запуск АЦП

rn

CLR RD; Дозвіл зчитування вихідного коду АЦП

rn

WAIT: JNB BU, WAIT; Очікування готовності даних

rn

MOV A, P0; Прийом результату перетворення в МК

rn

ORL P1, # 01110000B; Переклад АЦП в початковий стан (скидання)

rn

SETB E_AMX; Відключення АМХ

rn

RET

rn

При розробці програми використовуємо процедуру ADT_chnl.

rn

Нехай канали слід опитувати по черзі від нульового до сьомого або від сьомого до нульового. Дані, які будуть прийматися в МК, будемо розміщувати у вигляді одномірні масиву в РПД, починаючи з адреси електронної пошти, наприклад, 40H.

rn

Додатково використовуємо регістри:

rn

R0 - для непрямої адресації масиву даних у РПД;

rn

R3 - як лічильник каналів в режимі зворотного рахунку (8 ® 0).

rn

Наведемо два варіанти програмної реалізації опитування ССД:

rn

; декларативная частина (додаток до попереднього програмного фрагменту)

rn

tabl_start DATA 40H; опис таблиці РПД

rn

tabl_size EQU 8

rn

tabl_end DATA tabl_start + tabl_size

rn

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

rn

; 1) заповнення з початку (0 ® 7) 2) заповнення з кінця (7 ® 0)

rn

MOV R0, # tabl_start MOV R0, # tabl_end

rn

MOV R3, # tabl_size MOV R3, # tabl_size

rn

; Реалізація опитування восьми каналів

rn

R_Tabl: MOV A, # 8 R_Tabl: MOV A, R3

rn

CLR C DEC A; номер каналу

rn

SUBB A, R3; номер каналу CALL ADT_chnl

rn

CALL ADT_chnl MOV @ R0, A

rn

MOV @ R0, A DEC R0

rn

INC R0 DJNZ R3, R_Tabl

rn

DJNZ R3, R_Tabl RET

rn

RET

rn

Самостійно студенти повинні розробити аналогічну схему багатоканальної системи збору даних на основі АЦП К1113ПВ1 (10-розрядний АЦП), порівняти параметри і зручність програмування.