📄 ad7705.c
字号:
/*----------------AD7705------------------*/
void select7705(uchar partnumber)
{
switch(partnumber)
{
case 1:PA18155=PA18155&0xfd;break;
case 2:PA18155=PA18155&0xf7;break;
default:break;
}
}
void unselect7705(void)
{
PA18155=PA18155|0x0f;
}
void write_bit7705(uchar w_bit)
{
if(w_bit==0)
DIN7705=0;
else
DIN7705=1;
SCLK7705=0;
SCLK7705=1;
}
uchar read_bit7705(void)
{
uchar r_bit;
SCLK7705=0;
SCLK7705=1;
if(DOUT7705==0)
r_bit=0x00;
else
r_bit=0x80;
return(r_bit);
}
void write_part7705(uchar w_data)
{
uchar index;
uchar param;
SCLK7705=1;
for (index = 0; index<8; index++) /* Write out data */
{
param = w_data<<index;
param &= 0x80;
write_bit7705(param);
}
}
uchar read_part7705(void)
{
uchar index;
uchar r_data=0;
SCLK7705=1;
for (index = 0; index<8; index++) /* Write out data */
{
r_data |= read_bit7705()>>index;
}
return(r_data);
}
void wait7705(uchar channel)
{
do{
write_part7705(channel | 0x08);
}while(read_part7705()&0x80);
}
int ad7705(uchar partnumber,uchar channel)
{
uchar i,hi_data,lo_data;
uint all_data;
ulong total_data;
int sample_mv;
total_data=0;
select7705(partnumber);
wait7705(channel);
write_part7705(channel | 0x38);
hi_data=read_part7705();
lo_data=read_part7705();
for(i=0;i<8;i++)
{
dog();
wait7705(channel);
write_part7705(channel | 0x38);
hi_data=read_part7705();
lo_data=read_part7705();
all_data=hi_data;
all_data=(all_data<<8)|lo_data;
total_data=total_data+all_data;
}
sample_mv=(int)((total_data>>3)-32768);
unselect7705();
return(sample_mv);
}
void ad7705s(uchar mode,uchar partnumber,uchar channel)
{
uchar i;
uchar j;
dog();
select7705(partnumber);
write_part7705(channel | 0x20);
write_part7705(0x0c);
write_part7705(channel | 0x10);
write_part7705(mode);
wait7705(channel);
write_part7705(channel | 0x60);
j=(partnumber-1)*3+channel*3;
for(i=0;i<3;i++)
{
write_part7705(ad7705jzdata[j+i]);
}
unselect7705();
}
void ad7705z(uchar mode,uchar partnumber,uchar channel,uchar x,uchar y)
{
uchar i;
uchar j;
uchar m;
dog();
select7705(partnumber);
write_part7705(channel | 0x10);
write_part7705(mode);
wait7705(channel);
write_part7705(channel | 0x68);
for(i=0;i<3;i++)
{
m=read_part7705();
j=x+i*0x06;
showys(m,j,y,1);
}
unselect7705();
}
/*----------------AD7705------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -