внений і немає
goto recp1; сигналу-йдемо на мітку recp1
; ---------------------------------------------- ------- перевіряємо прапор переповнення таймера
recp2 btfss INTCON, TOIF; якщо таймер не був переповнений-
goto recp3; сигнал не наш-йдемо на мітку recp3
p> movlw d'252 '; поміщаємо значення "252" для таймера в акумулятор
movwf TMR0 поміщаємо значення з акумулятора в таймер
bcf INTCON, TOIF; встановлюємо в 0 прапор переривання по переповнення таймера
recp4 btfss INTCON, TOIF; перевіряємо прапор переповнення таймера якщо таймер не був переповнений-
btfss PORTA, 1; перевіряємо наявність сигналу на лінії RA1 порту А
якщо таймер переповнений чи ні
goto recp5; сигналу-йдемо на мітку recp5
; якщо таймер НЕ переповнений і є
goto recp4; сигнал-йдемо на мітку recp4
; ---------------------------------------------- ------- перевіряємо прапор переповнення таймера
recp5 btfss INTCON, TOIF; якщо таймер не був переповнений-
goto recp3 сигнал не наш-йдемо на мітку recp3
p> decfsz NUMIMP, 1; зменшуємо значення NUMIMP на "1"
goto recp6; якщо NUMIMP НЕ дорівнює "0"-продовжуємо перевірку
goto main5; якщо NUMIMP дорівнює "0"-повернення з підпрограми
recp3 goto main3; продовження очікування сигналу
; ============================================== ================
calculation; підпрограма обчислення відстані
; інвертуємо значення TIMER1 і
; ---------------------------------------------- ------- TIMER2
movf TIMER1, 0; записуємо значення змінної TIMER1 в акумулятор
clrf TIMER1; Обнуляємо значення TIMER1
sublw d'100 '; з числа 100 віднімаємо значення акумулятора
movwf TIMER1; записуємо отримане значення в змінну TIMER1
movf TIMER2, 0; записуємо значення змінної TIMER2 в акумулятор
clrf TIMER2; Обнуляємо значення TIMER2
sublw d'100 '; з числа 100 віднімаємо значення акумулятора
movwf TIMER2; записуємо отримане значення в змінну TIMER2
; ---------------------------------------------- ------- встановлюємо значення для LAPSE і DIGIT1 .. 3
clrf LAPSE; Обнуляємо значення LAPSE
movlw d'57 '; записуємо в акумулятор значення "57"
movwf LAPSE; записуємо значення акумулятора в змінну LAPSE
clrf DIGIT1 Обнуляємо значення DIGIT1
clrf DIGIT2; Обнуляємо значення DIGIT2
clrf DIGIT3; Обнуляємо значення DIGIT3
; ---------------------------------------------- ------- записуємо в акумулятор від'ємник
calc3 movlw d'6 '; "6"
subwf TIMER1, 1; віднімаємо з змінної TIMER1 значення акумулятора
перевіряємо прапори регістра STATUS
btfss STATUS, C; прапор Z-нульового результату
btfsc STATUS, Z; і прапор C-перенесення
goto calc4; якщо прапори Z і C не рівні 0
goto calc1; якщо Z = 0 і C = 0 означає результат негативний
; ---------------------------------------------- ------- міняємо значення DIGIT1 ... 3 та LAPSE
calc4 incf DIGIT1, 1; збільшуємо змінну DIGIT1 на "1"
movlw d'10 '; записуємо в акумулятор значення "10"
subwf DIGIT1, 0; віднімаємо значення акумулятора з змінної DIGIT1
btfss STATUS, Z; перевіряємо результат на "0"
goto calc2; якщо результат не "0" йдемо на мітку
; ---------------------------------------------- ------- calc2
decf DIGIT1, 1; якщо результат дорівнює "0" зменшуємо змінну DIGIT1 на "1"
incf DIGIT2, 1; збільшуємо змінну DIGIT2 на "1" (переносимо розряд)
movlw d'10 '; записуємо в акумулятор значення "10"
subwf DIGIT2, 0; віднімаємо значення акумулятора з змінної DIGIT2
btfss STATUS, Z; перевіряємо результат на "0"
goto calc2; якщо результат не "0" йдемо на мітку
; ---------------------------------------------- ------- calc2
decf DIGIT2, 1; якщо результат дорівнює "0" зменшуємо змінну DIGIT2 на "1"
incf DIGIT3, 1; збільшуємо змінну DIGIT3 на "1" (переносимо розряд)
movlw d'10 '; записуємо в акумулятор значення "10"
subwf DIGIT3, 0; віднімаємо значення акумулятора з змінної DIGIT3
btfss STATUS, Z; перевіряємо результат на "0"
goto calc2; якщо результат не "0" йдемо на мітку calc2
decf DIGIT3, 1; якщо результат дорівнює "0" зменшуємо змінну DIGIT3 на "1"
goto calc5 виходимо з підпрограми тому досягнуто значення 99,9
; ---------------------------------------------- ------- коригуємо похибка перекладу
calc2 decfz LAPSE, 1; зменшуємо значення LAPSE на 1
goto calc3; якщо мінлива LAPSE не дорівнює "0"-йдемо на мітку calc3
movlw d'57 '; записуємо в акумулятор значення "57"
movwf LAPSE; записуємо значення акумулятора в змінну LAPSE <...