本帖最后由 gangdou 于 2017-9-21 08:56 编辑
51是吧。16位运算不是一条指令完成的,运行到if((pulleyt1>500)||(pulleyt2>500))这里时发生中断就会出问题了,而且肯定是发生在低8位进位时。看看反汇编文件就知道了。 举个解决例子:
while(1){
。。。
int temp;
{
temp = int_value; ;这条语句汇编后有好几条语句,期间可能发生中断而使temp!=int_value
}while(temp!=int_value); ;这样处理保证下面要处理的int_value正常。
。。。
}
|