в журнале Радиомир N 11 за 2004г. нашел статью "ИК радар", хочю попробовать сделать. Собственно просматривая алгоритм програмы, немного не понимаю его. Вот кусок кода с коментариями:
Код: Выделить всё
;======================
EN_P ;Конец пачки импульсов
btfss PORTA,4 ;проверяем была 1 в 4 разряде PORTA[/b]
goto Y_IMP ;Нет -Импульс получен
decfsz R_O_I,f ;Да -Уменьшаем время ожидания на 1
goto EN_P
movlw K_O_I ;Импульс не был получен
movwf R_O_I ;Загружаем регистр времени ожидания импульса
goto N_IMP
Y_IMP ;Спад импульса получен, Считаем длительность импульса
movlw K_O_I
movwf R_O_I ;Загружаем регистр времени ожидания импульса
V3 btfsc PORTA,4 ;проверяем был 0 в 4 разряде PORTA
goto N_IMP ;Нет -Импульс закончился
incf R_D_I,f ;Увелич. регистр длительности импульса
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
goto V3
N_IMP ; Импульс не получен расстояние не достежимо включаем RA2 на моргание и переходим на начало
В начале статьй написано что используется метод основанный на дискретном изменении мощности инфракрасного излучения и регистраций отраженного сигнала приемником. В чем заключается дискретность? И мне кажется что метод здесь простой импульсный, т.е считается время за которое импульсы преодолевают расстояние. Или нет?
Выше приведенныи код, я понимаю так:
сначала проверяется наличие 1 в RA4, если 1 нету - значит импульс получен и считается его длительность, если 1 есть - уменьшается время ожидания на единицу и EN_P повторяется.
Зачем дальше проверяется наличие 0 в RA4?
Или может я неправильно толкую этот код?


