Ðналоговый компаратор и мультиплекÑор
Материал из Automata.
(Различия между версиями)
м |
м (Полностью удалено содержимое страницы) |
||
Строка 1: | Строка 1: | ||
- | #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 нет, то | ||
- | PORTB |= 0x01;//подаем на него логическую "1" и | ||
- | status = 1;//запаминаем новое состояние; | ||
- | } else {//если есть, то | ||
- | PORTB &= 0xfe;//подаем на вывод логический "0" и | ||
- | status = 0;//запаминаем новое состояние; | ||
- | }; | ||
- | } | ||
- | |||
- | //главная функция; | ||
- | int main (void) | ||
- | { | ||
- | DDRB = 0xff;//настраиваем выводы порта В на выход; | ||
- | PORTB = 0x00;//без подачи напряжения; | ||
- | DDRC = 0xff;//настраиваем выводы порта С на выход; | ||
- | PORTC = 0x00;//без подачи напряжения; | ||
- | ADMUX = 0x07;//выход мультиплексора модуля АЦП - вывод PC7; | ||
- | SFIOR = _BV(ACME);//устанавливаем в качестве инвертирующего входа компаратора выход мультиплексора модуля АЦП; | ||
- | ACSR = _BV(ACBG) | _BV(ACIE);//выбираем внутреннее опорное напряжение и разрешаем прерывания от компаратора; | ||
- | SREG = 0x80;//глобальное разрешение прерываний; | ||
- | } |