简单看了一眼,你这个代码风格很随意啊
感觉你中断处理程序只处理了time1,
如果退出中断后还有其他中断,又会进去,可能就是这个问题
另外不要到处尝试各种ide,清理清理干净,只装一种,应该是可以用的.
MGC应该是可以可以用,生成代码还算规范,可以借鉴.
给你看下相关的中断处理,希望能有所帮助
void interrupt INTERRUPT_InterruptManager (void)
{
// interrupt handler
if(PIE0bits.IOCIE == 1 && PIR0bits.IOCIF == 1)
{
PIN_MANAGER_IOC();
}
else if(PIE0bits.TMR0IE == 1 && PIR0bits.TMR0IF == 1)
{
TMR0_ISR();
}
else if(PIE0bits.INTE == 1 && PIR0bits.INTF == 1)
{
INT_ISR();
}
else if(INTCONbits.PEIE == 1)
{
if(PIE1bits.ADIE == 1 && PIR1bits.ADIF == 1)
{
ADCC_ISR();
}
else if(PIE1bits.ADTIE == 1 && PIR1bits.ADTIF == 1)
{
ADCC_ThresholdISR();
}
else if(PIE4bits.TMR1IE == 1 && PIR4bits.TMR1IF == 1)
{
TMR1_ISR();
}
else
{
//Unhandled Interrupt
}
}
else
{
//Unhandled Interrupt
}
}void interrupt INTERRUPT_InterruptManager (void)
{
// interrupt handler
if(PIE0bits.IOCIE == 1 && PIR0bits.IOCIF == 1)
{
PIN_MANAGER_IOC();
}
else if(PIE0bits.TMR0IE == 1 && PIR0bits.TMR0IF == 1)
{
TMR0_ISR();
}
else if(PIE0bits.INTE == 1 && PIR0bits.INTF == 1)
{
INT_ISR();
}
else if(INTCONbits.PEIE == 1)
{
if(PIE1bits.ADIE == 1 && PIR1bits.ADIF == 1)
{
ADCC_ISR();
}
else if(PIE1bits.ADTIE == 1 && PIR1bits.ADTIF == 1)
{
ADCC_ThresholdISR();
}
else if(PIE4bits.TMR1IE == 1 && PIR4bits.TMR1IF == 1)
{
TMR1_ISR();
}
else
{
//Unhandled Interrupt
}
}
else
{
//Unhandled Interrupt
}
} |
给力。