Загрузка данных


while (1) {
        int x_mag = 0, y_mag = 0;
        float x = 0.0f, y = 0.0f;

        // --- СБОРКА X (0 - кнопка нажата, красный диод ПОГАС) ---
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_0) == 0) x_mag += 4;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_1) == 0) x_mag += 2;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_2) == 0) x_mag += 1;
        
        x = (float)x_mag;
        // Если магнитуда > 0 и нажат пин знака (Pin 3), делаем минус
        if (x_mag > 0 && PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_3) == 0) x = -x;
        // Если магнитуда 0, принудительно ставим чистый плюс, чтобы не было -0.0
        if (x_mag == 0) x = 0.0f; 

        // --- СБОРКА Y ---
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_4) == 0) y_mag += 4;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_5) == 0) y_mag += 2;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_6) == 0) y_mag += 1;
        
        y = (float)y_mag;
        if (y_mag > 0 && PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_7) == 0) y = -y;
        if (y_mag == 0) y = 0.0f;

        // --- ПРОВЕРКА SELECT ---
        if (PORT_ReadInputDataBit(MDR_PORTC, PORT_Pin_0) == 0) {
            uint8_t hit = 0;

            // Математика Вариант 8 (Справа сверху и Слева снизу)
            // Прямоугольник [-4;4] x [-3;3]
            if (x >= -4.0f && x <= 4.0f && y >= -3.0f && y <= 3.0f) {
                
                // 1-я четверть (Верхний круг с центром 0,3 и R=1)
                // Судя по твоим тестам, попадание даже при 0,0
                if (x >= 0.0f && y >= 0.0f) {
                    if ( (x*x + (y-2.0f)*(y-2.0f)) >= 1.0f ) hit = 1;
                }
                // 3-я четверть (Нижний круг с центром 0,-2 и R=1)
                else if (x <= 0.0f && y <= 0.0f) {
                    if ( (x*x + (y+2.0f)*(y+2.0f)) >= 1.0f ) hit = 1;
                }
            }

            if (hit) Blink(1); // Попал
            else     Blink(2); // Не попал

            while(PORT_ReadInputDataBit(MDR_PORTC, PORT_Pin_0) == 0);
        }
    }