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

📄 touch.c

📁 基于三星44B0的FAT16文件系统 测试版
💻 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,ack;		ack=0;        ///PG7<-PENIRQ,PG6<-BUSY,PG5<-DOUT,PG4->CS,PG3->DCLK,PG2->DIN    //PC14<-DCLK, PC11<-DOUT, PC10<-BUSY, PC9<-DIN, PC8<-CS, EXINT7<-PENIRQ			rPDATC &=0xbeff;//rPDATG &=0xe7;	//clr cs;clr dclk	temp=0x80;	for(i=0;i<8;i++)	{		if(command&temp)//mov din,c			rPDATC |=0x0200;//rPDATG|=0x04;//setb din  ,PC9=1 //setb din		else			rPDATC &=0xfdff;//rPDATG &=0xfb;//clr  din	,PC9=0 //clr  din		rPDATC |=0x4000;//rPDATG |=0x08;	//setb dclk            //setb dclk		Delay(3);		rPDATC &=0xbfff;//rPDATG &=0xf7;	//clr dclk ,PC14=0     //clr dclk		Delay(3);		temp=temp>>1;	}	temp=(unsigned char)((rPDATC&0x0400)>>8);	while(temp==0)		//while((temp=(rPDATG&0x40))==0); 	// 当busy(pc10)=0 循环			temp=(unsigned char)((rPDATC&0x0400)>>8);	rPDATC &=0xf7ff;//rPDATG &=0xdf;	//clr dout  ,PC11=0  //clr din    		rPDATC |=0x4000;//rPDATG |=0x08;	//setb dclk ,PC14=1		//setb dclk	Delay(3);	rPDATC &=0xbfff;//rPDATG &=0xf7;	//clr dclk  ,PC14=0						//clr dclk	Delay(3);	for(i=0;i<7;i++)	{		rPDATC |=0x4000;//rPDATG |=0x08;	//setb dclk ,PC14=1			//setb dclk		temp=(unsigned char)((rPDATC&0x0800)>>8);		if(temp)		//if(temp=rPDATG&0x20)		//当dout(pc11)=1				ack++;		ack=ack<<1;		Delay(3);		rPDATC &=0xbfff;//rPDATG &=0xf7;	//clr dclk ,PC14=0		//clr dclk		Delay(3);	}	rPDATC |=0x4000;	// rPDATG |=0x08;//setb dclk ,PC14=1	temp=(unsigned char)((rPDATC&0x0800)>>8);	if(temp)		//if(temp=rPDATG&0x20)		ack++;		Delay(3);		rPDATC &=0xbfff;	//rPDATG&=0xf7;//clr dclk	rPDATC |=0x0100;	//rPDATG|=0x10;//setb cs        	return ack;}void Test_Touch(void){   	unsigned int save_C,save_G,save_PC,save_PG;   	   	save_C=rPCONC;	save_G=rPCONG;    save_PC=rPUPC;    save_PG=rPUPG;   		Uart_Printf("[Touch Screen Panel test!\n");	Uart_Printf(" 在计算机上,按任意键退出测试...\n");	Uart_Printf("点击触摸屏,显示点击的位置坐标。\n");			_State.Pressed=0;	_State.x=0;	_State.y=0;		//rPCONG=0x015f;//init. I/O	//rPUPG &=0x80;	rPCONC =0x1f05ff55;		//PC14,PC8,PC9为输出,PC10,PC11为输入	rPUPC  =0x00ff;   	rPCONG =0x00ff;			//PG7 设为输入	rPUPG  =0x80;				//PG7 the pull up resistor is disabled	    	ReadTouch(0xdc);   	while(!Uart_GetKey())	{		if(((rPDATG&0x80)==0)&&(_State.Pressed==0)) //PENIRQ电平为低  PG7=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);	}	rPCONC=save_C;	rPCONG=save_G;	rPUPC=save_PC;	rPUPG=save_PG;}			

⌨️ 快捷键说明

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