picc18 我的程序从MCCV3.44 转到PICC18,可以运行,进补了中断、求指点?
void int_high_isr(void);
void int_low_isr(void);
void time0_irq_proc(void);
/*********************************************函数定义*********************************************/
#pragma code //中断链接返回默认的代码段
//低优先级中断服务程序
//#pragma interrupt int_high_isr
#pragma interrupt SysIsr
//void int_high_isr(void)
void SysIsr(void)
{
byte bIndex = 0;
byte REcData = 0;
if ((INTCONbits.TMR0IF) && (INTCONbits.TMR0IE))
{
INTCONbits.TMR0IF = 0;
TMR0H = 0x63; //9.997ms
TMR0L = 0xc8;
// TMR0H = 0x63; //10ms
// TMR0L = 0xBF;
time0_irq_proc(); //定时0中断处理
}
//高优先级中断服务接口
for (bIndex = SERIAL1; bIndex <= SERIAL2; bIndex++)
{
if (UART_IFFLAG(bIndex)) //判断是否有接收中断
{
REcData = UART_RXREG(bIndex); //读取串口字节
if (UART_OERR(bIndex)) //判断是否溢出错误
{
UART_CREN_CLR(bIndex); //清除溢出错误(禁止接收)
UART_CREN_SET(bIndex); //使能接收
}
uart_Irq_recv(bIndex, REcData); //串口数据中断接收
CLR_IFFLAG(bIndex); //清中断标志
}
}
}
//低优先级中断服务程序
//#pragma interruptlow int_low_isr
#if 0
void int_low_isr(void)
{
//低优先级中断服务接口, 10ms定时
if ((INTCONbits.TMR0IF) && (INTCONbits.TMR0IE))
{
INTCONbits.TMR0IF = 0;
TMR0H = 0x63;
TMR0L = 0xc8;
time0_irq_proc(); //定时0中断处理
}
}
#endif
#pragma code high_vector_section = 0x08 //高优先级中断响应入口
void high_vector(void)
{
// _asm goto int_high_isr _endasm
SysIsr();
}
#pragma code low_vector_section = 0x18 //低优先级中断响应入口
void low_vector(void)
{
// _asm goto int_low_isr _endasm
}
|