📄 drv_18b20.i
字号:
#line 1 "src\\drv_18b20.c"
#line 18 "src\\drv_18b20.c"
void delays(uint32 time)
{
uint32 i,j;
for(i=0;i<time;i++)
{
for(j=0;j<3;j++){;}
}
}
uint8 init_ds1820(void) {
IO0DIR=IO0DIR|0x00020000;
IO0CLR|=0x00020000;
delays(1200);
IO0SET|=0x00020000;
IO0DIR=IO0DIR&0xfffdffff;
delays(240);
if(IO0PIN&0x00020000>1)
{
return 0;
}
else
{
IO0DIR=IO0DIR|0x00020000;
IO0SET|=0x00020000;
delays(950);
return 1;
}
}
void write_ds1820(uint8 data)
{
uint8 i;
IO0DIR=IO0DIR|0x00020000;
for(i=0;i<8;i++)
{
if(data & 0x01) {
IO0CLR|=0x00020000;
delays(18);
IO0SET|=0x00020000;
delays(133);
}
else
{
IO0CLR|=0x00020000;
delays(133);
IO0SET|=0x00020000;
delays(18);
}
data = data>>1;
}
}
uint8 read_bit_ds1820(void){
uint8 data;
IO0DIR=IO0DIR|0x00020000;
IO0CLR|=0x00020000;
delays(1);
IO0SET|=0x00020000;
delays(2);
IO0DIR=IO0DIR&0xfffdffff;
data =((IO0PIN&0x00020000)>>17);
delays(140);
return data;
}
uint8 read_byte_ds1820(void){
uint8 i,datak;
datak = 0;
for(i=0;i<8;i++){
datak = datak >> 1;
if(read_bit_ds1820()) datak |= 0x80;
}
return datak;
}
void covert_ds1820(void)
{
write_ds1820(0xCC);
write_ds1820(0x44);
}
uint8 read_tem_ds1820(void)
{
uint8 Height,Low;
uint16 Temp;
uint8 wendu=0;
write_ds1820(0xCC);
write_ds1820(0xBE);
Low = read_byte_ds1820();
Height = read_byte_ds1820();
Temp = (Height << 8) + Low;
wendu=(uint8)(Temp>>4) ;
return wendu;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -