430单片机编码器程序

2019-07-15 16:35发布

MSP430  利用中断做
#include "includes.h"
void init( void )
{
P2IES  |= BIT4+BIT6 ;             //P1.4、P1.6设为下降沿中断
P2IES  &=~(BIT5+BIT7);           //P1.5、P1.7设为上升沿中断
P2IE |=BIT4+BIT5+BIT6+BIT7;       //允许P1.4567中断
P2IFG = 0;                       //避免第一次误动作
timerB_Init();
_EINT();                         //总中断允许
}
unsigned int EncoderCnt= 2001;                //旋转角度计数值,全局变量,供其他程序访问
uchar EncoderStatus = 1;   //旋转时序状态变量

#pragma vector =PORT2_VECTOR   //P1口中断源
__interrupt void P2_ISR( void )       //声明一个中断服务程序,名为P1_ISR();
{
    _BIC_SR(SCG0);               //如果从LPM3唤醒,恢复时钟准确性
   if(P2IFG&BIT4)       //-------------------A 下降中断(P1.4中断入口)-------------//
                   {
    if (EncoderStatus ==1) { EncoderStatus = 2; EncoderCnt++ ;} //A 下沿,1->2
    if (EncoderStatus == 4) { EncoderStatus= 3; EncoderCnt-- ;}  //A 下沿,4->3
                   }
   if(P2IFG&BIT5)       //-------------------A 上升中断(P1.5中断入口)-------------//
                   {
           if (EncoderStatus ==3) { EncoderStatus = 4; EncoderCnt++;} //A 上沿,3->4
           if (EncoderStatus == 2) { EncoderStatus= 1; EncoderCnt-- ;}  //A 上沿,2->1
                   }
   if(P2IFG&BIT6)       //-------------------B 下降中断(P1.6中断入口)-------------//
                   {
     if (EncoderStatus ==4) { EncoderStatus = 1; EncoderCnt++ ;} //B 下沿,4->1
      if (EncoderStatus == 3) { EncoderStatus= 2; EncoderCnt-- ;}  //B 下沿,3->2
                   }
   if(P2IFG&BIT7)       //-------------------B 上升中断(P1.7中断入口)-------------//
                   {
        if (EncoderStatus ==2) { EncoderStatus = 3; EncoderCnt++ ;} //B 上沿,2->3
        if (EncoderStatus == 1) { EncoderStatus= 4; EncoderCnt-- ;}  //B 上沿,1->4
                   }
   //if(P2IFG&BIT1)  EncoderCnt=2200;//转一圈,清零标志
   P2IFG = 0;                                    //清楚P1口中断标志位
   if(EncoderCnt<=1)EncoderCnt=1;
   LPM3_EXIT; //退出中断后退出低功耗模式。若退出中断后要保留低功耗模式,将本句屏蔽
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
忆雨思B↣ing
2019-07-15 21:59
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶

一周热门 更多>