-2

我正在使用 dsPIC 对 C 进行一些编程,我发现了一个小问题,我不知道它为什么或如何发生。MPLAB 编译器 C30

我有这个代码:

int Function1(){
.
.
.
while(1){
.
.
.
P1 = EPC96_1[18];  //Here the value of P1 = 0xB6
P2 = EPC96_1[19];
CRC_CCITT(EPC96_2, 18);   //in this function CRC_1 is calculated also CRC2
if(P1 != CRC_1){       //In the calculation of CRC_1 it comes always 0xB6
  P1++;                //Both values P1 and CRC1 are the same, stil it 
  if(P2 != CRC_2)      //comes here and continues with the break
    break;
  }
}
return 1;
}
//end of my function, return to main code

----对不起,我没有具体说明,假设不进入if,假设!=是这样,因为我希望程序做的是当两个变量相等时,它应该回到while(1)开始.----

我在 MPLAB (8.92) 的手表上查找了变量,它们是相同的。我不认为问题出在代码之前或之后或任何其他地方,但我可能是错的。有没有人在你体验期间发现了同样的问题?

感谢您的时间。

4

2 回答 2

1

假设P1CRC_1int变量。

根据您代码中的注释,这两个变量都将具有 value 0xB6。-if语句检查不等式 ( !=),而不是相等 ( ==),因此它将跳过该块。

我建议插入printf()-statements 以在 -statement 之前和/或内部输出两个变量的值if。可能它们中的任何一个都具有意外的值。

printf("P1=%d, CRC_1=%d\n", P1, CRC_1);
于 2016-06-24T12:33:18.040 回答
0

变量的数据类型未知。P1、P2、EPC96_1、CRC_1、CRC_2 的数据类型是什么?变量在哪里定义?CR_CCCITT() 是做什么的?

于 2016-06-24T12:51:07.593 回答