Код: Выделить всё
#define F_CPU 8000000UL //obyavleniye chastoty CPU mk
#include <avr/io.h> //podklucheniye biblioteki mk
#include <avr/interrupt.h> //podklucheniye biblioteki zaderjek
#include <util/delay.h> //podklucheniye zaderjek
#include <stdio.h>
unsigned int Sch;
static void ti_in(void)
{
TCCR1A|=0; //регистр управления таймером/счетчиком
TCNT1|=0; //Регистр таймера/счетчика
OCR1A=Sch; //значение сравнения, до 16 бит
TIMSK|=(1<<OCIE1A);
TCCR1B|=(1<<CS12)|(1<<WGM12); //установка делителя, режима работы таймера
}
ISR(TIMER1_COMPA_vect) //функция, выполняемая автоматически, при совпадении числел - счетчика и установленного значения
{
PORTC=~PORTC;
}
static void TI_Write(unsigned int Sch)
{
unsigned int sreg = SREG;
cli();
OCR1A=Sch;
SREG=sreg;
}
int main(void)
{
cli();
DDRC=0xFF;
Sch=100; //в реале период / 2
ti_in();
sei();
while (1)
{
if (!(PINE &= (1<<PE1)))
TI_Write(300);
if (!(PINE &= (1<<PE0)))
TI_Write(1000);
}
}


