Материал из Automata.
(Различия между версиями)
м |
|
Строка 1: |
Строка 1: |
- | <nowiki><c>
| + | |
- | #include <stdint.h>
| + | |
- | #include <avr/io.h>
| + | |
- | #include <avr/interrupt.h>
| + | |
- | //логическая переменная состояния РС7;
| + | |
- | static volatile uint8_t status = 0;
| + | |
- | //обработчик прерывания от компаратора;
| + | |
- | ISR (ANA_COMP_vect)
| + | |
- | {
| + | |
- | if (status == 0) {//если напряжения на выводе PC7 нет, то
| + | |
- | PORTC |= 0x80;//подаем на него логическую "1" и
| + | |
- | status = 1;//запаминаем новое состояние;
| + | |
- | } else {//если есть, то
| + | |
- | PORTC &= 0x7f;//подаем на вывод логический "0" и
| + | |
- | status = 0;//запаминаем новое состояние;
| + | |
- | };
| + | |
- | }
| + | |
- | //главная функция;
| + | |
- | int main (void)
| + | |
- | {
| + | |
- | DDRB = 0xff;//настраиваем выводы порта В на выход;
| + | |
- | PORTB = 0x00;//без подачи напряжения;
| + | |
- | DDRC = 0xff;//настраиваем выводы порта С на выход;
| + | |
- | PORTC = 0x00;//без подачи напряжения;
| + | |
- |
| + | |
- | ACSR = _BV(ACBG) | _BV(ACIE);//выбираем внутреннее опорное напряжение и разрешаем прерывания от компаратора;
| + | |
- | SREG = 0x80;//глобальное разрешение прерываний;
| + | |
- | }
| + | |
- | </c></nowiki>
| + | |
Версия 18:06, 24 февраля 2008