Очень часто новички из-за недостатка знаний не могут сделать элементарных вещей.
Я попытаюсь немного помочь разобраться с портами ввода-вывода.
unsigned char peremennaya = (PINB&(1<<1));
Я попытаюсь немного помочь разобраться с портами ввода-вывода.
Итак, с++ AVR как считать данные с порта.
Для начала определимся, что нам нужно. Например, нам нужно знать, есть питание на ножке микроконтроллера или нет. Как узнать есть ли логическая единица на ножке микроконтроллера?
Опростить ножку и она нам всё сама расскажет. Не она, конечно, а регистр..
Итак, пример для Attiny13a:
На 6-той ножке есть у нас некая кнопка. Нам надо узнать, нажата она или нет.
Первое: как настроить ножку как вход? А этого не нужно, она по умолчанию настроена на вход. В регистре DDRB нули, а именно он отвечает за то, чем занимаются ножки микроконтроллера - вводом или выводом.
Если мы определяем кнопку - то стоит ножку подтянуть резистором на землю, и через другой резистор и через кнопку подавать 5 вольт - питание микроконтроллера. Итак, кнопка нажата - есть 5 вольт, не нажата - нету.
Предполагается, что наличие 5-ти вольт должно запустить некий процесс. Итак, код
if(PINB&(1<<1))
{
Для начала определимся, что нам нужно. Например, нам нужно знать, есть питание на ножке микроконтроллера или нет. Как узнать есть ли логическая единица на ножке микроконтроллера?
Опростить ножку и она нам всё сама расскажет. Не она, конечно, а регистр..
Итак, пример для Attiny13a:
На 6-той ножке есть у нас некая кнопка. Нам надо узнать, нажата она или нет.
Первое: как настроить ножку как вход? А этого не нужно, она по умолчанию настроена на вход. В регистре DDRB нули, а именно он отвечает за то, чем занимаются ножки микроконтроллера - вводом или выводом.
Если мы определяем кнопку - то стоит ножку подтянуть резистором на землю, и через другой резистор и через кнопку подавать 5 вольт - питание микроконтроллера. Итак, кнопка нажата - есть 5 вольт, не нажата - нету.
Предполагается, что наличие 5-ти вольт должно запустить некий процесс. Итак, код
if(PINB&(1<<1))
{
//что-то делаем, если есть на ножке 6 5-ть вольт
}else{
//что-то делаем, если нету 5-ти вольт
}
Выражение (PINB&(1<<1)) проверяет, что находиться на ножке. мы так же можем загнать то, что там находиться, в переменную
}else{
//что-то делаем, если нету 5-ти вольт
}
Выражение (PINB&(1<<1)) проверяет, что находиться на ножке. мы так же можем загнать то, что там находиться, в переменную
unsigned char peremennaya = (PINB&(1<<1));
Значение peremennaya будет либо 0 либо 1. В микроконтроллерах avr чтение порта - это чтение регистра, который отвечает за порт. Чтение состояния ножки - это сдвиг битов регистра до бита необходимой нам ножки.
Конструкция if-else вытаскивает с ножки её состояние и исходя из того, верно оно или нет
(true или false, тоесть 1 или 0) принимает решение какую часть кода выполнять.
Вот так на C++ можно посмотреть есть ли 1 на ножке микроконтроллера.
(true или false, тоесть 1 или 0) принимает решение какую часть кода выполнять.
Вот так на C++ можно посмотреть есть ли 1 на ножке микроконтроллера.