#include <AT89X52.H>
#define uint unsigned int
#define uchar unsigned char
#define CLK P1_0
#define CS P1_3
#define DOUT P1_2
#define DIN P1_1
sbit A_0=ACC^0;//方便位操作
sbit A_1=ACC^1;
sbit A_2=ACC^2;
sbit A_3=ACC^3;
sbit A_4=ACC^4;
sbit A_5=ACC^5;
sbit A_6=ACC^6;
sbit A_7=ACC^7;
sbit B_0=B^0;//方便位操作
sbit B_1=B^1;
sbit B_2=B^2;
sbit B_3=B^3;
sbit B_4=B^4;
sbit B_5=B^5;
sbit B_6=B^6;
sbit B_7=B^7;
uint adctrl(uchar chl )//第一种办法
{ uint data resl;
uchar data dl;
uchar data dh;
CLK=0;
CS=1;
CS=0;
B=0;
ACC=chl;
DIN=A_7;
B_7=DOUT;
CLK=1;
CLK=0;
DIN=A_6;
B_6=DOUT;
CLK=1;
CLK=0;
DIN=A_5;
B_5=DOUT;
CLK=1;
CLK=0;
DIN=A_4;
B_4=DOUT;
CLK=1;
CLK=0;
DIN=A_3;
B_3=DOUT;
CLK=1;
CLK=0;
DIN=A_2;
B_2=DOUT;
CLK=1;
CLK=0;
DIN=A_1;
B_1=DOUT;
CLK=1;
CLK=0;
DIN=A_0;
B_0=DOUT;
CLK=1;
CLK=0;
dh=B;
B_3=DOUT;
CLK=1;
CLK=0;
B_2=DOUT;
CLK=1;
CLK=0;
B_1=DOUT;
CLK=1;
CLK=0;
B_0=DOUT;
CLK=1;
CLK=0;
dl=B;
dl=dl&0x0f;
resl=dh*16+dl;
return(resl);
}
uint adctrl1(uchar chl)//第二种办法
{
uint data resl;
uchar data dl;
uchar data dh;
char i;
CLK=0;
CS=1;
CS=0;
B=0;
for(i=7;i> =0;i--)
{
ACC=0;
DIN=(chl> > i)&1;
ACC=(ACC|DOUT) < <i;
B=B|ACC;
CLK=1;
CLK=0;
}
dh=B;
B=0;
for(i=3;i> =0;i--)
{
ACC=0;
ACC=(ACC|DOUT) < <i;
B=B|ACC;
CLK=1;
CLK=0;
}
dl=B;
resl=dh*16+dl;
return(resl);
}
void main()
{
uint data adat;
TMOD=0x20;
SCON=0x50;
TL1=0xfd;
TH1=0xfd;
P3_7=1;
TR1=1;
ET1=0;
EA=1;
adat=adctrl1(0x00);
while(1)
{ adat=adctrl1(0x00);//调用第二种办法
SBUF=((uchar*)&adat)[0];
while(!TI);
TI=0;
SBUF=((uchar*)&adat)[1];
while(!TI);
TI=0;
}
}