Перейти к содержанию
  • записи
    3
  • комментариев
    9
  • просмотров
    2 158

Hello, World! Или включаем светодиодик.


parovoZZ

871 просмотр

На плате Xplained Mini присутствует светодиод на порту PC0 и кнопка на порту PC5. Будем на кнопочку давить и ожидать, что светодиодик погаснет=)

 Давайте писать код. Определим константы:

uint8_t const    maskLED        = 0b00000001;
uint8_t const    maskSwitch    = 0b00100000;
uint8_t const    Switch        = 5;

Теперь напишем функцию, которая читает кнопку:

uint8_t GetSwith (PORT_t volatile *switchPort, uint8_t mask)
{
    return (switchPort->IN & mask);
}

Здесь все просто - читаем регистр IN порта и по маске отсекаем всё лишнее.

Теперь функция включения светика:

void SetLEDPort (PORT_t volatile *ledPort, uint8_t value, uint8_t mask)
{                  
    ledPort->OUT = ledPort->OUT &    ~mask | value;
}

Здесь также по маске стираем значение порта и выставляем новое.

Ну и главная функция:

int main(void)
{
    PORT_t volatile *ledPort = &PORTC;
    PORT_t volatile *switchPort = &PORTC;

    ledPort->DIR = maskLED;

 
    while (1)
    {
        uint8_t value = (GetSwith(switchPort, maskSwitch) >> Switch);
        SetLEDPort(ledPort, value, maskLED);
    }
}

Т.к. кнопка и светодиод физически висят на разных битах, то смещением вправо на 5 бит мы значение кнопки ставим на место светодиода.
И самое важное - для программирования необходим всего один проводок, не считая нулевого. По нему же работает внутрисхемная отладка.

xmini_deb.thumb.png.d04ef3ef83ed0a9d1e762734e51ee9fd.png

Размер кода - 106 байт с оптимизацией O3.

Скоро освоим таймер! А потом и АЦП.
До новых ВСТРЕЧ!

0 Комментариев


Рекомендуемые комментарии

Комментариев нет

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Добавить комментарий...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...