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


while (1) {
        int x = 0, y = 0;
        uint8_t hit = 0;

        /* ЧИТАЕМ X (Порядок кнопок: 4, 2, 1, Знак) */
        if (PORT_ReadInputDataBit(MDR_PORTF, PORT_Pin_0) == 1) x += 4;
        if (PORT_ReadInputDataBit(MDR_PORTF, PORT_Pin_1) == 1) x += 2;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_1) == 1) x += 1;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_0) == 1) x *= -1;

        /* ЧИТАЕМ Y (Порядок кнопок: 4, 2, 1, Знак) */
        if (PORT_ReadInputDataBit(MDR_PORTD, PORT_Pin_3) == 1) y += 4;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_2) == 1) y += 2;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_3) == 1) y += 1;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_4) == 1) y *= -1;

        // Если нажата кнопка "Подтвердить"
        if (PORT_ReadInputDataBit(MDR_PORTC, PORT_Pin_0) == 0) {
            
            // Проверяем границы прямоугольника X[-4; 4], Y[-3; 3]
            if (x >= -4 && x <= 4 && y >= -3 && y <= 3) {
                
                // ТОЛЬКО 1-я четверть (Правая верхняя: X >= 0 и Y >= 0)
                if (x >= 0 && y >= 0) {
                    if ( (x*x + (y - 3)*(y - 3)) >= 4 ) {
                        hit = 1;
                    }
                }
                // ТОЛЬКО 3-я четверть (Левая нижняя: X <= 0 и Y <= 0)
                else if (x <= 0 && y <= 0) {
                    if ( (x*x + (y + 3)*(y + 3)) >= 4 ) {
                        hit = 1;
                    }
                }
                // Для 2-й (левой верхней) и 4-й (правой нижней) четвертей hit остается 0
            }

            if (hit == 1) Blink(1); // Попал
            else          Blink(2); // Промах

            // Ждем отпускания кнопки
            while(PORT_ReadInputDataBit(MDR_PORTC, PORT_Pin_0) == 0);
        }
    }