这可能是一个简单的问题,所以,我希望你能给我指出正确的方向。
我正在用C编写一个简单的IO程序。在程序的中间,我有一个从未执行过的if语句当我试图在if语句中放置一个断点以便自动删除它并向下推过if语句块时,我意识到了这一点。进一步深入研究这个问题,c编译器不会为我的if语句创建任何程序集代码。下面是我的代码片段和程序集输出。
代码:

void sendData(unsigned int val1 ){
    P1OUT |= 1;
    if ((val1 & 0x8000 ) == 0x8000)
        wait(T1H);
    else
        wait(T1L);
    P1OUT &= ~(1);
}

*注意:是的,我确实有另一个名为wait的函数,它会延迟一些周期。
装配:
 13     P1OUT |= 1;
      sendData():
 c0ae:   D3D2 0021           BIS.B   #1,&Port_1_2_P1OUT
 18     P1OUT &= ~(1);
 c0b2:   C3D2 0021           BIC.B   #1,&Port_1_2_P1OUT

谢谢你的帮助。

最佳答案

等待可能是一个正在优化的繁忙循环。我相信有一个很好的等待函数的例子,可以在示例代码中进行优化。
参见示例http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/18638.aspx

10-08 07:05