📄 my.c
字号:
#include<at89x52.h>
#include<intrins.h>
#define uchar unsigned char
#define dclk P1_0
#define cs P1_1
#define din P1_2
#define busy P1_3
#define dout P1_4
#define pen P1_5
uchar resultx[12]={0,0,0,0,0,0,0,0,0,0,0,0},resulty[12]={0,0,0,0,0,0,0,0,0,0,0,0};
void delay(unsigned int a)
{while(a--);
}
void converse(uchar xy,uchar *p) //xy为1时,选择Y转换,为0时为X转换;P数组为存转换结果
{ uchar control=0x94,i;
if(xy==1) control=0xd4;
//写命令
for(i=0;i<8;i++)
{ din=(bit)(control&0x80);
control<<=1;
dclk=1;_nop_();
dclk=0;
}
_nop_();
while(busy==1); //等待转换结束
dclk=1;_nop_(); //给1个时钟
dclk=0;
for(i=0;i<12;i++) //读结果,从高为到低位读
{ dclk=1;_nop_();
if(dout==1) p[i]=1;
dclk=0;
}
/* dclk=1;_nop_(); //最后给3个时钟
dclk=0;dclk=1;_nop_();
dclk=0;dclk=1;_nop_();
dclk=0; */
}
void ad7843()
{ cs=1;
while(pen==1);
delay(1000); //去抖动
dclk=0;
cs=0;
converse(1,resulty); //Y转换
converse(0,resultx); //X转换
cs=1;
}
void main()
{ uchar i;
SCON=0x40; //工作在通讯模式1,波特率9600
PCON=0x00;
TMOD=0x20;
TCON=0x00;
TH1=0xfd;
TL1=0xfd;
TR1=1;
while(1)
{
ad7843();
for(i=0;i<12;i++)
{SBUF=resultx[i];while(TI==0);TI=0;
}
SBUF=0x0f;while(TI==0);TI=0;
for(i=0;i<12;i++)
{SBUF=resulty[i];while(TI==0);TI=0;
}
SBUF=0xff;while(TI==0);TI=0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -