小弟最近在用
DS18B20,不知怎的,每次温度转换都不成功,网上好多资料都千篇一律,实在没法,希望哪位前辈指点一二,谢谢!下面是源程序: #include #include #include sbit DQ=P0^0; bit flag; unsigned char *a=0x81; unsigned char *b=0x82; //---------------------------------------------------------------// void delay(int cnt) // delay 16*cnt+24us { int i; for(i=0;i>i; temp=temp&0x01; write_bit(temp); } delay(5); } //---------------------------------------------------------------------------// void Init18b20 (void) { DQ=bus_reset(); if(DQ==0) flag = 1; //detect 1820 success! else flag = 0; //detect 1820 fail! delay(20); //20 _nop_(); _nop_(); DQ = 1; } //----------------------------------------------------------------------------// /*读取温度*/ void ReadTemperature(void) { Init18b20(); write_byte(0xCC); /* 跳过读序号列号的操作*/ write_byte(0x44); /* 启动温度转换*/ Init18b20(); write_byte(0xCC); /*跳过读序号列号的操作*/ write_byte(0xBE); /*读取温度寄存器等(共可读9个寄存器) 前两个就是温度*/ *a=read_byte(); *b=read_byte(); } main() { *a=0x00; *b=0x00; ReadTemperature(); while(1); }
var reload=1;