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 ;вернуться из обработчика прерывания в основную программу
В момент подачи питания программа начинает выполняться, начиная с адреса 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 сохраняется в ОЗУ. В конце подпрограммы разрешаются аппаратные прерывания, процессор возвращается из подпрограммы и вновь ожидает следующего запроса прерывания.
1. А.С. Глинченко, М.М. Мичурина – «Микропроцессоры и вычислительные устройства. Прогр. и метод. указания.», КрПИ, Красноярск, 1990г.
2. Ю.М. Казаринов – «Микропроцессорный комплект К1810», “Высшая школа”, Москва, 1990г.
3. С.В. Якубовский и др. – Cправочник: «Цифровые и аналоговые интегральные микросхемы», “Радио и связь”, Москва, 1990г
4. Б.В. Тарабрин, С.В. Якубовский - «Справочник по интегральным микросхемам», Москва, “Энергия”, 1977.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.