Код
INTConfigureSystem(INT_SYSTEM_CONFIG_SINGLE_VECTOR);
INTEnableInterrupts();
INTSetVectorPriority(INT_EXTERNAL_0_VECTOR,INT_PRIORITY_LEVEL_1);
INTClearFlag(INT_INT0);
INTEnable(INT_INT0,INT_ENABLED);
void __ISR(_EXTERNAL_0_VECTOR, ipl1) External0Handler(void)
{
if(PORTReadBits(IOPORT_D, BIT_1)==1)return;
if(PORTReadBits(IOPORT_D, BIT_0)==1)
{
PORTWrite(IOPORT_E, BIT_5);
if(Diagnost==0)
{
PORTClearBits(IOPORT_E, BIT_1|BIT_5);
}
else
{
PORTWrite(IOPORT_E, BIT_3);
}
}
else
{
ContrPWR();
PORTClearBits(IOPORT_E, BIT_5);
if(Diagnost==0)
{
PORTClearBits(IOPORT_E, BIT_1);
}
}
INTClearFlag(INT_INT0);
}
.INTEnableInterrupts();
INTSetVectorPriority(INT_EXTERNAL_0_VECTOR,INT_PRIORITY_LEVEL_1);
INTClearFlag(INT_INT0);
INTEnable(INT_INT0,INT_ENABLED);
void __ISR(_EXTERNAL_0_VECTOR, ipl1) External0Handler(void)
{
if(PORTReadBits(IOPORT_D, BIT_1)==1)return;
if(PORTReadBits(IOPORT_D, BIT_0)==1)
{
PORTWrite(IOPORT_E, BIT_5);
if(Diagnost==0)
{
PORTClearBits(IOPORT_E, BIT_1|BIT_5);
}
else
{
PORTWrite(IOPORT_E, BIT_3);
}
}
else
{
ContrPWR();
PORTClearBits(IOPORT_E, BIT_5);
if(Diagnost==0)
{
PORTClearBits(IOPORT_E, BIT_1);
}
}
INTClearFlag(INT_INT0);
}
Пытаюсь вызвать его, подаю 0 на ногу. Не работает

Смотрел регистры прерываний все настроены правильно, но когда я подаю на ногу ноль регистр флага не устанавливает бит.
Попробовал в ручную в watch установть нужное значение регистра флага прерывания, и только тогда он вошол в обработчик прерываний.
Сигнал подаю на RD0.
Помогите пожалуйста разобраться.
Заранее спасибо!