Как определить или создать индивидуальный PORT и PIN в AVR?

Как определить или создать индивидуальные PORT или же PIN в AVR?

Например, давайте определим новый 8-битный порт с именем PORTX который состоит из PA0(СЗБ), PA1, PB0, PB1, PC0, PC1, PD0, PD1(LSB). Так что всякий раз, когда я выполняю следующий код:

PORTX = 0x05;

Это назначит 1 как для PC1 & PD1 а остальное время 0,

Точно так же следующий код PC1 & PD1 потянул до 5В)

DDRC &= ~_BV(PC1); // declaring PORTC.1 as input
DDRD &= ~_BV(PD1); // declaring PORTD.1 as input

uint8_t myValue;
myValue = PINX;

назначит 5 в myValue,

0

Решение

Если вы просто используете его для чтения, вы можете сделать что-то вроде этого

#define PINX     (PINA & 0x1)<<7 | (PINA & 0x2)<<6 \
(PINB & 0x1)<<5 | (PINB & 0x2)<<4 \
(PINC & 0x1)<<3 | (PINB & 0x2)<<2 \
(PIND & 0x1)<<1 | (PINB & 0x2)

Если вы хотите установить значения PINX или же PORTX вы, вероятно, захотите просто создать функцию, которая обрабатывает это.

0

Другие решения


По вопросам рекламы [email protected]