Разработка схемы ССД и программного обеспечения
В приведенном примере для удобства подключения к МК будем использовать восьмиразрядный АЦП К572ПВ3. Эта БИС также является функционально законченным АЦП, которая непосредственно сопрягается с МП.
Условное схематическое обозначение данного АЦП можно получить из схемы рис.20.1,а, а временные диаграммы его работы - из рис.20.1,б. Уровень "1" на входе #RD обеспечивает "сброс" АЦП, а подача "0" на вход #СS инициирует начало преобразования. Преобразование заканчивается выдачей сигнала BU=1, считывание выходного кода возможно при комбинации #СS=0 и #RD=0. Время преобразования составляет 7,5 мкс. Анализ сигнала готовности следует выполнять по логике, обратной к описанной в предыдущем примере (см. ранее).
Подобная схема управления АЦП позволяет реализовать двойное его использование:
– размещение в системном АП, доступ командами обращения к памяти, которые реализуются с циклами ожидания (в режиме доступа к ОЗУ или ПЗУ). Для МК51 такая схема непригодна, так как команды MOVX с доступом к внешней памяти реализуются без тактов ожидания;
– непосредственное подключение к портам МК, доступ с помощью команд ввода-вывода, работающих с портами.
Подключение БИС АЦП к МК в основном подобно описанному ранее. Следует выделить дополнительные линии портов МК для выдачи сигналов управления на АМХ и сигнала #CS. Благодаря тому, что время преобразования в АЦП мало, использование обмена по прерыванию неэффективно; поэтому разработаем протокол программно-управляемого обмена с ожиданием готовности данных. Таким образом, принимаем такое распределение линий портов:
порт Р0 - прием в МК байта данных с АЦП (результат преобразования);
Р1.0...Р1.2 - выдача с МК кода адреса канала АМХ (0...7);
Р1.3 - выдача сигнала разрешения работы Е для АМХ;
Р1.4 - выдача сигнала RD для сброса/считывания АЦП;
Р1.5 - выдача сигнала CS – разрешения преобразования для АЦП;
Р1.6 - прием в МК сигнала BU занятости АЦП.
Разработка программы обслуживания ССД состоит в точном соблюдении последовательности выдачи и анализа сигналов управления, которая определяется временной диаграммой рис.20.1-б.
Программа может быть представлена в таком виде:
; Декларативная часть
CS bit P1.5
RD bit P1.4
BU bit P1.6
E_AMX bit P1.3
start_P1 equ 01101000B ; Код для стартовой настройки порта Р1
; Инициализация системы
MOV P0, #0FFH ; Порт Р0 - на ввод информации
MOV P1, #start_P1 ; Стартовая выдача сигналов через порт Р1
...
Процедура обслуживания преобразования по одному каналу ожидает в аккумуляторе (А) адрес канала (0...7) и возвращает через аккумулятор результат преобразования по этому каналу.
ADT_chnl: ORL A, #start_P1 ; Объединение слова настройки порта Р1
MOV P1, A ; с номером канала и выдача через порт
NOP
CLR E_AMX ; Включение AMX
SETB RD ; "Сброс" АЦП
NOP ; Интервал - 2 мкс
NOP
CLR CS ; Запуск АЦП
CLR RD ; Разрешение считывания выходного кода АЦП
WAIT: JNB BU, WAIT ; Ожидание готовности данных
MOV A, P0 ; Прием результата преобразования в МК
ORL P1, #01110000B ; Перевод АЦП в начальное состояние (сброс)
SETB E_AMX ; Отключение АМХ
RET
При разработке программы используем процедуру ADT_chnl.
Пусть каналы следует опрашивать поочередно от нулевого к седьмому или от седьмого к нулевому. Данные, которые будут приниматься в МК, будем размещать в виде одномерного массива в РПД, начиная с адреса, например, 40H.
Дополнительно используем регистры:
R0 - для косвенной адресации массива данных в РПД;
R3 - как счетчик каналов в режиме обратного счета (8®0).
Приведем два варианта программной реализации опроса ССД:
; Декларативная часть (дополнение к предыдущему программному фрагменту)
tabl_start DATA 40H ; описание таблицы в РПД
tabl_size EQU 8
tabl_end DATA tabl_start + tabl_size
; Инициализация
; 1) заполнение с начала (0®7) 2) заполнение из конца (7®0)
MOV R0, #tabl_start MOV R0, #tabl_end
MOV R3, #tabl_size MOV R3, #tabl_size
; Реализация опроса восьми каналов
R_Tabl: MOV A, #8 R_Tabl: MOV A, R3
CLR C DEC A ;номер канала
SUBB A, R3 ; номер канала CALL ADT_chnl
CALL ADT_chnl MOV @R0, A
MOV @R0, A DEC R0
INC R0 DJNZ R3, R_Tabl
DJNZ R3, R_Tabl RET
RET
Самостоятельно студенты должны разработать аналогичную схему многоканальной системы сбора данных на основе АЦП К1113ПВ1 (10-разрядный АЦП), сравнить параметры и удобство программирования.
|