www.pudn.com > HT1621Control.rar > touch_drv.c


/*C************************************************************************** 
* NAME:         touch_drv.c 
*---------------------------------------------------------------------------- 
* Copyright (c) 2006 Atmel. 
*---------------------------------------------------------------------------- 
* RELEASE:      C51 Sample       
* REVISION:     1.00      
*---------------------------------------------------------------------------- 
* 
*****************************************************************************/ 
#include "system\reg51.h" 
#include "system\compiler.h" 
#include "system\config.h" 
#include "Driver\io_def.h" 
#include "Driver\touch_drv.h" 
 
/*F************************************************************************** 
* NAME: Touch_PositionXY 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE: 从Touch中读取XY Position数据 
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
bit Touch_PositionXY (void) 
{ 
 
	Touch_Write (TOUCH_REQUEST, XY_REG); 
	if(!(Touch_Wait())) {Touch_stop();return(0);} 
	if(!(Touch_Read())) {Touch_stop();return(0);} 
	TouchPad[2] = TouchPad[0]; /* TouchPad[2] is X position value */ 
	TouchPad[3] = TouchPad[1]; /* TouchPad[3] is y position value */ 
	return(1); 
 
} 
 
/*F************************************************************************** 
* NAME: Touch_PositionA 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE: 从Touch中读取Angol Position数据 
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
Byte Touch_PositionA (void) 
{ 
	Touch_Write (TOUCH_REQUEST, ANGLE_REG); 
	if(!(Touch_Wait())) {Touch_stop();return(0);} 
	if(!(Touch_Read())) {Touch_stop();return(0);} 
	return(TouchPad[1]); 
} 
 
/*F************************************************************************** 
* NAME: Touch_Read 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE: 从Touch pad中读取数据操作 
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
bit Touch_Read (void) 
{ 
	Byte bTemp = 0x00; 
 
	Touch_start(); 
	bTemp = Touch_scanByteLSB(4);	/* scan start(1),type(101) */ 
	if(	bTemp != 0x05) return(0); 
	bTemp =  Touch_scanByteLSB(8);	/* scan ID(0010),register(00xx) */ 
	TouchPad[0] =  Touch_scanByteLSB(8); 
	TouchPad[1] =  Touch_scanByteLSB(8); 
	bTemp = Touch_scanByteLSB(4); 
	if(	bTemp != 0x01) return(0); 
	Touch_stop(); 
	return(1); 
} 
 
/*F************************************************************************** 
* NAME: Touch_Write 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE: 向eTK0101的指定Register发送读数据请求 
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
bit Touch_Write (Byte PID, Byte bRegister) 
{ 
	 Touch_start(); 
	 Touch_getMSB(PID); 
	 Touch_getMSB(bRegister); 
	 Touch_getMSB(0x00); 
	 Touch_getMSB(0x01); 
	 Touch_stop(); 
	 return(1); 
} 
 
/*F************************************************************************** 
* NAME: Touch_scanByteMSB 
*---------------------------------------------------------------------------- 
* PARAMS: 
* 
* return: 
*---------------------------------------------------------------------------- 
* PURPOSE:  
*---------------------------------------------------------------------------- 
* EXAMPLE: 
*---------------------------------------------------------------------------- 
* NOTE: 
*---------------------------------------------------------------------------- 
* REQUIREMENTS: 
*****************************************************************************/ 
Byte Touch_scanByteLSB (Byte bBit) 
{ 
	Byte bCount = 0x00,i; 
	Byte bByte = 0x00,temp; 
	//Byte i; 
	for (i=0; i 6) return(0); /* waiting time Out */ 
		else  return(1); 
}