我可以将 PCINT0 和 PCINT1 用于 atmega328pb 上的所有引脚中断吗?

Can I use PCINT0 and PCINT1 for all pin interrupts on atmega328pb?

我试图做到这一点,然后按下 PINB7(这是按钮的引脚)LED 点亮。 PINB7 是板上的 PCINT8。 所以我设置

PCICR|=(1<<1);//enable interrupts for pins 14-8
sei();
PCMSK1|=(<<PCINT8); // mask for pin 8

我不知道我应该在 ISR 中使用什么向量。据我所见,我应该只做 PCINT8_vect,但是向量不会像我使用 "TIMER2_COMPB_vect" 那样突出显示。那么 PCINT8 向量不存在或者有没有办法为此使用 PCINT0 和 1?

显然,在 mega328pb 上,没有用于单个引脚中断的向量,但有用于 PCIE0、1、2、3 的向量。 0 位 0:7 1-8:14 2-16:23 3-24:27

所以如果你想为引脚 b7 使用中断。 PB7 是 PCINT7(可以在关于 i/o 端口的章节中看到)。 所以 id 必须在 PCIRC 寄存器中启用 PCIE0,正确屏蔽它 TMSK0。并使用 ISR(PCINT0_vect)。 但是,如果您在 PCINT6 和 PCINT7 上有中断,则需要在 ISR 中使用 if else 来确定 2 个引脚中的哪一个触发了中断