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

📄 tp.c

📁 8051带32Mflash的源代码
💻 C
字号:
#include"TP_H.H"


/*------------------------------------------------------------------
              	TP READ USE INT SUB 

------------------------------------------------------------------*/

void TP_INIT(void)
{
	EA=0;
	EX0=1;
//	IT0=1;
//	IE0=0;
//	IP=0x00;
	EA=1;
	TP_FLAG=1;
}


void tp_cs(bit flag)
{	if(flag==0)
	{	P40=0;
		P41=1;
		P42=0;
	}
	else
	{	P40=1;
		P41=1;
		P42=1;		
	}
}

void start(void) //SPI开始
{	
	TP_DCLK=0;
	TP_DIN=0;
	tp_cs(0);
	delay5us(1);
	TP_DOUT=1;
}

void WriteCharTo7843(unsigned char num) //SPI写数据
{
	unsigned char count;
	for(count=0;count<8;count++)
	{   if(num&0x80)
		{	TP_DIN=1;
		}
		else
		{	TP_DIN=0;
		}
		TP_DCLK=1;  //xia升沿有效
//		delay5us(1);
		TP_DCLK=0; 
//		delay5us(1);
		num=num<<1;
	}
	TP_DIN=0;
	TP_DCLK=1;
	TP_DCLK=0; 
}

uint ReadFromCharFrom7843(void) //SPI 读数据
{
	unsigned char count=0;
	unsigned int Num=0;
	for(count=0;count<12;count++)
	{
		Num<<=1;
		
		
	//	delay5us(1);
		if(TP_DOUT) Num++;
//		delay5us(1);
		TP_DCLK=1;
	    TP_DCLK=0;
//		delay5us(1);
	}
	for(count=0;count<3;count++)
	{	TP_DCLK=1;
		TP_DCLK=0;
	}
	return(Num);
}

void TP_ZHONGDUAN() interrupt 0 using 3 //TP_INT SUB PROGRAM  INTERFACE:P3.2 EX0 REGISTER:03
{	
	
	
	EA=0;
/*
	TP_X=0;
	TP_Y=0;
    delay5us(100);   //中断后延时以消除抖动,使得采样数据更准确

	start(); //启动SPI
	WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
	TP_BUSY=1;
	while(TP_BUSY);//wait for TP not busy.
	TP_Y=ReadFromCharFrom7843();  //读X轴坐标
	TP_BUSY=1;
	while(TP_BUSY);
	tp_cs(1);

	start(); //启动SPI
	WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
	TP_BUSY=1;
	while(TP_BUSY);//wait for TP not busy.
	TP_X=ReadFromCharFrom7843();  //读Y轴坐标
	TP_BUSY=1;
	while(TP_BUSY);
	tp_cs(1);
*/
	TP_FLAG=1;
	EA=1;
}


uint *TP_XY_READ(void)                
{	uint  XY_VALUE[2]={0,0};	
	if(TP_FLAG);//等待触摸中断
	{	EA=0;
		TP_FLAG=0;
		TP_X=0;
		TP_Y=0;
	    delay5us(100);   //中断后延时以消除抖动,使得采样数据更准确
	
		start(); //启动SPI
		WriteCharTo7843(0x90); //送控制字 10010000 即用差分方式读X坐标 详细请见有关资料
//		TP_BUSY=1;
//		while(TP_BUSY);//wait for TP not busy.
		TP_Y=ReadFromCharFrom7843();  //读y轴坐标
//		TP_BUSY=1;
//		while(TP_BUSY);
		tp_cs(1);
	
		start(); //启动SPI
		WriteCharTo7843(0xD0); //送控制字 11010000 即用差分方式读Y坐标 详细请见有关资料
//		TP_BUSY=1;
//		while(TP_BUSY);//wait for TP not busy.
		TP_X=ReadFromCharFrom7843();  //读x轴坐标
//		TP_BUSY=1;
//		while(TP_BUSY);
		tp_cs(1);
		XY_VALUE[0]=(TP_X-300)/14;

		XY_VALUE[1]=(TP_Y-300)/10;

		EA=1;
	}
	
	return(XY_VALUE);
}


⌨️ 快捷键说明

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