新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > PIC单片机之中断程序

PIC单片机之中断程序

作者: 时间:2013-05-14 来源:网络 收藏

void init_timer0(void)

{

OPTION_REG=0x87;

}

void interrupt isr(void)//,interrupt是个关键字说明该函数,是中断函数。

{

LED = ~LED;//改变LED的状态

INTCONbits.TMR0IF=0;//清零中断标志位 如果在离开前没有清零,程序将不停的中断。

TMR0=61;//给TMR0付初始值61 ,开始下一个50ms计时做准备。

//中断函数结束 返回主函数。哪里来回 回那里去,也就是回到主函数的while(1);处

}

int main(int argc, char** argv)

{

init_fosc();

init_gpio();

init_timer0();

INTCONbits.GIE=1; //开启总中断

INTCONbits.TMR0IF=0;//清零TMR0溢出中断标志位

INTCONbits.TMR0IE=1;//开启TMR0溢出中断

TMR0=61;

while(1);//主函数 在此什么都没做一直在死循环。但等到50ms时间到了TMR0将会溢出,程序就会跳到void interrupt isr(void)处执行。

}

我帮大家理清下中断初始设置大致的步骤

1 ,开启总中断,开启外设中断。INTCONbits.GIE=1; INTCONbits.PEIE=1;其实即使没用到外设开启也无妨。

2 ,清楚相应中断的标志位。如INTCONbits.TMR0IF=0;

3 ,开启相应中断。如INTCONbits.TMR0IE=1;

中断函数/程序 中要注意的就是 清零相应的中断标志位 如INTCONbits.TMR0IF=0; 否则单片机会认为中断未被执行 则一直中断。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭