Ошибка в программе

Kirin Jindosh

✩✩✩✩✩✩✩
30 Мар 2024
3
0
Здравствуйте. Нужна ваша подсказка в решении проблемы:
Преподователь сказал, что в коде программы есть ошибка (не синтаксическая, для компилятора все ок). Смотрел, искал в интернете и ничего не смог найти (знания программирования у меня начального уровня). Буду благодарен за все подсказки.

Программа передает сигнал SOS (азбука Морзе) на светодиод и буззер(динамик). Скрин прибора и код прилагаю:

C++:
#include <mega32.h>       // визначення I/O регістрів для ATmega32
#include <delay.h>        // функції часової затримки
// визначення ідентифікаторів (відповідно до Рис.2)
#define BELL PORTC.3      // порт керування бузером
#define DDR_BELL DDRC.3   // регістр керування портом
#define HL   PORTB.0      // порт керування світлодіодом
#define DDR_HL DDRB.0     // регістр керування портом
#define ON 1              // включення (у позитивній логіці)
#define OFF 0             // виключення (у позитивній логіці)

#define dt 100            // крок часу - 100 мс

// (з використанням універсальної функції)
void Symbol(int time) // функція генерування одного символа
{
  char i;
  for (i=0; i<3; i++)
  {
    BELL = ON;        // включення бузера
    HL = ON;           // включення світлодіода
    delay_ms(time);   // пауза на час time мс
    BELL = OFF;      // виключення бузера
    HL  = OFF;        // виключення світлодіода
    delay_ms(dt);   // пауза на час dt мс
  }
}
void main(void) // Головна функція програми передавання сигналу СОС
{
// налаштування портів на видачу:
    DDR_BELL = 1;   // порт керування бузером DDRC.3 = 1;
    DDR_HL = 1;      // порт керування світлодіодом  DDRB.0 = 1;
while (1)
    {
      // (з використанням універсальної функції)
      Symbol(dt);     // передавання трьох крапок
      Symbol(3*dt);   // передавання трьох тіре
      Symbol(dt);    // передавання трьох крапок
     
      delay_ms(6*dt);    // пауза між повідомленнями(7-1=6 dt)
    }
}
фцвфіцвфцвфцвфцвфц.jpg