Аналоговый компаратор и мультиплексор

Материал из Automata.

Версия от 17:29, 28 февраля 2008; Mrsnaut (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
#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;//глобальное разрешение прерываний;

}
Личные инструменты
Микроконтроллеры