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

 
 
 
Программирование сегодня — это гонка разработчиков программ, стремящихся писать программы больше и с лучшей идиотоустойчивостью, и вселенной, которая пытается создавать больших и лучших идиотов. Пока вселенная побеждает.

Rick Cook
Русский | Українська



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



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

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

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













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