#define _BIT(pin) ((uint32_t)0x01 << ((pin > 13) ? (pin + 2) : pin))
#define _PINS(p0,p1,p2,p3,p4,p5,p6,p7) (_BIT(p0) | _BIT(p1) | _BIT(p2) | _BIT(p3) | _BIT(p4) | _BIT(p5) | _BIT(p6) | _BIT(p7))
#define READ_PINS(p0,p1,p2,p3,p4,p5,p6,p7) (boolean)( \
(PIND & (uint8_t)_PINS(p0,p1,p2,p3,p4,p5,p6,p7)) | \
(PINB & (uint8_t)(_PINS(p0,p1,p2,p3,p4,p5,p6,p7) >> 8)) | \
(PINC & (uint8_t)(_PINS(p0,p1,p2,p3,p4,p5,p6,p7) >> 16)))
void setup() {
//Инициализация пинов
}
void loop() {
if (!READ_PINS(BUT_PIN1, BUT_PIN2, BUT_PIN3, BUT_PIN4, BUT_PIN5, BUT_PIN6, BUT_PIN7, BUT_PIN8) {
//Что-то сделать если все пины в низком уровне
}
}