📄 ac7705.txt
字号:
#include <reg51.h>
#include <absacc.h>
sbit adc_clk=P1^0;
sbit adc_din=P1^1;
sbit adc_dout=P1^5;
sbit adc_ready=P1^6;
unsigned int temp;
unsigned int byte16bit ;
void delay(unsigned char j)
{
while(j--);
}
unsigned int writeto_adc (unsigned int kongzhizi)
{
unsigned char byte8,token,i;
adc_clk=1;
//adc_cs=0;//开始;
token=0x80;
byte8=kongzhizi;
for (i=0;i<8;i++)
{
//adc_clk=1;
adc_clk=0;
// adc_clk=0;
adc_clk=0;
if (byte8&token)
adc_din=1;
else adc_din=0;
adc_clk=1;adc_clk=0;adc_clk=1;//adc_clk=0;
token=token>>1;
}
adc_clk=1;
adc_din=1;//结束;
return(1);
}
void chushihua(void)
{
unsigned char i;
adc_clk=1;
adc_din=1;
for(i=0;i<40;i++)
{
adc_clk=0;
adc_clk=1;
}//// 防止接口迷失,通信寄存器返回到等待写状态
writeto_adc(0x20);//通道1 , 下一个写时钟寄存
writeto_adc(0x13);// 写时钟寄存器设置更新速率为200Hz
writeto_adc(0x10);// 通道1 , 下一个写设置寄存器
writeto_adc(0x44);// 写设置寄存器,设置成单极性、无缓冲、增益为1 、滤波器工作、自校准
delay(100);// 延时
}
unsigned int readfrom_adc(unsigned char channel)
{
unsigned char i;
writeto_adc(0x00);
writeto_adc(0x38|channel);// 设置读当前通道数据
while(adc_ready==1);
adc_clk=1;
//adc_cs=0;
byte16bit=0x00;
for(i=0;i<16;i++)
{
adc_clk=0;
if (adc_dout==1)
{byte16bit=byte16bit|0x01;} // /// 读取数据位
byte16bit=byte16bit<<1;
adc_clk=1;
}
adc_clk=1;
adc_din=1;
return(byte16bit);
}
void main()
{
chushihua();
temp=readfrom_adc(0x00);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -