#include<wendu.h>
void Delay1ms(u8 y)
{
u8 x;
for( ; y>0; y--)
{
for(x=110; x>0; x--);
}
}
void delay1us(u8 i)
{
do{_nop_();}while(--i);
}
void delay25us(u8 i)
{
do{_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();}while(--i);
}
u8 ds18b20init()
{
DSPORT=0;
delay25us(25);
DSPORT=1;
delay25us(4);
if(!DSPORT)
return 1;
else
return 0;
}
void ds18b20write(u16 date)
{
u8 i;
for(i=0;i<=7;i++)
{
DSPORT=0;
delay1us(3);
DSPORT=DSPORT&0x01;
delay25us(2);
DSPORT=1;
date>>=1;
}
}
u16 ds18b20read()
{
u8 i;u16 date;
for(i=0;i<=7;i++)
{
DSPORT=0;
date>>=1;
DSPORT=1;
if(DSPORT)
date|=0x80;
delay25us(1);
DSPORT=1;
}
return date;
}
u16 ds18b20temp()
{
int temp = 0;
u16 tmh, tml;
delay1us(1);
ds18b20init();
ds18b20write(0xcc);
ds18b20write(0x44);
Delay1ms(1);
ds18b20init();
Delay1ms(1);
ds18b20write(0xcc);
ds18b20write(0xbe);
tml= ds18b20read();
tmh= ds18b20read();
temp = tmh;
temp <<= 8;
temp |= tml;
return temp;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1 0 0 2 9 2 5 0 9 4
一周热门 更多>