Белов, А.В. Микроконтроллеры AVR: от азов программирования до создания практических устройств
Шаг 5. Переходим непосредственно к разработке устройств и программ 237 В строке 4 расположен цикл проверки. Это пустой цикл, в качестве условия которого выступает выражение TCNTl<780. Обратите внима ние, что в этом выражении мы тоже используем имя TCNT1. То есть про веряем значение всего шестнадцатиразрядного счетного регистра. Цикл проверки будет выполняться до тех пор, пока значение счетного регистра не будет превышать 780. Как только окажется, что это не так, цикл завер шается, а с завершением цикла завершается и вся функция waitl. 5.8. Использование прерываний по таймеру Постановка задачи В предыдущем примере мы использовали таймер для формирования задержки, но не использовали его главного преимущества: способности вызывать прерывания. На практике подобным образом почти никогда не поступают. Чаще всего в подобных случаях применяют прерывания по таймеру. Это позволяет более точно формировать интервалы времени, но главное — позволяет разгрузить центральный процессор. Пока таймер формирует задержку, программа может выполнять любые другие действия. В результате программу бегущих огней можно легко совместить, например, с программой генерации звуков. Но не будем усложнять нашу задачу и сформулируем ее следующим образом: «Создать новую программу «бегущих огней» с использованием преры ваний по таймеру.» Схема Схему оставим без изменений (см. рис. 5.11). Алгоритм Поставленная выше задача потребует полной переделки всей нашей программы. Ведь изменится режим работы таймера. В данном конкрет ном случае удобнее всего использовать режим совпадения. Точнее, его подрежим «сброс при совпадении». В этом режиме таймер сам периоди чески вырабатывает запросы на прерывание с заранее заданным перио дом. Все функции управления «движением огней» выполняет процедура обработки прерывания. При каждом вызове прерывания процедура про изводит сдвиг «огней» на один шаг в нужном направлении. Для того, чтобы обеспечить такую же скорость движения «огней», как в предыдущем примере, мы должны использовать те же самые коэф
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==