ds18b20单总线通信
来源:互联网 发布:linux u盘安装windows 编辑:程序博客网 时间:2024/05/22 14:01
延时函数
void delay_us(unsigned char t)
{
while(--t);
}
全局变量
bit ack;
sbit ds = P?;
ds_reset
void ds_reset()
{
ds = 1;
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(0 == ds)
{
ack = 1;
}
else
{
ack = 0;
}
delay_us(200);
delay_us(100);
}
{
ds = 1;
ds = 0;
delay_us(200);
delay_us(200);
ds = 1;
delay_us(30);
if(0 == ds)
{
ack = 1;
}
else
{
ack = 0;
}
delay_us(200);
delay_us(100);
}
从ds18b20接收一位
bit ds_read_bit()
{
bit tmp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
tmp = ds;
delay_us(30);
return tmp;
}
{
bit tmp;
ds = 1;
ds = 0;
_nop_();
_nop_();
ds = 1;
tmp = ds;
delay_us(30);
return tmp;
}
从ds18b20接收一字节
unsigned char ds_read_byte()
{
unsigned char i,j,k;
for(i = 0; i < 8; i++)
{
j = ds_read_bit();
k = (j << 7)|(k >> 1);
}
return k;
}
{
unsigned char i,j,k;
for(i = 0; i < 8; i++)
{
j = ds_read_bit();
k = (j << 7)|(k >> 1);
}
return k;
}
向ds18b20发送一个字节
void ds_send_byte(unsigned char byte)
{
unsigned char i;
for(i = 0; i < 8; i++)
{
ds = 0;
_nop_();
_nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
ds = 1;
}
delay_us(30);
}
{
unsigned char i;
for(i = 0; i < 8; i++)
{
ds = 0;
_nop_();
_nop_();
ds = byte & 0x01;
byte >>= 1;
delay_us(30);
ds = 1;
}
delay_us(30);
}
0 0
- ds18b20单总线通信
- 单总线数字温度传感器DS18B20
- 单总线器件DS18B20温度传感器
- DS18B20单总线温度传感器驱动程序
- C51单总线操作,读取温度DS18B20
- 单总线协议-以DS18B20举例
- 完美实现STM32单总线挂多个DS18B20
- DS18B20单总线策略的分析
- DS18B20-Onewire Bus-单总线 单片机读取温度
- 1-wire单总线浅谈之(二)--温度传感器DS18B20
- 单片机控制单总线协议DS18B20之模块编程(持续更新中)
- 基于proteus的51单片机仿真实例六十七、单总线温度传感器DS18B20读写实例
- DS18B20 单总线多器件的ROM 搜索, ALARM 检测, CRC 校验 源码实现, 基于 STM32F103
- 1-Wire总线-DS18B20及其驱动程序编写
- ds18b20
- DS18B20
- DS18B20
- DS18B20
- List of word processors
- hdu 2199 二分法求方程的根
- hibernate性能调优
- 接口和抽象类有什么区别
- 二十六、oracle pl/sql 分页
- ds18b20单总线通信
- 集成Cocoapods
- C - Little Pony and Expected Maximum
- LeetCode进阶之路(Minimum Path Sum)
- 设计模式之代理模式,装饰模式和继承
- 详解Androguard静态分析APK方法
- 二十七、oracle 例外
- jQuery继承extend用法
- JS抽签程序