Интерфейс atmega32 принимает пользовательский ввод с клавиатуры

Привет, я новичок в этом мире кодирования AVR.

Я разрабатываю клавиатуру 4 * 4 для ввода данных пользователем и отображения некоторых вещей на ЖК-дисплее 16 * 2.

Поэтому, пожалуйста, ребята, как эксперты, я прошу ваших предложений и объяснений таких моментов.

Убедительно прошу вашей помощи,

  1. Я не могу понять следующие части кода,

    #define D5 eS_PORTD5 -
    
    DDRD = 0xFF;
    DDRB = 0x0F;
    
  2. используется ли этот фрагмент кода предопределенной функцией, если да, то что это такое,

    if(bit_is_set (PINB,6))
    

полный код этого прилагается.

спасибо за вашу доброту, что вы потратили свое время на чтение этого, пожалуйста, помогите новичку, если вы знаете хотя бы одну из этих вещей.


person Janitha Prabath Madushanka    schedule 07.05.2016    source источник


Ответы (1)


DDRD = 0xFF устанавливает все биты регистра DDRB в 1, что устанавливает порт D в качестве выходов.

(1 = выход, 0 = вход)

DDRB = 0x0F устанавливает младшие 4 бита portb в качестве вывода, старшие 4 бита в качестве вывода.

bit_is_set a #define из sfr_defs.h, в этом случае он проверяет, установлен ли бит 6 из порта PINB.

это эквивалентно (PINB & (1‹‹6))

person lostbard    schedule 07.05.2016
comment
спасибо за ваш комментарий #lostbard . не могли бы вы объяснить (определить D5 eS_PORTD5) использование, и мне действительно нужно небольшое разъяснение того, как обнаружить пользовательский ввод с клавиатуры, очень ценю вашу помощь !!! - person Janitha Prabath Madushanka; 07.05.2016
comment
#define D5 eS_PORTD5 ничего не делает, кроме того, что говорит, что всякий раз, когда вы пишете D5, он действительно будет использовать eS_PORTD5. - person lostbard; 07.05.2016
comment
на коде, который я видел раньше для lcd.h, (electrosome.com/) они используют этот #define, чтобы затем определить, какой порт / бит использовать в коде ЖК-дисплея, то есть: D5 = 35, затем в коде, если D5 = 35, изменить бит X в порту Y. - person lostbard; 07.05.2016