Я работаю над проектом моделирования светофора с использованием микроконтроллера Atmega16, и у меня возникли некоторые проблемы с кодом. У меня есть четыре светофора, расположенные на карте в северном, южном, западном и восточном направлениях. Каждый светофор управляется с помощью определенных контактов микроконтроллера.
Вот назначение контактов для каждого светофора:
[*]
Северный светофор использует контакты PB0/X0/XCK, PB1/T1 и PB2/AIN0/INT2.
[*]
На западном светофоре используются контакты PD1/TXD, PD2/INT0 и PD3/INT1.
[*]
Южный светофор использует контакты PB6/MISO, PB7/SCK и PD0/RXD.
[*]
В светофоре «Восточный» используются контакты PB3/AIN1/OC0, PB4/SS и PB5/MOSI.
Пример кода, который я собираюсь отправить, демонстрирует цикл движения светофоров по часовой стрелке, начиная сверху (север, затем восток, затем юг, запад и так далее).
Исходный код светофора работает следующим образом:
-------------------------------------------------- -------------------------------------------------- -------
/* * GccApplication9.c * Светофор * Создано: 22.09.2023 18:39:24 * Автор: hp */ #define F_CPU 1000000UL #include #include интервал основной() { ДДРБ=0XFF; ДДРД=0XFF; пока(1) { ПОРТБ=0b01001100; ПОРТД=0b00000010; _delay_ms (4000); ПОРТБ=0b01010010; ПОРТД=0b00000010; _delay_ms (1500); ПОРТБ=0b01100001; ПОРТД=0b00000010; _delay_ms (4000); ПОРТБ=0b10010001; ПОРТД=0b00000010; _delay_ms (1500); ПОРТД=0b00000011; ПОРТБ=0b00001001; _delay_ms (4000); ПОРТБ=0b10001001; ПОРТД=0b00000100; _delay_ms (1500); ПОРТД=0b00001000; ПОРТБ=0b01001001; _delay_ms (4000); ПОРТД=0b00000100; ПОРТБ=0b01001010; _delay_ms (1500); } } ----------------------------------------------- -------------------------------------------------- ----------
Моя цель состоит в том, чтобы светофоры, расположенные параллельно друг другу, светились одним и тем же цветом (например, оба были зелеными), тогда как два других были противоположным цветом (если первые два начнут светиться зеленым, то остальные два должны загореться красным).

Это схематично.
И я пробовал менять номера на портах, но ничего не получилось.
Мобильная версия