Когда делаешь какую-либо схему или проект, задумываешься как максимум экономить батарейку, где задача выполняется по нажатию кнопки (выключатели с пультом управления) и тут родилась простая и эффективная схема. Ее задача чтобы кнопка работала не только вызывать функцию, но и подавать питание на микроконтроллер. Таким образом потребление напряжение схемы в режиме ожидание падает до нуля , так как батарейка полностью отключенной от схемы.
Такой алгоритм реализуется на кнопках с несколькими парами контактных групп, чаще же в проектах используется обычная тактовая кнопка, которая умеет замыкать только два контакта между собой. Поэтому пошевелив извилинами накидал вот такую схему:
Как видно, при нажатии на любую кнопку, происходит запитывание микроконтроллера и одновременно с этим на соответствующей ножке выставляется высокий уровень. Диоды в схеме нужны чтобы отсечь попадание высокого уровня на остальные входы.
для проверки схемы собрал ее на макетке:
код обработки нажатия самый элементарный:
$regfile = "m16def.dat" $crystal = 8000000 Config Portb = Output Config Portc = Input Do If Pinc.0 = 1 Then Portb.0 = 1 End If If Pinc.1 = 1 Then Portb.1 = 1 End If If Pinc.2 = 1 Then Portb.2 = 1 End If Loop End
Источник: http://avrproject.ru