Как определить или создать индивидуальные 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
,
Если вы просто используете его для чтения, вы можете сделать что-то вроде этого
#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
вы, вероятно, захотите просто создать функцию, которая обрабатывает это.