pop PSW ; восстановим образ
mov b,a ; на будущее
ani 00010000b ; выделим PA4 - сброс тревоги
lxi h,P_alarmOFF ;
cmp M ; проверка на дребезг
mov M,a ; сохраним новое состояние клавиш
JNZ Key3Scan ;
lxi h,alarmOFF ;
cmp M ; проверка на изменение состояния
JZ Key3Scan ;
mov M,a ; сохр. новое состояние
ora a ; проверим сброс тревоги
CNZ SoundOFF ; = 1 - выключим звук
Key3Scan: ;
mov a,b ; восстановим образ
ani 00100000b ; выделим PA5 - ввод / индикация
lxi h,P_switch ;
cmp M ; проверка на дребезг
mov M,a ; сохраним новое состояние клавиш
RNZ ;
lxi h,switch ;
cmp M ; проверка на изменение состояния
RZ ;
mov M,a ; сохр. новое состояние
RET ;
;---------------------------------PosToBin8: ; позиц. код из (A) в двоичный.
ora a ; приоритет у младшего разряда.
mov b,a ; нуль в (b), если он там есть
JZ Compl8 ; выход если нуль
mvi c,8 ; число бит
mvi b,0 ; начнем считать с нуля
PosRotate8: inr b ; 5T
rar ; сдвиг мл. бойта позиц. Кода 4T
JC Compl8 ; пока не дойдем до 1 в коде 10T
dcr c ; 5T
JNZ PosRotate8 ; или выход по коцу байта 10T
Compl8: ; дополним чтобы стабилиз. время
mvi a,9 ;
sub b ;
ComplLoop8: mov a,a ; 5T
mov a,a ; 5T
mov a,a ; 5T
mov a,a ; 5T
dcr a ; 5T
JNZ ComplLoop8 ; 10T доработка до 9 циклов
mov a,b ; двоичное число - в (a)
RET ; выход с рез-том в (A)
ENDPROC ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; SetTol
; установить новый предел давления
;----------------------------------
SetTol: PROC ;
call GetDEKAD ;
lxi d,301 ;
RST 4 ; сравнение
JC GoodTol ; если <300
lxi h,300 ;
GoodTol: push h ; сохраним число с переключателей
lda InputSel ; номер вводимого параметра
dcr a ; первый ввод - Tol_PDmin+0
rlc ; x2 (word)
lxi h,Tol_PDmin ; указатель на пред. параметры
mov e,a ;
mvi d,0 ;
RST 1 ; споз. на переменную предела
pop d ; восст. число с перекл.
mov M,e ;
inx h ; сохр. новое значение
mov M,d ; нужного предельного параметра
RET ;
;
;----------------------------------
GetDEKAD: mvi a,SelectD1 ; Взять число с дек. перекл.
out Port2RCW ; выбор SA5, единицы
mov a,a ;
mov a,a ; задержка 10 мкс + 10 на call
call Get1DEC ; взять единицы
lxi h,Tbyte1 ;
mov M,a ; запомнить в Tbyte1
mvi a,ClearD1 ;
out Port2RCW ; отключение SA5
mvi a,SelectD10 ;
out Port2RCW ; выбор SA6, десятки
mov a,a ;
mov a,a ; задержка 10 мкс + 10 на call
call Get1DEC ; взять единицы
inx h ;
mov M,a ; запомнить в Tbyte2
mvi a,ClearD10 ;
out Port2RCW ; отключение SA6
mvi a,SelectD100 ;
out Port2RCW ; выбор SA7, сотни
mov a,a ;
mov a,a ; задержка 10 мкс + 10 на call
call Get1DEC ; взять единицы
inx h ;
mov M,a ; запомнить в Tbyte3
mvi a,ClearD100 ;
out Port2RCW ; отключение SA7
dcx h ;
mov a,M ; возьмем десятки
mov b,a ;
rlc ; x2
rlc ; x4
rlc ; x8
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.