📄 getposition.c
字号:
#include "SPCE061V004.h"
//******************** ***************************
#define CLK 0x1000
#define CS 0x0800
#define DIN 0x0400
#define DOUT 0x0100
#define BUSY 0x0200
//*********************** *************************
#define PULLUP(x) *P_IOB_Data|=x
#define PULLDOWN(x) *P_IOB_Data&=~x
//*********************** *************************
void GetPosition(unsigned int*,unsigned int*);
unsigned int ReadPosition_7843(unsigned int);
void Delay(int);
//*********************** *************************
unsigned int ReadPosition_7843(unsigned int tmp_Order)
{
unsigned int tmp_Code;
int i;
for(i=0,tmp_Code=tmp_Order;i<8;i++)
{
PULLDOWN(CLK);
if(tmp_Code&0x0080)
PULLUP(DIN);
else PULLDOWN(DIN);
Delay(10);
PULLUP(CLK);
Delay(10);
tmp_Code<<=1;
}
PULLDOWN(DIN);
Delay(10);
PULLDOWN(CLK);
Delay(5);
while(*P_IOB_Data&BUSY)
{
Delay(5);
PULLUP(CLK);
Delay(10);
for(i=0,tmp_Code=0;i<12;i++)
{
tmp_Code<<=1;
PULLDOWN(CLK);
Delay(5);
if(*P_IOB_Data&DOUT)
tmp_Code|=0x0001;
Delay(5);
PULLUP(CLK);
Delay(10);
}
}
return(tmp_Code);
}
void GetPosition(unsigned int *tmp_Xposition,unsigned int *tmp_Yposition)
{
int i;
PULLUP(CS);
Delay(100);
PULLDOWN(CLK);
PULLDOWN(DIN);
PULLDOWN(CS);
Delay(100); //中断后延时以消除抖动,使得采样数据更准确
*tmp_Xposition=ReadPosition_7843(0x90);
*tmp_Yposition=ReadPosition_7843(0xD0);
PULLUP(CS);
}
void Delay(int i)
{
while(i--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -