out PIC_ICW1, al al, 01000000b ; Запись ICW2 в КП (номер вектора прерывания)
out PIC_ICW2, al al, 00000000b ; Запись OCW1 в КП (маскирование прерываний)
out PIC _ICW1, al ; Разрешение аппаратных прерываний
;-
; - Начало основной программы -
;-:
ProgramKlavIn ProgramCalculateY1SetY1SetInd ProgramStart
;-
; - Подпрограмма обработки прерывания -
;-: ax ProgramCalculateY2SetPIT ax
;-
; - Подпрограмма опроса клавиатуры (порта А ППА) -
;-: ax dx bx
; Принять и сохранить значение Х
in ax, PPA_A
mov ds: Data_X, ax
; Принять и сохранить значение К
in ax, PPA_B ds: Data_K, ax
bx dx ax
;-
; - Подпрограмма рассчитывает У1 и выводит его в порт С -
;-SetY1SetInd: ax dx bx
; расчет У1
mov ax, ds: Data_X ; Перемещение переменной X в ax
cmp ax, ds: Data_K ; Сравнивание X и K
jl xmin ; Если X меньше К, то переход на метку xminax, ds: Data_K ; Перемещение переменной K в ax
xmin: add ax, ds: Data_x ; MIN (X, K)+X
mov ds: Data_Y1, ax ; Cохранение результата
; Вывод в порт С
mov bx, ax
and ax, 0000000000001111b ; выделение младшей тетрады в ax
and bx, 0000000011110000b ; выделение старшей тетрады в bx ax, bx ; младшая и старшая тетрады в общий регистр ax
out PPA_C, al
bx dx ax
;-
; - Подпрограмма расчета Y2 и программирования ПИТ -
;-SetPIT: ax dx
; расчет У2 ax, ds: Data_X ; Перемещение переменной X в ax
cmp ax, ds: Data_K ; Сравнивание X и K
jg xmax ; Если X меньше К, то переход на метку xminax, ds: Data_K ; Перемещение переменной K в ax
xmax: add ax, 4d ; MAX (X, K)+4
mov ds: Data_Y2, ax
; программирование ПИТ по значению У2 ax, 0000000000011110b ; записать младший байт в счетчик 0
; и установить режим 3
out Adr_PIT_U, al
out Adr_PIT_0, dl ax, 0000000000101110b ; записать старший байт
out Adr_PIT_U, al Adr_PIT_0, dh ax, 0000000000001110b ; защелкнуть Adr_PIT_U, al dx ax
;-
; - Подпрограмма расчета Y3 -
;-SetPIT: ax dx
; расчет У3
mov ax, ds: Data_X ; Перемещение переменной X в ax
cmp ax, ds: Data_K ; Сравнивание X и K
jg xmax2 ; Если X меньше К, то переход на метку xminax, ds: Data_K ; Перемещение переменной K в ax
xmax2:ax, 2d ; MAX (X, K)*2 ds: Data_Y3, ax
; Программирование ПИТ для У3 ax, 0000000001010000b ; записать младший байт в счетчик 0
; и установить режим 3
out PIT_U, al
out PIT_1, dl ax, 0000000001100000b ; записать старший байт
out PIT_U, al PIT_1, dh ax, 0000000001000000b ; защелкнуть PIT_U, al dx
pop ax
ret
; - После сброса процессор выполняет команду из адреса CS:FFF0h
ORG 0FFF0hProgramBegin
ProgramBegin
Читайте также
Проектирование модуля управления трехфазным асинхронным двигателем
В настоящее время создано множество схем
управления двигателями переменного напряжения. При этом делается большой акцент
на применение в этих схемах специальных унифицированных микросхем ...
Проектирование системы управления вентильным преобразователем
Вентильные преобразователи широко применяются для преобразования энергии,
вырабатываемой и передаваемой в виде переменного напряжения промышленной
частоты 50Гц в электрическую энергию др ...
Основная техническая документация на рабочий проект волоконно-оптической линии передачи
В настоящее время в России в рамках развития единой сети
электросвязи (ЕСЭ) проводятся большие работы по расширению услуг электросвязи,
особенно в части подвижной связи, спутникового и к ...