⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1621.c

📁 CVAVR的函数库的源代码。开发AVR的编译器CodeVision AVR最新版本2.53的函数库c语言源代码。函数短小精悍
💻 C
字号:
/*
  Dallas Semiconductor DS1621 I2C bus
  thermometer/thermostat functions

  CodeVisionAVR C Compiler
  (C) 1998-2004 Pavel Haiduc, HP InfoTech S.R.L.
*/

union ds1621_temp {
                  unsigned char b[2];
                  int w;
                  };
                  
unsigned char ds1621_get_status(unsigned char chip)
{
unsigned char i2c_address,status;
i2c_address=0x90|(chip<<1);
i2c_start();
i2c_write(i2c_address);
i2c_write(0xac);
i2c_start();
i2c_write(++i2c_address);
status=i2c_read(0);
i2c_stop();
return status;
}

void ds1621_set_status(unsigned char chip,unsigned char status)
{
i2c_start();
i2c_write(0x90|(chip<<1));
i2c_write(0xac);
i2c_write(status);
i2c_stop();
}

void ds1621_set_temp(unsigned char chip,unsigned char cmd,char data)
{
i2c_start();
i2c_write(0x90|(chip<<1));
i2c_write(cmd);
i2c_write(data);
i2c_write(0);
i2c_stop();
while (ds1621_get_status(chip) & 0x10);
}

void ds1621_start(unsigned char chip)
{
i2c_start();
i2c_write(0x90|(chip<<1));
i2c_write(0xee);
i2c_stop();
}

void ds1621_stop(unsigned char chip)
{
i2c_start();
i2c_write(0x90|(chip<<1));
i2c_write(0x22);
i2c_stop();
}

void ds1621_init(unsigned char chip,signed char tlow,signed char thigh,
unsigned char pol)
{
//set configuration register
ds1621_set_status(chip,8+(pol<<1));
//set low temperature
ds1621_set_temp(chip,0xa2,tlow);
//set high temperature
ds1621_set_temp(chip,0xa1,thigh);
//start temperature conversions
ds1621_start(chip);
//while ((ds1621_get_status(chip) & 0x80)==0);
}

int ds1621_temperature_10(unsigned char chip)
{
union ds1621_temp tt;
unsigned char i2c_addr;
i2c_addr=0x90|(chip<<1);
i2c_start();
i2c_write(i2c_addr);
i2c_write(0xaa);
i2c_start();
i2c_write(++i2c_addr);
tt.b[1]=i2c_read(1);
tt.b[0]=i2c_read(0);
i2c_stop();
return (tt.w>>7)*5;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -