⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 touch.c

📁 杭州立宇泰豪华型44B0开发板
💻 C
字号:
#include "..\Target\44b.h"
#include "..\Target\44blib.h"

#define TOUCH_MSR_Y   0x9c//读Y轴坐标命令(参考表14-2的位定义说明)
#define TOUCH_MSR_X   0xdc//读X轴坐标命令

typedef struct {
	int  Pressed;
	int  x;
	int  y;
}TOUCHSTATE;

TOUCHSTATE _State;

int ReadTouch(unsigned char command)//TouchStruct *TouchState)
{
    unsigned char temp,i,j,k;

    unsigned int ack=0;
    //PG7<-PENIRQ,PG6<-BUSY,PG5<-DOUT,PG4->CS,PG3->DCLK,PG2->DIN
    	rPDATG&=0xe7;//clr cs;clr dclk
    	temp=0x80;
    	for(i=0;i<8;i++)
    	{
    		if(command&temp)//mov din,c
    		   rPDATG|=0x04;//setb din
    		else
    		   rPDATG&=0xfb;//clr  din
    		   rPDATG|=0x08;//setb dclk
    		Delay(3);
    		rPDATG&=0xf7;//clr dclk
    		Delay(3);
    		temp=temp>>1;
    	}
    	while((temp=(rPDATG&0x40))==0);
    	rPDATG&=0xdf;//clr din
    	
    	rPDATG|=0x08;//setb dclk
    	Delay(3);
    	rPDATG&=0xf7;//clr dclk
    	Delay(3);
    	for(i=0;i<16;i++)
    	{
    		rPDATG|=0x08;//setb dclk
    		if(temp=rPDATG&0x20)
    			ack+=1;
    		ack=ack<<1;
    		Delay(3);
    		rPDATG&=0xf7;//clr dclk
    		Delay(3);
    	}
    	ack=ack>>5;
    	
    	
    	rPDATG|=0x10;//setb cs
        
        return ack;
}




void Test_Touch(void)
{
   _State.Pressed=0;
   _State.x=0;
   _State.y=0;
   
   rPCONG=0x015f;//init. I/O
   rPUPG &=0x80;
    
   ReadTouch(0xdc);
   
   while(1)
   {
    	if(((rPDATG&0x80)==0)&&(_State.Pressed==0)) //PENIRQ电平为低
        {
            _State.Pressed=1;//说明已经按下
		    _State.x=ReadTouch(TOUCH_MSR_X);
		    _State.y=ReadTouch(TOUCH_MSR_Y);
		    Uart_Printf("\nTouch at the point ( %4d, %4d )",_State.x,_State.y);
		}
		else if (((rPDATG&0x80)!=0)&&(_State.Pressed==1))
			_State.Pressed=0;
			
		Delay(100);
   }
}
			

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -