ll calculation; викликаємо підпрограму обчислення відстані
; ============================================== ================
initialization; підпрограма ініціалізації та початкових умов
Обнуляємо значення використовуваних змінних
clrf PORTA; очистили вихідні засувки порту A
clrf NUMIMP; Обнуляємо значення NUMIMP
clrf TIMER1; Обнуляємо значення TIMER1
clrf NUMCH; Обнуляємо значення NUMCH
clrf TIMER2; Обнуляємо значення TIMER2
clrf LAPSE; Обнуляємо значення LAPSE
clrf DIGIT1; Обнуляємо значення DIGIT1
clrf DIGIT2; Обнуляємо значення DIGIT2
clrf DIGIT3; Обнуляємо значення DIGIT3
встановлюємо значення використовуваних змінних
movlw d'5 '; поміщаємо значення "5" для NUMIMP в акумулятор
movwf NUMIMP; поміщаємо значення з акумулятора в NUMIMP
movlw d'100 '; поміщаємо значення "100" для TIMER1 в акумулятор
movwf TIMER1; поміщаємо значення з акумулятора в TIMER1
movlw d'100 '; поміщаємо значення "100" для TIMER2 в акумулятор
movwf TIMER2; поміщаємо значення з акумулятора в TIMER2
movlw d'57 '; поміщаємо значення "57" для LAPSE в акумулятор
movwf LAPSE; поміщаємо значення з акумулятора в LAPSE
return; повернення з підпрограми
; ============================================== ================
indication; підпрограма індикації вимірюваного відстані
; ---------------------------------------------- ------- встановлюємо біти підключення індикаторів
bsf IGIT1, 6; встановлюємо біт 6 змінної DIGIT1 в 1
bsf DIGIT2, 7; встановлюємо біт 7 (точка) змінної DIGIT2 в 1
bsf DIGIT2, 5; встановлюємо біт 5 змінної DIGIT2 в 1
bsf DIGIT3, 4; встановлюємо біт 4 змінної DIGIT3 в 1
; ---------------------------------------------- ------- виводимо значення DIGIT1 на індикатор
movf DIGIT1, 0; поміщаємо значення змінної DIGIT1 в акумулятор
movwf PORTB; виводимо значення в порт У
встановлюємо затримку відображення
clrf TMR0 Обнуляємо таймер і
bcf INTCON, TOIF; встановлюємо в 0 прапор переривання за його переповнення
indc1 btfss INTCON, TOIF; перевіряємо прапор переривання по переповнення таймера
goto indc1 якщо прапор дорівнює 0 (лічильник не переповнений)-виконуємо перевірку якщо прапор дорівнює 1 (лічильник переповнений) - переходимо до наступного індикатору
; ---------------------------------------------- ------- виводимо значення DIGIT2 на індикатор
movf DIGIT2, 0; поміщаємо значення змінної DIGIT1 в акумулятор
movwf PORTB; виводимо значення в порт У
встановлюємо затримку відображення
clrf TMR0; Обнуляємо таймер і
bcf INTCON, TOIF; встановлюємо в 0 прапор переривання за його переповнення
indc2 btfss INTCON, TOIF; перевіряємо прапор переривання по переповнення таймера
goto indc2 якщо прапор дорівнює 0 (лічильник не переповнений)-виконуємо перевірку якщо прапор дорівнює 1 (лічильник переповнений) - переходимо до наступного індикатору
; ---------------------------------------------- ------- виводимо значення DIGIT3 на індикатор
movf DIGIT3, 0; поміщаємо значення змінної DIGIT3 в акумулятор
movwf PORTB; виводимо значення в порт У
; встановлюємо затримку відображення
clrf TMR0; Обнуляємо таймер і
bcf INTCON, TOIF; встановлюємо в 0 прапор переривання за його переповнення
indc3 btfss NTCON, TOIF; перевіряємо прапор переривання по переповнення таймера
goto indc3; якщо прапор дорівнює 0 (лічильник не переповнений)-виконуємо перевірку якщо прапор дорівнює 1 (лічильник переповнений) -
return; повернення з підпрограми
; ============================================== ================
pressing; підпрограма обробки натиснення кнопки
btfss PORTA, 2; перевіряємо лінію RA2 порту А (кнопку s2),
goto main1; якщо Не натиснута повертаємося в програму (на indication)
goto main2; якщо натиснута-повернення з підпрограми
; ============================================== ================
transfer; підпрограма передачі імпульсів
movlw d'5 '; поміщаємо значення "5" для NUMIMP в акумулятор
movwf NUMIMP; поміщаємо значення з акумулятора в NUMIMP
; ---------------------------------------------- ------- передача сигналу
tran1 bsf PORTA, 0; встановлюємо в 1 лінію RA0 порту А
movlw d'249 '; поміщаємо значення "249" для таймера в акумулятор
movwf TMR0; поміщаємо значення з акумулятора в таймер
bcf INTCON, TOIF; встановлюємо в 0 прапор переривання по переповнення таймера
tran2 btfss INTCON, TOIF; перевіряємо прапор переривання по переповнення таймера
goto tran2; якщо прапор дорівнює 0 (лічильник не переповнен...