📄 ad7887.c
字号:
sbit adc_cs = P3^7;
sbit adc_sclk = P3^2;
sbit adc_dout = P3^3;
sbit adc_din = P3^4;
uint ad7887_tmp;
void ad7887_poweron(void);
void ad7887_readdata(void);
void ad7887_readdata(void)
{
// 31
//sbit adc_cs = P3^7;
//sbit adc_sclk = P3^2;
//sbit adc_dout = P3^3;
//sbit adc_din = P3^4;
adc_cs =1;
adc_sclk = 1;
adc_din =1;
adc_dout = 1;
adc_cs = 0;
//adc_sclk = 0;
//while(1)
//{
//wait(60);
ad7887_tmp = 0;
adc_cs = 0;
//0 msb
//adc_din = 1; //7 nc one or two
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//1
//adc_din = 0; //6 zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//2
//adc_din = 1; //5 zero no ref one ref
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//3
//adc_din = 1; //4 single/dual select
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//4
//adc_din = 0; //3 channel select
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
wait(2);
//5
//adc_din = 0; //2 zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//6
//adc_din = 1; //1 PM1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//7
//adc_din = 0; //0 PM0
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//8 msb
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//9
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//10
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//11
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//12
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//13
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//14
//adc_din = 0;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
//15
//adc_din = 1;
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
if(adc_dout){ad7887_tmp = ad7887_tmp+1;ad7887_tmp=ad7887_tmp<<1;}else{ad7887_tmp=ad7887_tmp<<1;}
//wait(2);
adc_cs = 1;
wait(4);
adr_data=ad7887_tmp&0x0FFF;
ad7887_tmp = 0;
}
/////
void ad7887_poweron(void)
{
//while(1)
//{
wait(60);
//x=0xaa;//ad_command;
ad7887_tmp = 0;
adc_cs = 0;
//0 msb
adc_din = 1; //7 NC
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//1
adc_din = 0; //6 zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//2
adc_din = 1; //5 0 ref, 1 no ref
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//3
adc_din = 1; //4 single/dual select 1 dual ,0 single
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//4
adc_din = 0; //3 channel select o ain0, 1 ain1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//5
adc_din = 0; //2 zero
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//6
adc_din = 1; //1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//7
adc_din = 1; //0
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//8 two word msb
adc_din = 1; //7
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//9
adc_din = 0; //6
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//10
adc_din = 1; //5
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//11
adc_din = 1; //4
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//12
adc_din = 0; //3
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//13
adc_din = 0; //2
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//14
adc_din = 0; //1
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
//15
adc_din = 1; //0
wait(2);
adc_sclk = 0;
wait(4);
adc_sclk = 1;
wait(2);
adc_cs= 1;
// }
}
/// wait(4) ===125KHZ
void wait(uint tmp)
{uint i;
for(i=0;i<tmp;i++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -