MSP430讨论区
返回
登录/注册
分享一下小弟的IO中断服务程序
楼主
xinyi205 于 2008-07-31 09:23:33
分享一下小弟的IO中断服务程序
//-------------------------------------------------------------------------------
//端口1中断函数
//多中断中断源:P1IFG.0~P1IFG7
//进入中断后应首先判断中断源,退出中断前应清除中断标志,否则将再次引发中断
//-------------------------------------------------------------------------------
#pragma vector=PORT1_VECTOR
__interrupt void Port1()
{
uint8 IFG_temp = P1IFG;
uint8 bit_num;
for(uint8 i=0;i<8;i++)
{
if((IFG_temp & 0x01)==0x01)
{
if(i==0) bit_num = 0x01;
else
{
bit_num = 2<<(i-1);
}
if(P1IES & bit_num) //进保护中断
{
//处理Pi口上升沿中断
}
else
{
//处理Pi口下降沿中断
}
P1IFG &= ~bit_num;
}
IFG_temp >>=1;
}
LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽
}
回复
1楼
jianghxx 于 2008-07-31 10:09:47
我一般在端口中断程序末尾清除所有中断标志P1IFG=0x00;以防万一~~~
回复
2楼
独孤求胜 于 2008-07-31 10:12:22
可以应用到P1口的所用中断处理 ,根据变量值确定中断号,
借鉴了 写的不错,感觉把一个一个功能写成一个一个函数的方法还是挺好的
方便了总程序的编写
回复
3楼
bobo 于 2008-07-31 11:55:14
[EM15]
回复
4楼
xinyi205 于 2008-07-31 16:35:37
我想问下2楼的兄弟 你的"以防万一" 指的是什么情况呀
回复
5楼
jianghxx 于 2008-08-01 19:26:11
以防自己忘记清除中断标志了~~~~~
回复
1
2
电脑版
Page created in 2.5620 seconds width 3 queries.