我正在使用 Microchip studio 为 ATmaga644p 微控制器编码。 我只想在我的微控制器上为 pinA.1、A.2、A.3 激活引脚更改中断。 但问题是当我激活它时,每个中断信号微控制器都会重置。
这就是我写代码的方式:
#include <avr/io.h>
#include <avr/interrupt.h>
ISR(PCINT1_vect)
{
}
/*************************************************************************
Function: ISR(PCINT2_vect)
Purpose:
Input:
Returns:
**************************************************************************/
ISR(PCINT2_vect)
{
}
/*************************************************************************
Function:ISR(PCINT3_vect)
Purpose:
Input:
Returns:
**************************************************************************/
ISR(PCINT3_vect)
{
}
/*************************************************************************
Function:void init_pin_change_INT(void)
Purpose:
Input:
Returns:
**************************************************************************/
void init_pin_change_INT(void)
{
//enable Pin chane interrupt for PortA.1 , PortA.2, PortA.3
PCMSK0|=(1<<PCINT1)|(1<<PCINT2)|(1<<PCINT3);
//enable PCMSK0 interuppt
PCICR |=(1<<PCIE0);
}
void main (void )
{
cli() ;
init_pin_change_INT(v);
sei();
while (1)
}
当我禁用所有引脚更改中断时,代码运行良好,但是当信号到来时我启用的每一个中断都会导致复位。 另外,代码还有其他部分,但我只写了需要的部分。