请教大家一个PIC编程问题

2020-02-09 09:26发布

大家好,请教大家一个PIC C语言问题:

unsigned char CheckDR(void)                //检查是否有新数据传入 Data Ready
{
    if (DR==1)
        {
                return 1;//仿真时,DR =1,return 1.
        }
        else
        {
                return 0;
        }
}

if(CheckDR())      //但程序来到这里时出问题了,这里CheckDR()的返回值是1,但不知道为什么它不进入函数里,仿真的时候,光标在RxPacket();这里
{                  //停了一下,一闪而过的样子,就跑到下一段程序了。
      RxPacket();
}


当我写成这样时,就能进入程序,什么原因?
unsigned char CheckDR(void)                //检查是否有新数据传入 Data Ready
{
    if (DR==1)
        {
            DR_flag = 1;
                return 1;
        }
        else
        {
                DR_flag = 0;
                return 0;
        }
}   

  CheckDR();
  if(DR_flag==1)
  {
    RxPacket();//此时能正常进入此函数。
  }
希望大家指点迷津!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
visharn
1楼-- · 2020-02-09 09:48
 精彩回答 2  元偷偷看……
zslp888
2楼-- · 2020-02-09 15:29
unsigned charM;
M=CheckDR();
if(M)
{


}
bigZ
3楼-- · 2020-02-09 17:49
应该是优化问题,那个函数一闪而过其实可能已经执行过了
millwood0
4楼-- · 2020-02-09 18:51
DR is likely to have been changed outside of CheckDR(). so you need to declare it volatile.

read the @#$%@%# compiler manual.

一周热门 更多>