Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

Глава б. Основы программирования МКАVR 149 Для более серьезного примера в следующем разделе мы, как положено новичкам, станем мигать светодиодами, но не просто так, а по нажатию кнопки. Это будет несложная тренировочная программа, в которой не нужны прерывания . В ней мы покажем, как можно создать аналоги функций delay ( ) и delayMicrosecond ( ) , а так­ же отслеживать события без привязки и с привязкой к внешним прерываниям. Таймер без прерываний Программа будет считать нажатия кнопки и демонстрировать их в двоичном коде на светодиодах (LED) . В схеме для простоты мы ограничимся тремя светодиодами, т. е. будем считать до 8 нажатий (хотя без каких-то переделок программы можно увеличить число светодиодов до 8, и соответственно, считать до 256). Выберем одну из самых простых и удобных моделей АTmega8 . Схема, для которой мы на­ пишем программу, представлена на рис. 6 . 3 . R1 , R2 5,1 к + 5 8 R3-R5 330 1 Reset РС5 28 С1 ,С2 0,1 мк С1 R2 т 2 RXD РС4 27 З ТХD РС3 26 R3-R5 VD1 -VD3 4 PD2 РС2 25 Кн1 1 + 5 8 5 РDЗ РС1 24 6 PD4 РСО 23 7 Vcc GND 22 С2 т S GND AREF 21 9 XTAL1 AVCC 20 1 0 XTAL2 SCK 1 9 1 1 PDS MISO 1 8 1 2 PD6 MOSI 1 7 1 3 PD7 Р82 1 6 14 Р80 Р81 1 5 ATmega8 Рис. 6.3. Схема двоичного счетчика нажатий В этой схеме серым цветом показано подключение программирующего 1 О-кон­ тактного разъема, включая «подтягивающие» резисторы по выводам программиро­ вания, о необходимости установки которых «так долго говорили большевики» (см. главу 3). Сам разъем, включая разводку выводов, описан в главе 5. На макетной плате разъем этот будет только мешать (и резисторы там тоже не нужны), и здесь он показан для образца - как это должно выглядеть в конечном изделии, если вы его туда будете устанавливать. Больше на схемах мы этот разъем показывать не станем, но подразумевается, что каким-то образом контроллер программируется, так что программирующие выводы постараемся не использовать в других целях. RС-цепочка на выводе RESET стандартная (см. главу 2), керамический «развязы-

RkJQdWJsaXNoZXIy MTExODQxMg==