STC12C5A60S2单片机的DS18B20的C程序
最近在搞18B20,发现其对CPU的不兼容性很高,由于其对时间信号的敏感引起的
由于STC单片机的速度比8051速度快,属于1个时钟/机器周期高速单片机。速度快当然是它的优点,但对于要移植传统的8051程序而言,需要修改时序来实现某功能.
以下程序是ds18b20简单的驱动程序,其实是在网上Down的,经本人稍作修改之后,在STC12C5A60S2中调试通过的,最后读温度返回一个unsigned int,低12位就是温度数据。在主程序里进行运算即可得到实际温度值。呵呵~~
void delay_18B20(unsigned int i)
{
while(i--);
}
void Init_DS18B20(void)
{
unsigned char x=0;
DQ = 1;
delay_18B20(80); //稍做延时
DQ = 0;
delay_18B20(800); //精确延时 大于 480us
DQ = 1;
delay_18B20(140);
x=DQ;
}
unsigned char ReadOneChar(void)
{
uchar i=0;
uchar dat = 0;
for (i=8;i>0;i--)
{
}
}
void WriteOneChar(uchar dat)
{
}
}
unsigned int ReadTemp(void)
{
unsigned char a=0;
unsigned char b=0;
unsigned int temp_value=0;
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0x44);
delay_18B20(1000);
Init_DS18B20();
WriteOneChar(0xCC);
WriteOneChar(0xBE);
delay_18B20(1000);
a=ReadOneChar();
b=ReadOneChar();
temp_value = b<8;
temp_value |= a;
return temp_value;
}
STC12C5A60S2单片机DS18B2 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)