ORG 0 ; Початкова адреса після скидання
GOTO BEG ; Перехід на початок програми
ORG 100 ; Початкова адреса програми
; (наступна команда буде
; розміщена за адресою 100H)
BEGIN
; Ініціалізація мікроконтролера
BSF STATUS, RP0 ; Включити першу сторінку ПД
BCF OPTREG, 7 ; Відключити активне навантаження
; від виводів порту В
BCF TRISB, 0 ; Встановити біт 0 порту В
; на виведення
CLRF ADCON1 ; Встановити входи порту А як
; аналогові, опорна напруга для
; АЦП дорівнює Vdd
BCF STATUS, RP0 ; Включити нульову сторінку ПД
MOVLW B '11000000' ; Дозволити переривання тільки
MOVWF INTCON ; від АЦП (всі інші переривання
; заборонені!)
MOVLW 0C1H ; Синхронізація АЦП від
; власного генератора.
MOVWF ADCON0 ; Дозволити роботу АЦП
;
; Ввід і перетворення сигналів U1 і U2
BCF ADCON0, 3 ; Встановити вхідний канал AIN0
BSF ADCON0, 2 ; Почати процес перетворення
; сигналу U1
LOOP2 BTFSS ADCON0, 2 ; Чекати закінчення перетворення сигналу U1
GOTO LOOP2
MOVF ADRES, 0 ; Результат перетворення
; сигналу U1 записати в W
BCF ADCON0, 1 ; Скинути прапорець закінчення
; перетворення ADIF в регістрі
; ADCON0
BSF ADCON0, 3 ; Встановити вхідний канал AIN1
BSF ADCON0, 2 ; Почати процес перетворення
; сигналу U2
LOOP3 BTFSC ADCON0, 2 ; Чекати закінчення
; перетворення сигналу U2
GOTO LOOP3
BCF ADCON0, 1 ; Скинути прапорець закінчення
; перетворення ADIF в регістрі ADCON0
; Процедура порівняння U1 і U2
SUBWF ADRES, 0 ; U2-U1
BTFSS STATUS, C ; Перевірка стану прапорця
GOTO A1 ; переносу/позики С. Якщо C = 1
; (U1 <= U2), то перехід на фраг-
; мент програми з адресою А1
; Установка прапорця F0 в 0
BCF F0, 0
; Вивід керуючих сигналів
BSF PORTB, 0 ; Встановити біт 0 порту В
GOTO A2 ; Перехід на фрагмент
; програми з адресою А2
; Установка прапорця F0 в 1
A1 BSF F0, 0
GOTO BEG
A2 GOTO BEG
END
_________