周老师,我想问的代码如下: void GetLCD_XY(uint16 *vx, uint16 *vy) { uint16 vx_dat, vy_dat; uint16 vx_dat1, vy_dat1;
while(1) { // 判断是否有触摸动作(通过ADS7843的PENIRQ引脚进行判断) while(1) { vy_dat = ADS7843_WriteRead(AIN_Y); if(vy_dat != 0) break;
} // 进行数据采集 vx_dat = ADS7843_WriteRead(AIN_X); vy_dat = ADS7843_WriteRead(AIN_Y); vx_dat1 = ADS7843_WriteRead(AIN_X); vy_dat1 = ADS7843_WriteRead(AIN_Y); if((vy_dat<3) || (vy_dat1<3)) continue; ///问题1、上面这一句是还是进行六次数据采集的条件判断语句啊? ///我不明白的是:vy_dat不是坐标值吗,怎么变成次数了??
///师兄叫我看ADS7843_WriteRead里面写什么,我看不大懂。只知道里面 ///只返回了ret_dat值。应该就是坐标值吧.... ///问题2、顺便问问,初学者用不用看到驱动里到底写什么?什么时候看最合适?
if(vx_dat>vx_dat1) { if((vx_dat-vx_dat1) > 32) continue; ///问题3、32怎么得到的?是多次实验得出的,还是大概的。。。。 } else { if((vx_dat1-vx_dat) > 32) continue; } if(vy_dat>vy_dat1) /// { if((vy_dat-vy_dat1) > 64) continue; ///问题4、假如是大概,那64呢? } else { if((vy_dat1-vy_dat) > 64) continue; } *vx = (vx_dat+vx_dat1) >> 1 ///此处是不是指右移一位相当于除以10(即十进制的2)??? ///即得到用户点的坐标的平均值 *vy = (vy_dat+vy_dat1) >> 1; return; } } 各位看官要是知道的话也请回答一下菜鸟的问题,浪费你们宝贵时间了,麻烦了~~!有些问题我也不敢乱确定,就多问了几句! |