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


#include "MDR32Fx.h"
#include "MDR32F9Qx_rst_clk.h"
#include "MDR32F9Qx_port.h"

static PORT_InitTypeDef PortInit;

// Твоя функция Blink, которая тебе понравилась
void Blink(int count) {
    for (int i = 0; i < count; i++) {
        PORT_Write(MDR_PORTF, 0x00); // Включить все (инверсия)
        for(int j=0; j<1000000; j++); // Простая задержка
        PORT_Write(MDR_PORTF, 0xFF); // Выключить все
        for(int j=0; j<1000000; j++);
    }
}

int main () {
    // 1. Включаем тактирование всех нужных портов
    RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTF | RST_CLK_PCLK_PORTE | 
                    RST_CLK_PCLK_PORTB | RST_CLK_PCLK_PORTC, ENABLE);
    
    // 2. Настройка светодиодов (PORTF)
    PortInit.PORT_Pin   = 0xFF; // Все 8 штук
    PortInit.PORT_OE    = PORT_OE_OUT;
    PortInit.PORT_FUNC  = PORT_FUNC_PORT;
    PortInit.PORT_MODE  = PORT_MODE_DIGITAL;
    PortInit.PORT_SPEED = PORT_SPEED_SLOW;
    PORT_Init(MDR_PORTF, &PortInit);
    
    // 3. Настройка кнопок (PORTE, PORTB, PORTC) на вход
    PortInit.PORT_OE    = PORT_OE_IN;
    PortInit.PORT_Pin   = 0xFF; 
    PORT_Init(MDR_PORTE, &PortInit); // Для X
    PORT_Init(MDR_PORTB, &PortInit); // Для Y
    PORT_Init(MDR_PORTC, &PortInit); // Для SELECT
    
    float x = 0, y = 0;
    PORT_Write(MDR_PORTF, 0xFF); // Гасим светодиоды в начале

    while (1) {
        // --- Считывание X (кнопки на PORTE) ---
        if (PORT_ReadInputDataBit(MDR_PORTE, PORT_Pin_0) == 0) x = -4.0f;
        if (PORT_ReadInputDataBit(MDR_PORTE, PORT_Pin_1) == 0) x = -2.0f;
        if (PORT_ReadInputDataBit(MDR_PORTE, PORT_Pin_2) == 0) x = 2.0f;
        if (PORT_ReadInputDataBit(MDR_PORTE, PORT_Pin_3) == 0) x = 4.0f;
        
        // --- Считывание Y (кнопки на PORTB) ---
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_0) == 0) y = -3.0f;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_1) == 0) y = -1.0f;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_2) == 0) y = 1.0f;
        if (PORT_ReadInputDataBit(MDR_PORTB, PORT_Pin_3) == 0) y = 3.0f;
        
        // --- Нажатие SELECT (Проверка на PORTC пин 0) ---
        if (PORT_ReadInputDataBit(MDR_PORTC, PORT_Pin_0) == 0) {
            
            // МАТЕМАТИКА ВАРИАНТА №8:
            // 1. Прямоугольник: x[-4;4], y[-3;3] (уже задано кнопками выше)
            // 2. Вне круга R=2: (x*x + y*y >= 4.0f)
            // 3. Только 2-я и 4-я четверти: (x*y <= 0)
            
            if ( ((x*x + y*y) >= 4.0f) && (x * y <= 0) ) 
            {
                Blink(1); // Попал - 1 раз
            } 
            else 
            {
                Blink(2); // Не попал - 2 раза
            }
            
            // Ждем отпускания SELECT
            while(PORT_ReadInputDataBit(MDR_PORTC, PORT_Pin_0) == 0);
        }
    }
}