Робоча секція

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

 

 

_________