Автолюбителям об электроннике



         

Автомобильный цифровой тахометр. - часть 2


После включения питания происходит начальная инициализация всех регистров с последующей индикацией. После инициализации вступает в работу таймер TMR0. Таймер имеет коэффициент деления равный 256, что вместе с предделителем, имеющим коэффициент деления равный 32, и циклом процессора равным 4,  дает прерывания каждую секунду (4х32х256=32768). При замыкании контактов прерывателя с входа RB0 также происходит прерывание. При прерывании сохраняются значения регистров, задействованных на момент прерывания, и определяется происхождение прерывания. Если прерывание с входа RB0, то двоичный 16-ти разрядный счетчик увеличивается на единицу. Таким образом, подсчитывается количество прерываний с входа RB0 между прерываниями от переполнения таймера, то есть за 1 секунду. Каждое прерывание заканчивается восстановлением ранее сохраненных значений регистров, и процессор переключается на работу с индикацией. Если прерывание произошло по переполнению таймера, то определяется состояние переключателя предела измерения и, если переключатель на пределе одной секунды, двоичное значение 16-ти разрядного счетчика умножается на 3 (2Nx3). 16-ти разрядный счетчик обнуляется, готовясь к новому циклу измерения. Полученное двоичное значение перекодируется в трехразрядное двоично-десятичное число и переписывается в регистры индикации. После восстановления значений регистров индикация происходит с новыми данными. То есть индикация обновляется каждую секунду. Если установлен предел измерения равный 3 секундам, то при переполнении таймера значение счетчика секунд увеличивается на единицу. Если значение счетчика секунд еще не равно трем, прерывание завершается без обнуления 16-ти разрядного счетчика. В противном случае, в 16-ти разрядном счетчике накапливается количество прерываний с входа RB0 за три секунды. Это значение перекодируется в двоично-десятичное число и переписывается в регистры индикации. Двоичный счетчик обнуляется и цикл повторяется. В данном случае индикация обновляется каждые три секунды.




Содержание  Назад  Вперед