📄 ads1110.c
字号:
//时间:2003年9月14日
#include <reg52.h>
#include <intrins.h>
//void sent(unsigned char);
//void cominitial(void);
sbit SDA=P2^4; /*I2C的SDA线定义*/
sbit SCL=P2^5; /*I2C的SCL线定义*/
unsigned char idata H_AD,L_AD;
//发起始位
void start(void)
{
SDA=1;
SCL=1;
SDA=0;
SCL=0;
}
//发停止位
void stop(void)
{
SDA=0;
SCL=1;
SDA=1;
SCL=0;
}
//发非应答位
void mnack(void)
{
SDA=1;
SCL=1;
SDA=0;
SCL=0;
}
//发应答位
void mack(void)
{
SDA=0;
SCL=1;
SCL=0;
SDA=1;
}
//应答位测试
bit cack(void)
{
bit samp;
samp=0;
SDA=1;
SCL=1;
samp=SDA;
SCL=0;
return (samp);
}
//发一字节数据
void wrbyte(unsigned char w_data)
{
unsigned char i,buf;
for (i=0;i<8;i++)
{
buf=0x80&w_data;
w_data=_crol_(w_data,1);
if (buf==0x80) /*发送位为1*/
{
SDA=1;
}
SCL=1;
SCL=0;
SDA=0;
}
}
//收一字节数据
unsigned char rdbyte(void)
{
unsigned char buf1,i;
bit temp;
buf1=0;
for (i=0;i<8;i++)
{
SDA=1;
SCL=1;
temp=SDA;
if (temp==1) /*接收位是1*/
{
buf1=0x80|buf1;
buf1=_crol_(buf1,1);
}
else /*接收位是0*/
{
buf1=0x7f&buf1;
buf1=_crol_(buf1,1);
}
SCL=0;
}
return (buf1);
}
//读取AD转换值
void ReadADC(void)
{
unsigned char i;
// unsigned int adcnumber;
i=20;
start(); /*发起始位*/
do{
wrbyte(0x91);//ED0的读地址
i--;
} while (cack()==1 && i>0);
H_AD=rdbyte();
mack(); //发应答位
L_AD=rdbyte();
mnack();//发非应答位
stop();
// adcnumber=temp1*256+temp2;
// return adcnumber;
}
//设置ADS1100
void SetADC(unsigned char writedata)
{
unsigned char i;
// unsigned int adcnumber;
i=20;
start(); /*发起始位*/
do{
wrbyte(0x90);
i--;
} while (cack()==1 && i>0);
i=20;
do{
wrbyte(writedata);
} while (cack()==1 && i>0);
stop();
}
/*void main()
{
unsigned int temp_main;
cominitial();
SetADC(0x84);//0x84 14bit;0x8c 16bit;
while(1)
{
temp_main=ReadADC();
sent(temp_main);
sent(temp_main>>8);
//Delay(10);
}
} */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -