justify"> TH equ 0x25
N equ 0x26
N0 equ 0x27
Nsot equ 0x28
Ndes equ 0x29
Ned equ 0x2A
K equ 0x2B
Count equ 0x2C
T1 equ 0x2D
T2 equ 0x2E
; **********************************
; Основна програма
; **********************************
main
call init_mk; ініціалізація мікроконтролера
call init_lcd; ініціалізація РКІ
start call measure; вимірювання тривалості імпульсу
call ekv; обчислення числового еквівалента
call bcd; перетворення числового еквівалента в 2-10 код
movwf Nsot, w; визначення досягнення 20 км
xorlw 0x02; STATUS, Z; PORTA, 4; замикання контакту на землю
btfss STATUS, Z;
bcf PORTA, 4; розмикання контакту на землю
call 25ms; пауза 25 мс.
call indicate; індикація результатів вимірювання
goto start
end.
; **********************************
; Ініціалізація мікроконтролера
; **********************************
init_mkPORTA; PORTB; 0x07ADCON1; виходи PORTA цифрові 0x01;
movwf TRISA; настройка RA0 - на вхід, інші на вихід
clrf TRISB; настройка PORTB на вихід
movlw 0x00;
movwf T1CON; настройка модуля TMR1
return
; **********************************
; Ініціалізація РКІ
; ********************************** _lcdPORTA, 3; E = 025ms ; пауза 25 мс0x30; PORTB; установка 8-ми бітного інтерфейсу передачі
bcf PORTA, 1; А0 = 0PORTA, 2; RW = 0; пауза 1 мксPORTA, 3; E = 1;; пауза 3 мкс; PORTA, 3; E = 050mks; пауза 50 мксPORTA, 3; E = 1;; пауза 3 мкс; PORTA, 3; E = 050mks; пауза 50 мксPORTA, 3; E = 1;; пауза 3 мкс; сf PORTA, 3; E = 0;; пауза 3 мкс; 0x3APORTB; настройка разрядностіbyte_to_lcd; передача байта в РКІ 0x0С
movwf PORTB; включення РКІ
call byte_to_lcd; передача байта в РКІ
movlw 0x01