if((receivedata[k-2]==CRC16_Lo)&&(receivedata[k-1]==CRC16_Hi))出问题!

[复制链接]
1548|5
 楼主| space005 发表于 2014-9-2 10:36 | 显示全部楼层 |阅读模式
本帖最后由 space005 于 2014-9-2 10:56 编辑

我是用keil调试的(选用的是AT89C52单片机),可是这个语句根本就形同虚设,不管括号里的式子相不相等,都执行if后的语句,但要是把上述语句改为
if(receivedata[k-2]==CRC16_Lo)
标志寄存器_1=1;
else
标志寄存器_1=0;
if(receivedata[k-1]==CRC16_Hi)
标志寄存器_2=1;
else
标志寄存器_2=0;
if(标志寄存器_1&&标志寄存器_2)  
就不存在这个问题?
ayb_ice 发表于 2014-9-2 10:51 | 显示全部楼层
何以证明呢
 楼主| space005 发表于 2014-9-2 10:58 | 显示全部楼层
KEIL中在这条程序语句的前面设了断点,然后一步一步运行观察到的。不知为什么,if((receivedata[k-2]==CRC16_Lo)&&(receivedata[k-1]==CRC16_Hi))这个语句连断点都不给设置。
ayb_ice 发表于 2014-9-2 11:17 | 显示全部楼层
space005 发表于 2014-9-2 10:58
KEIL中在这条程序语句的前面设了断点,然后一步一步运行观察到的。不知为什么,if((receivedata[k-2]==CRC1 ...

不能设置断点说明有错误吗
 楼主| space005 发表于 2014-9-2 11:43 | 显示全部楼层
是这样的,观察内存变量,无论((receivedata[k-2]==CRC16_Lo)&&(receivedata[k-1]==CRC16_Hi))成立与否,都执行if后面的语句,怀疑语法有问题,但又没看出错误,不知道问题在哪?
菜鸟同学 发表于 2014-9-2 21:37 | 显示全部楼层
反汇编!看代码!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部