Розробка схеми ССД та програмного забезпечення
У наведеному прикладі для зручності підключення до МК будемо використовувати восьміразрядний АЦП К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-розрядний АЦП), порівняти параметри і зручність програмування.
|