В ATmega значения выводов собираются в регистры PORT.Значение булавки - это значение бита в ПОРТУ.ATmega не имеет немного адресуемой памяти ввода-вывода, как у некоторых других процессоров, поэтому вы не можете обратиться к выводу для чтения и записи с одним #define
, как вы предлагаете.
Что вы можете сделать вместо этого, еслиэто поможет вам определить макросы для чтения или записи значения пина.Вы можете изменить имя макроса в соответствии с вашими потребностями.
#include <avr/io.h>
#define PORTC_BIT0_READ() ((PORTC & _BV(PC0)) >> PC0)
#define WRITE_PORTC_BIT0(x) (PORTC = (PORTC & ~_BV(PC0)) | ((x) << PC0))
uint8_t a = 1, b;
/* Change bit 0 of PORTC to 1 */
WRITE_PORTC_BIT0(a);
/* Read bit 0 of PORTC in b */
b = PORTC_BIT0_READ();