|
以下程序是本人在压力测试仪上的读写程序(cvavr编译器)供参考。
#define DRDY PINC.0
#define SCLK PORTC.1
#define DIN PINC.2
#define DOUT PORTC.3
#define ADCS PORTC.4
#define SETUP 0x00 //增益选择
#define MUX 0x01 //输入通道选择
#define ACR 0x02 //模拟电路控制
#define RDATA 0x01 //读数据
#define WERG 0x50 //写数据
#define RREG 0x10 //读寄存器
#define SELFOCAL 0xf1 //失调误差自校准
#define SELFGCAL 0xf2 //增益误差自校准
#define RES 0xfE //芯片复位
void TX_CS1240(uchar data,uchar x)
{unsigned char i;
for(i=x;i>0;i--)
{SCLK=0;SCLK=0;
if(data&0x80){DOUT=1;DOUT=1;}
else {DOUT=0;DOUT=0;}
SCLK=1;SCLK=1;
data<<=1;
}
}
void RX_CS1240(uchar x)
{unsigned char i;
if(x>8)
{RX_WORD=0;
for(i=x;i>0;i--)
{RX_WORD=RX_WORD<<1;
SCLK=0;SCLK=0;
SCLK=1;SCLK=1;
if(DIN==1)RX_WORD|=0x0001;
else RX_WORD&=0xfffe;
}
}
else{RX_BYTE=0;
for(i=x;i>0;i--)
{RX_BYTE=RX_BYTE<<1;
SCLK=0;SCLK=0;
SCLK=1;SCLK=1;
if(DIN==1)RX_BYTE|=0x01;
else RX_BYTE&=0xfe;
}
}
}
unsigned int ad_h;
unsigned char ad_l;
void read_ad()
{ADCS=0;
TX_CS1240(RDATA,8);
delay_us(20);
RX_CS1240(16);
ad_h=RX_WORD;
RX_CS1240(8);
ad_l=RX_BYTE;
ADCS=1;
}
void ad_init(void)
{ unsigned int i;
ADCS=0;
TX_CS1240(RES,8);
delay_us(20);
TX_CS1240(WERG+MUX,8);
TX_CS1240(0x01,8);
TX_CS1240(0x08,8);
delay_us(20);
TX_CS1240(0x41,8);
delay_us(20);
TX_CS1240(SELFGCAL,8);
while((DRDY==0)&&(i<60000))i++;
TX_CS1240(SELFOCAL,8);
//TX_CS1240(0xf3,8);
while((DRDY==0)&&(i<60000))i++;
ADCS=1;
}
-----此内容被shaozh于2006-03-04,14:04:44编辑过 |
|