blob: 07726458bc2150a85185209bb5705450d8d575ff (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include <avr/io.h>
#include <util/delay.h>
#define F_CPU 9600000UL
#define PIN_OUTPUT PB0
#define TIME_WORK 15 // минут
#define TIME_PAUSE 25 // минут
// Макрос для задержки на указанное количество минут
#define DELAY_MINUTES(min) \
do \
{ \
for (uint16_t m = 0; m < (min); m++) \
{ \
for (uint16_t s = 0; s < 60; s++) \
{ \
_delay_ms(1000); /* 1 секунда */ \
} \
} \
} while (0)
int main(void)
{
// Отключаем АЦП и компаратор
ADCSRA &= ~(1 << ADEN);
ACSR |= (1 << ACD);
// Настройка пинов
DDRB |= (1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4);
PORTB &= ~((1 << PB0) | (1 << PB1) | (1 << PB2) | (1 << PB3) | (1 << PB4));
while (1)
{
PORTB |= (1 << PIN_OUTPUT); // LED ON
DELAY_MINUTES(TIME_WORK); // 15 минут
PORTB &= ~(1 << PIN_OUTPUT); // LED OFF
DELAY_MINUTES(TIME_PAUSE); // 25 минут
}
}
|