Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
282 Часть 111. Практическое программирование микроконтроллеров AVR out OCRlAН , temp out OCRlAL , porog ; заносим в регистр сравнения sei ; разрешаем прерывания Pincykle : ; цикл отслеживания кнопок sЬis PinD , 2 ; пропустить , если "больше " не нажата rjmp push _ pinO sЬis PinD, 3 ; пропустить , если "меньше " не нажата rjmp push_pinl rjmp Pincykle ; вернуться обратно , если не нажата push_pinO : ; кнопка "больше " нажата cpi porog , $ FF breq Pincykle ; если равно $ FF не увеличиваем sЬi ?ortD , 6 ; PD6 = High зажигаем ДJIЯ контроля Delay $ 1 3 , $ 8 8 ; $ 1 3 8 8=5000 ДJIЯ задержки 2 0 мс clr temp inc porog ; увеличиваем счетчик каждые 2 0 мс out OCRlAН , temp out OCRlAL, porog ; заносим в регистр сравнения ldi temp , ( l<<INT O ) ; разрешаем прерывание INTO out GIMSK , temp rjmp Pincykle ; вернуть ся обратно - новый цикл push_pinl : ; кнопка "меньше " нажата tst porog breq Pincykle ; если равно О не уменьшаем sЬi PortD , 6 ; PD6 = High зажигаем ДJIЯ контроля Delay $ 1 3 , $ 8 8 ; $ 1 3 8 8=5000 ДJIЯ задержки 2 0 мс clr temp dec porog ; уменьшаем счетчик каждые 2 0 мс out OCRlAН, temp out OCRlAL , porog ; заносим в регистр сравнения ldi temp , ( l <<INT l ) ; разрешаем прерывание INTl out GIMSK , temp rjmp Pincykle ; вернуться обратно - новый цикл Контрольный светодиод на выводе PD6 будет показывать моменты нажатия и отпускания кнопок. Если программа отлажена, то РСО можно не использовать и удалить или закомментировать соответствующие строки. ЗАМЕТКИ НА ПОЛЯХ Здесь у нас расчет на то, что подобный регулятор встраивается в некий светильник или размещается поблизости от него. В этом случае питание схемы не представляет проблемы. Если же регулятор переделать в автономный пульт, питающийся от бата реек, то программа так и просит дополнить ее режимом энергосбережения. Это не за предельно сложно, но тогда придется принципиально поменять алгоритм работы , т. к. из «сна» контроллер надо выводить , а сделать это можно в нашем случае только пре рываниями (подробно об этом рассказано в главе 14) . Красивый замкнутый цикл оп роса кнопок заменяется на работу в прерываниях, и логика обработки нажатий-отпус-
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==