Разработка цифрового фильтра на основе микропроцессорной системы (МПС). Распределение адресного пространства, страница 4

add al,ds:[1]            ;al=Y=Yprev+Td*Xprev

mov ah,al                ;сохраняем Y в ah

xor dx,dx

in al,dx                    ;предварительное считывание с АЦП

mov cx,20               ;задержка на 180 тактов (36мкс)

a1:

loop a1

in al,dx                    ;считывание с АЦП значения X

mov bl,al

mov dx,8001h

a2:         in al,dx                    ;считывание готовности передатчика

test al,1h

jz a2                        ;если передатчик не готов, вновь опросить его

mov al,bl

mov dx,8000h

out dx,al                  ;загрузка X в ВВ51

mov dx,8001h

a3:         in al,dx                    ;считывание готовности передатчика

test al,1h

jz a3                        ;если передатчик не готов, вновь опросить его

mov al,ah

mov dx,8000h

out dx,al                  ;загрузка Y в ВВ51

mov dx,4000h

mov al,ah                ;восстанавливаем Y в al

out dx,al                  ;передача Y на ЦАП

mov ds:[1],ah          ;сохранение в памяти нового значения Yprev=Y

mov ds:[0],bl          ;сохранение в памяти нового значения Xprev=X

iret                          ;вернуться из обработчика прерывания в основную программу


7. Алгоритм работы программы

В момент подачи питания программа начинает выполняться, начиная с адреса 0FFF0h. По этому адресу расположены команды перехода на основную программу, расположенную начиная с адреса 400h. В теле основной программы в начале инициализируются сегменты данных и стека. Далее идет блок инициализации последовательного интерфейса КР580ВВ51А. В нем задается режим асинхронной передачи 8N1 с коэффициентом деления частоты тактового входа на 16, сбрасываются биты ошибок и разрешается передача данных. После этого идет блок инициализации таймера К1810ВИ54. В нем инициализируются 2 канала: 0-й (в режиме 2) и 1-й (в режиме 3). 0-й канал генерирует однотактовые импульсы с частотой 1кГц, а 1-й канал – меандр с частотой 416666Гц. Затем в программе разрешаются аппаратные прерывания и процессор переходит в режим ожидания.

При поступлении на МП сигнала запроса прерывания, в соответствии с 255-м вектором прерывания происходит переход на подпрограмму обработки прерываний по адресу 440h (одновременно запрещаются аппаратные прерывания). Начиная с этого адреса запускается алгоритм вычисления значения Y, после чего происходит считывание нового значения сигнала с АЦП. Считывание с АЦП выполняется в 2 этапа: предварительный и собственно считывание. Считывания разделяются интервалом времени (36мкс), необходимым для аналого-цифрового преобразования. Следующая часть программы управляет передачей данных через ВВ51А. Для каждого передаваемого байта сначала опрашивается слово-состояния ВВ51А и анализируется готовность передатчика. В случае если передатчик не готов, происходят повторные опросы слова-состояния до тех пор, пока передатчик не будет готов к приему новых данных.

Найденное значение сигнала Y передается на ЦАП и вместе со считанным с АЦП значением X сохраняется в ОЗУ. В конце подпрограммы разрешаются аппаратные прерывания, процессор возвращается из подпрограммы и вновь ожидает следующего запроса прерывания.


8. Список литературы

1.  А.С. Глинченко, М.М. Мичурина – «Микропроцессоры и вычислительные устройства. Прогр. и метод. указания.», КрПИ, Красноярск, 1990г.

2.  Ю.М. Казаринов – «Микропроцессорный комплект К1810», “Высшая школа”, Москва, 1990г.

3.  С.В. Якубовский и др. – Cправочник: «Цифровые и аналоговые интегральные микросхемы», “Радио и связь”, Москва, 1990г

4.  Б.В. Тарабрин, С.В. Якубовский - «Справочник по интегральным микросхемам», Москва, “Энергия”, 1977.