用ADS7843做触摸屏,可是定义了一个触摸区域,却有N个区域反应,大侠帮忙看一下程序,先行谢过 这是程序:delay()的基数是1us,CPU用的是atmega128 uint read7843(uchar com) { uint data; uchar fori,dat; data=0;dat=0; DDRE=0x1f; PORTE=0x02; PORTE&=~(1<<1);//CS=0 //PORTE&=~(1<<4); DDRE&=~(1<<3); delay(10); for(fori=0;fori<8;fori++) { PORTE&=~(1<<0); //DCLK=0; delay(5); if((com<<fori)&0x80) { PORTE|=(1<<2);//DIN=1; } else { PORTE&=~(1<<2);//DIN=0; } delay(5);//DIN数值预置在DCLK上升沿之前至少100ns PORTE|=(1<<0); //DCLK=1; delay(5);//低电平至少200ns PORTE&=~(1<<0); //DCLK=0; delay(5); } for(fori=0;fori<3;fori++) { PORTE&=~(1<<0);//加至少3个机器周期 delay(5); PORTE|=(1<<0); delay(5); } DDRE&=~(1<<3); for(fori=0;fori<12;fori++) { PORTE&=~(1<<0);//DCLK=0 data<<=1; delay(5);//低电平至少200ns PORTE|=(1<<0);//DCLK=1; delay(5); dat=PINE; if(dat&0x08) data++; PORTE&=~(1<<0);//DCLK=0 delay(5); } for(fori=0;fori<3;fori++) { PORTE|=(1<<0);//加至少3个机器周期 delay(5); PORTE&=~(1<<0); delay(5); } PORTE|=(1<<1);//CS=1 return (data); } |