Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Программа 11x1_RC5.s43 использует два регистра. Регистр IRData (R6) принимает ИК пакеты, а регистр IRBit (R7) используется как временный счетчик, отслеживающий биты ИК данных как они были получены. Выбор регистров R6 и R7 был сделан произвольно, вместо них могут использоваться любые другие регистры или ячейки памяти ОЗУ. В программе определены две константы: Bit_50 - константа, соответствующая половине длительности бита, и Bit_75 - константа, соответствующая трем четвертям длительности бита. Поскольку для формирования синхросигнала ACLK используется кварцевый резонатор с частотой 32 768 Гц, то константы BIT_50 и Bit_75 будут иметь следующие значения:
Bit_50 equ 2 9; 8 90 мкс при частоте ACLK
; 327 68 Гц
Bit_75 equ 44; 1348 мкс при частоте ACLK
; 327 68 Гц
Подпрограмма IR_Ready позволяет CCR1 захватывать счетчик таймера Timer_A3 (TAR) и запрашивать прерывание по срезам сигнала на выходе ИК приемника. TAR захватывается по спадающему фронту и автоматически сохраняется в CCR1, при этом происходит формирование запроса на прерывание TA1JSR. В Подпрограмма обработки прерывания TA1JSR определяет было ли вызвано прерывание захватом или сравнением. Если прерывание было вызвано захватом, то BIT_75 (3/4 длины бита) добавляется непосредственно в CCR1, который хранит точное время спадающего фронта импульса на выходе ИК приемника в середине перового бита. Так как захват данных произошел в середине первого бита, то добавление 3/4 длительности бита приведет к смещению CCR1 в середину первой половины следующего бита. Теперь CCR1 настроен на работу в режиме сравнения данных. Следующее прерывание от CCR1 теперь установлено в середине первой половины второго стартового бита. В соответствии с настройками, в режиме сравнения CCR1 происходит сохранение присутствующего на входе Р1.2 логического уровня в защелке
Дата публикования: 2014-11-18; Прочитано: 329 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!