Главная страница
Случайная лекция
Мы поможем в написании ваших работ!
Порталы:
БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика
|
Программа измерения длительности импульсов
На вывод ICI подаются импульсы, длительность которых измеряется.
*******************************************************************************
#include <mega8.h> Unsigned char orl // счетчик переполнений Unsigned int edR, edF; // для сохранения кодов фронта и спада unsigned long pulse; // количество тактовых импульсов внутри
//интервала interrupt (sig_overflow); { orl++ ; // увеличиваем счетчик переполнения } interrupt (sig_input_capture) /* обработка прерываний при захвате на входе*/ { if ((PINВ & 0x01)!=0) /* если на выводе 0 порта В высокий уровень */ {{ edR = IСR1; TCCR1B = TCCR1B & 0xBF /* устанавливаем следующий захват по ниспадающему фронту */ orl = 0; // сброс счетчика переполнений }} else { edF = ICR1; /*фиксация времени ниспадающего фронта*/ TCCR1B = TCCR1B & 0x FF; /* следующий захват по нарастающему фронту */ Pulse = enF – enR }} int main (void) { DDRВ = 0x00; // порт В на ввод TCCR1B = 0xC2; // захват по нарастающему фронту, коэф.деления = 8 TCCR1A = 0x00; TIMSK = 0x84; // разрешает прерывание по захвату и переполнению #asm sei end asm while { // бесконечный цикл в ожидании прерывания }}
Дата добавления: 2015-07-26; просмотров: 178; Нарушение авторских прав Поделиться с ДРУЗЬЯМИ:
|