初级会员

- 积分
- 81
- 金钱
- 81
- 注册时间
- 2016-5-29
- 在线时间
- 19 小时
|
1金钱
在GT_9147_SCAN函数里有这样的一段代码
if((mode&0X8F)==0X80)/
{
if(tp_dev.sta&TP_PRES_DOWN) //
{
tp_dev.sta&=~(1<<7); /a
}else
{
tp_dev.x[0]=0xffff;
tp_dev.y[0]=0xffff;
tp_dev.sta&=0XE0; //
}
}
printf("%d\r\n",mode);
if(t>240)t=10;//
return res;
不知道大家有没有发现 if((mode&0X8F)==0X80)/ 这句话,问什么是要==0x80呢??我陷入这里苦思好久好久,如果没有触摸按下,应该是00啊,为什么是80呢,如果没有触摸按下 那么最高位也不能是1啊,有触摸按下,最低4位居然没有触摸点数,这不是矛盾吗,于是本人用DEbug下,发现MODE这个值,在没有按键按下的话居然是"FF"这就更蒙圈了,于是按我想法给它改成了“==8F” 发现居然触摸可以一段一段的画线了,不信大家改下这个值,没有触摸点数MODE的值是"FF" 我给它改成了“8F”我认为这样每次都会清空触摸点和状态位,结果它却不清空里面的数了,才导致触摸不能随心所欲,这一段绕了有1个多小时,脑袋都想炸了,对Debug 产生了深深的怀疑,怎么办呢,于是灵光一现,在这个语句后面加上printf 来看看MODE的值究竟是多少,不看不知道啊,一看吓一跳啊。请看图
这个值在没有触摸的情况下确实有“FF”,不过大部分还是“0“。 挂不得会出现那样的情况!
再来一张有 触摸的情况的图片
哈哈这样就验证了 原子大哥 为什么要等于0x80了,只要触摸松开以后,后面的接的一瞬间肯定是128,。
我现在的疑问是原子大哥你是通过什么知道这个后面跟的是0X80的,为什么不写0X00呢?这样貌似对程序更好的理解些。。
|
|