Для дешифрации внешних устройств используются соответствующие разряды шины адреса, обращенные в ноль, в совокупности с сигналом шины управления , находящимся в состоянии логического нуля. 16-разрядный адрес внешнего устройства разделен на четыре зоны в соответствии с количеством адресуемых ВУ. Зоны ЦАП и компаратора одноразрядные, так как эти устройства не нуждаются в программировании. Зона таймера трехразрядная, ее битам соответствуют входы таймера A1, A0 и . Двухразрядной зоне контроллера клавиатуры и индикации соответствуют сигналы программирования и .
=0 |
16-разрядный адрес ВУ |
|||||
Зарезервировано |
Зона IOP |
Зона таймера |
Зона компаратора |
Зона ЦАП |
Диапазон адресов |
|
111111111 |
11 |
111 |
1 |
0 |
FFF0h |
|
111111111 |
11 |
111 |
0 |
1 |
FFFDh |
|
111111111 |
11 |
110 |
1 |
1 |
FFE3h...FFFBh |
|
111111111 |
10 |
111 |
1 |
1 |
FF9Fh...FFDFh |
5. ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АЛГОРИТМА АНАЛИЗА
Концепция анализа аналогового напряжения на позицию уровня строится на псевдоаппаратной дискретизации исходного сигнала путем считывания состояния компаратора в фиксированные моменты времени, формируемые интервальным таймером с частотой 666 кГц. Согласно логике задания, N отсчетов сигнала периодически проверяются на принадлежность к «низкому» или «высокому», относительно опорного напряжения компаратора, уровню, а среднее по N отсчетам количество выборок сигнала «низкого» уровня выводится на восьмиразрядный семисегментный индикатор с «плавающей» десятичной точкой.
Перед началом выполнения основных операций в главной процедуре main, находящейся по адресу 0800h в РПЗУ (т. е. начиная с третьего килобайта, абсолютный адрес ША – 8800h), производится инициализация счетчика отсчетов сигнала в виде полуслова регистра cx, и по умолчанию инициализируется десятью. Счетчик «низкого» уровня, в качестве которого выступает полуслово регистра ax, инициализируется нулем и, по ходу выполнения программы, будет получать единичные приращения.
Рисунок 6 – Блок схема алгоритма реализации поставленного ТЗ
Инициализация десятиразрядного ЦАП происходит следующим образом. Младшие 2 разряда кода преобразования стабильно находятся в состоянии логического нуля, чем обеспечивается возможность получения на выходе преобразователя одного четного уровня из 1020 возможных. По умолчанию, пороговый уровень компаратора выставляется в +4 В. Минимальный квант напряжения на выходе ЦАП: DU=5/1020≈0.0049 В. Напряжению в 4 В соответствует следующий уровень: 1020∙4/5=816. Таким образом, получаем необходимый уровень преобразователя: 816d=1100110000b, старшие восемь разрядов которого (11001100b=204d) выводятся во внешнее устройство – КР580ИР82.
Интервальный таймер инициализируется на следующий вид работ: канал 0, чтение запись/младшего байта, режим 2, двоичный счет, константа пересчета = 3.
SC1 |
SC0 |
RW1 |
RW0 |
M2 |
M1 |
M0 |
BCD |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
Канал 0 |
Чтение/запись младшего байта |
Режим 2 |
Двоичный счет |
Как уже было отмечено выше, интервальный таймер К1810ВИ54 периодически вырабатывает запросы аппаратного прерывания по входу INTR микропроцессора, чем инициирует запуск процедуры обработки прерывания с формальным идентификатором INTERRUPT_PROC и адресом в РПЗУ 0400h (второй килобайт, абсолютный адрес ША – 8400h).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.