farm_b > по логике две индентичные конструкции, ...
а работает по разному... как правильно ?
Если работает по разному то наверно логика разная всеже,
а правильно так как получается нужный тебе результат.
farm_b > Принимаю сигнал на PD2(int2) c приемника TSOP1736.
Пропускаю первые 1,5 бита, а потом ч/з каждые 880 us
считываю 13 оставшихся с PINd.2
Принцип такой например:
ir_code_temp = 0; // все биты стали нулями
ctr = 2; // первая позиция для записи 1-го принятого бита
- определили начало посылки
- пауза 1320 мкС
while (ctr < 15)
{
if(PINd.2) // если на PINd.2 - "1"
ir_code_temp |= (1<<ctr); // делаем соотв. бит - "1"
ctr++;
пауза 880 мкС; // пауза условна, на самом деле все по прерываниям таймера
}; // и while не применяется.
Еще: для повышения помехоустойчивости "железный" UART МК тестирует
каждый бит не 1, а 3 раза - можно и тебе так сделать.
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
farm_b > мощная штука (БАСКОМ), но программа
на СИ 2,5 кб, на БАСКОМ - 6,7 кб >>> !!!
а ICC еще раза в полтора компатнее код дает, а IAR еще меньше!
Кстати та можешь откомпилить кусочек приема RC5 из БАСКОМа
и посмотреть листинг на ассемблере.
а можно
Телесистемы - миниатюрные аудио и видео устройства спросить и быстро получить провереный кусочек-исходник на Си.
farm_b > я с BASCOM даже в хелп не лазил - все по примерам... и работало !).
Ну дак! Бэйсик он и в африке бэйсик
))
farm_b > как в CV задать чтоб таймер каждые 880us срабатывал ???
Не могу сказать, нужно прогу инсталировать :-( но уверен что не сложно.
Можно в моем курсе задачу 03 посмотреть - там есть по настройке таймера.