Jump to content
Sign in to follow this  
  • entries
    3
  • comments
    8
  • views
    299

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

parovoZZ

147 views

На плате 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 Comments


Recommended Comments

There are no comments to display.

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...