lxi h,SminStart ; допусковых
shld Tol_PSmin ; предельных
lxi h,DmaxStart ; значений
shld Tol_PDmax ; по
lxi h,DminStart ; дефолту
shld Tol_PDmin ;
mvi a,Set_1sec ; установка
sta Count1sec ; счетчиков
mvi a,Set_1min ; времени
sta Count1min ;
mvi a,Set_15min ;
sta Count15min ;
mvi b,1 ;
mvi a,0 ;
lxi h,IndMode ; указатель на системные режимы
mov M,b ; первый режим
inx h ; InputSel
mov M,a ; еще ничего не вводили
inx h ;
mov M,a ; нуль в AlarmOFF
sta LowPress1 ; обнулим флаги
sta LowPress2 ; отсутствия давления
lxi h,Cur_PDmin ;
mvi c,24 ; к-во переменных по статистике
StatClear: mov M,a ;
dcr c ; очистим диапазон
JNZ StatClear ; Cur_PDmin - Work_PDmin
call Display ; чтобы засветился дисплей
RET ;
ENDPROC ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; MAIN
; менеджер времени и системных ресурсов
;----------------------------------
MAIN PROC ;
call PanelScan ; опрос кнопок на панели
lxi h,Count1sec ; указ. на счетчик 1 секунды
mov a,M ;
dcr a
mov M,a
RNZ ; ВЫХОД если не >секунда<
mvi a,Set_1sec
mov M,a ; подг. к новому отсчету секунды
CheckMin:
lxi h,Count1min ; указ. на счетчик 1 минуты
mov a,M ;
dcr a
mov M,a
RNZ ; ВЫХОД если не >минута<
lda LowPress2 ;
ora a ; не пропало ли давление вообще?
CZ SoundOFF ; выключим звук
call GetAData ; если >минута< то опрос AЦП
call CheckLimits ; проверим пределы (там и SoundON)
call DoStatistic ; обработаем данные
RET ;
ENDPROC ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; SoundON
; Включитьзвуковуюисветовуюсигнализацию
;----------------------------------
SoundON: mvi a,7*2+1 ;
out Port2RCW ; включим звук
ret ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; SoundOFF
; Выключитьзвуковуюисветовуюсигнализацию
;----------------------------------
SoundOFF: mvi a,7*2+0 ;
out Port2RCW ; выключим звук
ret ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; PanelScan
; Сканированиекнопокипереключателейнапанелиуправления
;----------------------------------
PanelScan PROC ;
in Port1A ; кнопки вида индикации
cma ; к полож. логике
ani 00111111b ; активны только PA5-PA0
call PosToBin8 ; преобразуем в дв. код
lxi h,P_IndMode ;
cmp M ; проверка на дребезг
mov M,a ; сохраним новое состояние клавиш
JNZ Key1Scan ;
lxi h,IndMode ;
cmp M ; проверка на изменение состояния
JZ Key1Scan ;
mov M,a ; сохр. новое состояние
call Display ; обновим индикацию
Key1Scan: ;
in Port1A ; кнопки ввода пределов
cma ; к полож. логике
push PSW ; сохраним образ
ani 00001111b ; активны только PA3-PA0
call PosToBin8 ; преобразуем в дв. код
lxi h,P_InputSel ;
cmp M ; проверка на дребезг
mov M,a ; сохраним новое состояние клавиш
JNZ Key2Scan ;
lxi h,InputSel ;
cmp M ; проверка на изменение состояния
JZ Key2Scan ;
mov M,a ; сохр. новое состояние
ora a ; кн. нажата или отпущена?
JZ Key2Scan ; отпущена
lda switch ;
ora a ; проверим режим ввода
JZ Key2Scan ; уходим, если режим индикации
call SetTol ; если режим ввода то…
call Display ;
Key2Scan: ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.