分享一下小弟的IO中断服务程序

楼主
分享一下小弟的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楼
我一般在端口中断程序末尾清除所有中断标志P1IFG=0x00;以防万一~~~
2楼
可以应用到P1口的所用中断处理 ,根据变量值确定中断号,
借鉴了   写的不错,感觉把一个一个功能写成一个一个函数的方法还是挺好的
方便了总程序的编写
3楼
[EM15]
4楼
我想问下2楼的兄弟 你的"以防万一" 指的是什么情况呀
5楼
以防自己忘记清除中断标志了~~~~~

电脑版 Page created in 0.2354 seconds width 3 queries.