#include <REG52.H>
#include <INTRINS.H>
#define uint unsigned int
#define uchar unsigned char
sbit AD_CLK=P2^0;
sbit AD_DIN=P2^1;
sbit AD_DOUT=P2^2;
sbit AD_CS=P2^3;
//时钟脉冲
void clock_in()
{
AD_CLK=1;
_nop_();
AD_CLK=0;
}
// 进行AD转换,输入:要进行AD转换的通道号(tongdao)
// 输出:AD转换的结果
uint TLC2543( uchar tongdao)
{
uchar i;
uint result=0;
uchar datah;
uchar datal;
datah=0;
datal=0 ;
tongdao<<=4;
AD_CS=0;
AD_CLK=0;
for(i=0;i<12;i++) //输入12个时钟脉冲
{
if(i<8) //输入4位通道号,4位输出方式
{
AD_DIN=(bit)(tongdao&0x80);
tongdao<<=1;
}
clock_in();
}
for(i=0;i<10;i++);
AD_CS=1;
AD_CS=0;
for(i=0;i<12;i++) //输出12位数据
{
if(i<4) //输出高4位数据
{
datah<<=1;
datah|=AD_DOUT;
}
else //输出低8位数据
{
datal<<=1;
datal|=AD_DOUT;
}
clock_in();
}
AD_CS=1;
result=datah*256+datal;
return(result);
}