unsigned char IICreceiveByte(void)
{
unsigned char idata n=8; // 从SDA线上读取一上数据字节,共八位
unsigned char tdata;
while(n--)
{
SDA = 1;
SCL = 1;
tdata = tdata<<1; // 左移一位,或_crol_(temp,1)
if(SDA == 1)
tdata = tdata|0x01; // 若接收到的位为1,则数据的最后一位置1
else
tdata = tdata&0xfe; // 否则数据的最后一位置0
SCL=0;
}
return(tdata);
}
//--------------------------------------------------------------------------------------------------
// 函数名称:setting_ADS100
// 用户调用自程序
// 函数功能: 设置配置寄存器
//--------------------------------------------------------------------------------------------------
void setting_ADS100(unsigned char setting_data) //写器件地址和配置字
{
iic_start(); //开始写
IICSendByte(WRITE_ADD); //写器件地址(写)
check_ACK(); // 检查应答位
if(F0 == 1)
{
SystemError = 1;
return; // 若非应答表明器件错误或已坏,置错误标志位SystemError
}
IICSendByte(setting_data);
check_ACK(); // 检查应答位
if (F0 == 1)
{
SystemError=1;
return; // 若非应答表明器件错误或已坏,置错误标志位SystemError
}
iic_stop(); // 全部发完则停止
}
//--------------------------------------------------------------------------------------------------
// 函数名称:READ_ADS100
// 用户调用自程序
// 函数功能: 读A/D转换结果
//--------------------------------------------------------------------------------------------------
void READ_ADS100(void) //从ADS1100中读出数据
{
iic_start();
IICSendByte(READ_ADD);
check_ACK();
if(F0 == 1)
{
SystemError = 1;
return;
}
H_AD=IICreceiveByte();
slave_ACK(); // 收到一个字节后发送一个应答位
L_AD=IICreceiveByte();
slave_NOACK(); // 收到最后一个字节后发送一个非应答位
iic_stop();
}
//--------------------------------------------------------------------------------------------------
// 函数名称:main
// 用户主函数
// 函数功能:主函数
//--------------------------------------------------------------------------------------------------
void main()
{
setting_ADS100(CFG_setting);
READ_ADS100();
}
AD转换器ADS11XX驱动程序
上一页 [1] [2]
本文关键字:转换器 程序 51单片机,单片机-工控设备 - 51单片机