新手求指导,关于msp430led流水灯代码问题

...1234   2018-7-17 22:33 楼主
函数名称:Timer_A
功    能:定时器A的中断服务函数,在这里通过标志
          控制流水灯的流动方向和流动速度
参    数:无
返回值  :无
********************************************/
#pragma vector = TIMERA0_VECTOR
__interrupt void Timer_A (void)
{  
    if(flag == 0)
    {
        P2OUT = ~(0x80>>(i++));    //灯的点亮顺序D8 -> D1
    }
    else if(flag == 1)
    {
        P2OUT = ~(0x01<<(i++));    //灯的点亮顺序D1 -> D8
    }
    else
    {
        if(dir)                  //灯的点亮顺序  D8 -> D1,D1 -> D8,循环绕圈                        
        {
            P2OUT = ~(0x80>>(i++));
        }
        else
        {
            P2OUT = ~(0x01<<(i++));
        }
    }
  
......


后面代码省略了,想问的就是 if(flag == 0)
    {
        P2OUT = ~(0x80>>(i++));    //灯的点亮顺序D8 -> D1
    }
这一段话 ,当flag=0时,  i++=0,D8亮,这里并没有for语句对i的循环,为什么注释上说D8-D1会依次亮



回复评论 (2)

因为中断一直会进入,相当于for循环了
点赞  2018-7-18 08:12
引用: qwerghf 发表于 2018-7-18 08:12
因为中断一直会进入,相当于for循环了

恩谢谢。
点赞  2018-7-18 16:59
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复