ify"> movwf PORTB; очищення РКІ
call byte_to_lcd; передача байта в РКІ
movlw 0x06
movwf PORTB; режим введення даних
call byte_to_lcd; передача байта в РКІ
; **********************************
; Пауза 25 мс
; **********************************
msT1; очищення T1T2; очищення T20x64; T1; T1 = 100
_1 movlw 0xFA; T2; T2 = 250
_0 decfsz T2, F; T2 = T2-125_0T1, F; T1 = T1-125_1
; **********************************
; Пауза 50 мкс
; **********************************
mksT1; очищення T10x32; T1; T1 = 50
_0 decfsz T1, F; T1 = T1-150_0
; **********************************
; Пауза 100 мкс
; **********************************
mksT1; очищення T10x64; T1; T1 = 64
_0 decfsz T1, F; T1 = T1-1 100_0
return
; **********************************
; Передача байта в РКІ
; ********************************** _to_lcdPORTA, 2; RW = 0 ; пауза 1 мксPORTA, 3; E = 1;; пауза 3 мкс; PORTA, 3; E = 0100mks; пауза 100 мкс
; **********************************
; Вимірювання тривалості імпульсу
; **********************************
measure
clrf TMR1L; очищення TMR1L
clrf TMR1H; очищення TMR1H
m1 btfss PORTA, 0; вхідний сигнал дорівнює 1?
goto m1
bsf T1CON, 0; запуск таймера
m2 btfsc PORTA, 0; вхідний сигнал дорівнює 0?
goto m2
bcf T1CON, 0; зупинка таймера
movf TMR1L, w;
movwf TL; пересилання результатів вимірювання в регістри
movf TMR1H, w; TH;
; **********************************
; Обчислення числового еквівалента
; **********************************
ekv
clrf N; очищення приватного
clrf N0; очищення залишку
molvw 0xC8;
movf k, w; дільник = 200
movlw 0x10;
movwf count; організація лічильника на 16
ekv2 rlf TL, F; зрушення діленого вліво
rlf TH, F;
rlf N0, F; зсув приватного влевоk, w;