call ADCwork ; возьмем значение_2
shld Last_PS ; и сохраним
RET ;
;----------------------------------
ADCwork: ; получим усреднение за период
call ADCsubw ; I раз за период сети
xchg ; (HL)<-(DE)
call ADCsubw ; II раз за период сети
RST 1 ; сложим с предыдущим
call ADCsubw ; III раз за период сети
RST 1 ; сложим
call ADCsubw ; IV раз за период сети
RST 1 ; сложим (пока все в HL)
mvi c,3 ; делить на 8 (три сдвига)
ADCmid: ora a ; CF=0
mov a,h ;
rar ;
mov h,a ;
mov a,l ;
rar ;
mov l,a ;
dcr c ;
JNZ ADCmid ;
RET ; выход с результатом в HL
;---------------------------------ADCsubw: ; Оцифровка по предварительно
; установленному каналу
mvi a,5*2+1 ; PC5=1
out Port1RCW ; гашение AЦП
mov a,a ; зад. 5 мкс
mvi a,5*2+0 ; PC5=0
out Port1RCW ; преобразование AЦП
call Delay5ms ; зад. 5 мс
in Port1C ; ст. биты AЦП
ani 03h ; выделим ADCdata9,8
mov d,a ;
in Port1B ; младшие биты ADC
mov e,a ; в (DE) - Uвх*2 (на входе -
; усилитель)
RET ;
;----------------------------------
Delay5ms: ; Задержка 5 мс
mvi d,200 ; 5мс всего
Loop5ms: mov a,a ; 5T
mov a,a ; 5T
dcr d ; 5T
JNZ Loop5ms ; 10T - в цикле 25T
RET ;
ENDPROC ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; CheckLimits
; проверкапределовдавления
;---------------------------------CheckLimits PROC ;
lhld Last_PD ; проверка диастолического
lxi d,Tol_PDmin ;
RST 4 ; сравнение Last и TolMin
JC SetBad_P ;
xchg ;
lxi h,Tol_PDmax ;
RST 4 ; сравнение TolMax и Last
JC SetBad_P ;
lhld Last_PS ; проверка диастолического
lxi d,Tol_PSmin ;
RST 4 ; сравнение Last и TolMin
JC SetBad_P ;
xchg ;
lxi h,Tol_PSmax ;
RST 4 ; сравнение TolMax и Last
JC SetBad_P ;
xra a ;
sta BadPress ; Давление O'K
CheckLow_P: lhld Last_PS ;
lxi d,P_ZERO ;
RST 4 ; проверка на пропадание давления
JC SetNONE_P ;
xra a ;
sta LowPress1 ; обнулим
sta LowPress2 ;
RET ; выход по нормальному давлению
;----------------------------------
SetBad_P: lda BadPress ;
ora a ; проверка, было ли раньше плохое
RNZ ; да, уже давно
cma ; (A)=0FFh
sta BadPress ; флаг плохого давления
call SoundON ; вкл. сигнализацию
JMP CheckLow_P ; далее - проверка на пропадание
;---------------------------------SetNONE_P: lda LowPress2 ;
ora a ; проверка, давно ли нету
RNZ ; да, уже давно ( >1min )
lda LowPress1 ; нет, недавно ( <1min )
ora a ;
JNZ SetLow2 ;
cma ; пропало только что,
sta LowPress1 ; установим LowPress1
RET ;
;---------------------------------SetLow2: mvi a,0ffh ; (A)=0FFh
sta LowPress2 ; флаг отсутствия давления 1 мин
call SoundON ; вкл. звук
RET ;
ENDPROC ;
;----------------------------------
;▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
; DoStatistic
; Обработкаданныхидобавлениестатистики
;----------------------------------
DoStatistic PROC ;
lda Count15min ; указ. на счетчик 15 минут
cpi Set_15min ; первый раз?
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.