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

📄 getposition.c

📁 4线电阻触摸板的驱动器ADS7843的驱动程序 由凌阳单片机SPCE061A驱动
💻 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 + -