📄 touch.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;
if(_State.Pressed)
{
ack=0;
//PC8<-PENIRQ,PC3<-DOUT,PC2->DIN,PC1->CS,PC0->DCLK
rPDATC&=0x1fc;//clr cs;clr dclk
temp=0x80;
for(i=0;i<8;i++)
{
if(command&temp)//mov din,c
rPDATC|=0x04;//setb din
else
rPDATC&=0x1fb;//clr din
rPDATC|=0x01;//setb dclk
Delay(3);
rPDATC&=0x1fe;//clr dclk
Delay(3);
temp=temp>>1;
}
//while((temp=(rPDATG&0x40))==0);
Delay(1000);
rPDATC&=0x1fb;//clr din
rPDATC|=0x01;//setb dclk
Delay(3);
rPDATC&=0x1fe;//clr dclk
Delay(3);
//Uart_Printf("\n");
for(i=0;i<7;i++)
{
rPDATC|=0x01;//setb dclk
temp=rPDATC&0x08;
Uart_Printf("%",temp);
if(temp)
ack+=1;
ack=ack<<1;
Delay(3);
rPDATC&=0x1fe;//clr dclk
Delay(3);
}
rPDATC|=0x01;//setb dclk
temp=rPDATC&0x08;
if(temp)
ack+=1;
Delay(3);
rPDATC&=0x1fe;//clr dclk
rPDATC|=0x02;//setb cs
}
return ack;
}
int TOUCH_X_MeasureX(void)
{
_State.x=0;
rPCONC=0xff15;
rPUPC&=0xfeff;
while(1)
{
if((rPDATC&0x100)==0) //PENIRQ电平为低
{
_State.Pressed=1;//说明已经按下
_State.x=ReadTouch(TOUCH_MSR_X);
_State.Pressed=0;
break;
}
else if ((rPDATC&0x80)!=0)
_State.Pressed=0;
Delay(100);
}
return(_State.x);
}
int TOUCH_X_MeasureY(void)
{
_State.y=0;
rPCONC=0xff15;
rPUPC&=0xfeff;
while(1)
{
if((rPDATC&0x100)==0)//PENIRQ电平为低
{
_State.Pressed=1;//说明已经按下
_State.y=ReadTouch(TOUCH_MSR_Y);
_State.Pressed=0;
break;
}
else if ((rPDATC&0x80)!=0)
_State.Pressed=0;
Delay(100);
}
return(_State.y);
}
void TOUCH_X_ActivateX(void){}
void TOUCH_X_ActivateY(void){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -