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

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

Например, давайте определим новый 8-битный порт с именем PORTX, который состоит из PA0(MSB), 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.


person 5H40iV    schedule 30.03.2015    source источник


Ответы (1)


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

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

person seansy    schedule 09.04.2015