Анализ технического задания. Составление карты распределения адресного пространства. Модуль управления и индикации CPAN, страница 19

Напряжение Х7 преобразуется с помощью АЦП в цифровую форму N7, затем вычисляется функция Q4=A0+A1*N7, где А0 и А1 - коэффициенты, хранящиеся в ПЗУ МПС.

Предполагается, что значения всех исходных величин меньше 1 и представляются в форме с фиксированной запятой. Значение коэффициента А1 равно 0.25, а значение А0=0.17. Значение Q4 с помощью ЦАП преобразуется в напряжение Y4, которое далее поступает на ИМ.

Рис. 28. Схема алгоритма управления объектом.


4.2.  Разработка блоков алгоритма

4.2.1  Начальная установка МПС

При инициализации МПС необходимо выполнить следующие действия:

·  запрещение всех аппаратных прерываний на время инициализации,

·  программирование регистров контроллера прерываний,

·  заполнение таблицы векторов прерываний,

·  организация стека в ОЗУ,

·  программирование портов ввода/вывода на чтение или запись в порты,

·  гашение всех индикаторных элементов,

·  разрешение аппаратных прерываний.

cli      ;Запрещение всех аппаратных прерываний.

; Организация стека.

; Установка сегментных регистров

               xor ax,ax

               mov ss,ax

               mov sp,0FFFh ; 0FFFh - старшая ячейка ОЗУ

               mov ds,ax

         ;Программирование параллельного интерфейса .

         ;  Порт А - вывод информации (значения Q4  через ЦАП)

         ;  Порт В - вывод информации для управления таймером

         ; разряды С0-С2 порта С вывод - Y1-Y3

         ; разряды С4-С7 порта С - ввод значений Х1-Х4

               mov al,10001010b

               out [53h], al

;Программирование контроллера прерываний.

                              ;СКИ1

             mov al , byte ptr 00010010b

out [40h], al

                              ; СКИ2

              mov al, byte ptr 00000000b

out [41h], al

; Заполнение таблицы векторов прерываний.

                              ;Прерывание 0

              xor bx,bx

              mov [bx],offset IRQ0;

              mov [bx+2],word ptr seg IRQ0

                              ;Прерывание 1

              mov [bx+4],offset IRQ1;

              mov [bx+6],word ptr seg IRQ1

                              ;Прерывание 2

              mov [bx+8],offset IRQ2;

              mov [bx+10],word ptr seg IRQ2

  ; Программирование контроллера клавиатуры/дисплея

              mov al,00000001b

              out [49h], al

              mov al,39h       ;частота перебора линий сканирования

              out [49h], al

                               ;гашение всех индикаторных элементов.

             mov al, byte ptr 10010000b

out [49h], al

              mov al,0FFh

              out [48h], al

              out [48h], al

              out [48h], al

              out [48h], al

;Чтение значений Х1,Х2,Х3,Х4.

in al,[52h] ;AL = X4 X3 X2 X1 0 0 0 0

xor bx,bx      

  ;Преобразование формата хранения сигналов к удобному для обработки

             rol al,1        ;сдвиг влево на 1 разряд

                               ;с установкой флага переноса

 adc bh,0        ;bh= 0 0 0 0  0 0 0 X4 - сложение с учетом переноса

 rol al,1        ;далее - аналогично для X3,X2,X1

adc bl,0        ;bl=X3

 rol al,1

 adc ah,0        ;ah=X2

 rol al,1        ;al = 0 0 0 0 X4 X3 X2 X1

              mov [x1234],al  ; x1234 - имя ячейки памяти

              and al,1        ;al=X1

 ;Вычисление логической функции f1 = X1+X2+X3+X4

                               ;Вычисление значения Y1 в AL

               xor al,ah       ;X1+X2

               xor al,bl       ;X1+X2+X3

               xor al,bh       ;X1+X2+X3+X4

                               ;Сравнение с нулем

               or  al,al       ;Вырабатывается флаг Z

                               ;Если равно единице, то выдаем сигнал 1

               jz notY1

;Если f1 равна 1

             ;Формирование Y1 длительностью Т1 = 90мс.