Нужно составить блок схему в ворде по программе
#include
#include
// Определение пинов
#define LED_RED PB0
#define LED_YELLOW PB1
#define LED_GREEN PB2
// Напряжение питания системы (задокументировано)
#define SYSTEM_VOLTAGE 5.0 // Вольт
int main(void)
{
// 1. Настройка портов: PB0, PB1, PB2 как выходы (для светодиодов)
DDRB = (1 << LED_RED) | (1 << LED_YELLOW) | (1 << LED_GREEN); // PB0–PB2 — выходы
// Проверка напряжения питания (опционально, если есть АЦП и делитель напряжения на входе ADC)
// Например, если напряжение мониторится на ADC0:
// ADCSRA |= (1 << ADEN); // Включаем АЦП
// ADMUX = (1 << REFS0) | (1 << MUX0); // Настройка опорного напряже-ния и канала
// uint16_t adc_value = ADC; // Считываем значение АЦП
// float voltage = (adc_value * 5.0) / 1023.0; // Переводим в вольты (для 10-битного АЦП)
// if (voltage 5.5) {
// // Обработка ошибки питания (например, мигание всех светодиодов)
// while(1) {
// PORTB = 0xFF; _delay_ms(100);
// PORTB = 0x00; _delay_ms(100);
// }
// }
while (1) // Бесконечный цикл
{
// Этап 1: Красный (D1) — 3 секунды
PORTB |= (1 << LED_RED); // Включаем D1 (красный)
PORTB &= ~(1 << LED_YELLOW); // Выключаем D2 (жёлтый)
PORTB &= ~(1 << LED_GREEN); // Выключаем D3 (зелёный)
_delay_ms(300); // Задержка 3000 мс (3 сек) при питании 5 В
// Этап 2: Красный + жёлтый (D1+D2) — 1 секунда
PORTB |= (1 << LED_RED) | (1 << LED_YELLOW); // Включаем D1 и D2
PORTB &= ~(1 << LED_GREEN); // Выключаем D3
_delay_ms(100); // Задержка 1000 мс (1 сек) при пита-нии 5 В
// Этап 3: Жёлтый (D2) — 1 секунда
PORTB &= ~(1 << LED_RED); // Выключаем D1
PORTB |= (1 << LED_YELLOW); // Включаем D2
PORTB &= ~(1 << LED_GREEN); // Выключаем D3
_delay_ms(100); // Задержка 1000 мс (1 сек) при пита-нии 5 В
// Этап 4: Зелёный (D3) — 3 секунды
PORTB &= ~(1 << LED_RED); // Выключаем D1
PORTB &= ~(1 << LED_YELLOW); // Выключаем D2
PORTB |= (1 << LED_GREEN); // Включаем D3
_delay_ms(300); // Задержка 3000 мс (3 сек) при пита-нии 5 В
// Этап 5: Жёлтый + зелёный (D2+D3) — 1 секунда
PORTB &= ~(1 << LED_RED); // Выключаем D1
PORTB |= (1 << LED_YELLOW) | (1 << LED_GREEN); // Включаем D2 и D3
_delay_ms(100); // Задержка 1000 мс (1 сек) при пита-нии 5 В
}
}
| Гарантия на работу | 1 год |
| Средний балл | 4.52 |
| Стоимость | Назначаете сами |
| Эксперт | Выбираете сами |
| Уникальность работы | от 70% |