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

时间:2018-11-15 17:39:36

标签: c avr

我正在尝试使其按下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?

1 个答案:

答案 0 :(得分:0)

显然,在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中是否需要确定2个引脚中的哪一个触发了中断