主程序 :
#define CS2 P2_0
#define SDO2 P1_5
#define SDI2 P1_4
#define SCLK2 P1_0
......
init_2548();
pv=read_2548_cfr(0x90);
pv=ReadAD2(0);//读0通道
......
void init_2548(void)//初始
{
EA=0;
// SCLK2=0;
SDI2=1;
SDO2=1;
CS2=1;
SCLK2=0;
//CSSTART2=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
write_2548_cfr(0xa000);
CS2=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
write_2548_cfr(0xac00);
CS2=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void write_2548_cfr(unsigned int com_code1)//写配置字
{
unsigned char c_pp1;
CS2=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
for(c_pp1=0;c_pp1 <16;c_pp1++)
{
if(com_code1&0x8000==0x8000) SDI2=1;
else SDI2=0;
SCLK2=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
SCLK2=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
com_code1 < <=1;
}
CS2=1;
}
unsigned int read_2548_cfr(unsigned char com_code)//读配置
{
unsigned char c_pp1;
unsigned int c_pp2;
c_pp2=0;
CS2=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
for(c_pp1=0;c_pp1 <4;c_pp1++)
{
if(com_code&0x80==0x80) SDI2=1;
else SDI2=0;
SCLK2=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
SCLK2=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
com_code < <=1;
}
for(c_pp1=4;c_pp1 <16;c_pp1++)
{
SCLK2=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
if(SDO2==1) c_pp2=c_pp2|0x01;
c_pp2 < <=0x01;
SCLK2=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
}
/* for(c_pp1=4;c_pp1 <16;c_pp1++)
{
SCLK2=1;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
if(SDO2==1) c_pp2=c_pp2|0x01;
c_pp2 < <=0x01;
SCLK2=0;
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
} */
CS2=1;
return(c_pp2);
}
int ReadAD2(unsigned char chunnel)//chunnel:0---7对应1到8通道
{
AData=0;
CS=1;CS2=0;
delay2(5);
for(cLoop=0;cLoop <13;cLoop++){ //11
if(cLoop <4){
if((chunnel&0x80)==0){
SDI2=0;
}
else
{
SDI2=1;
}
chunnel < <=1;
}
SCLK2=1;
delay2(5);
bData=SDO2;
AData < <=1;
if(bData){
AData|=0x01;
}
SCLK2=0;
delay2(5);
}
AData> > =1;
CS2=1;
// SCLK2=0;
delay2(5);
return AData;
}