1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
#include "reg52.h"
sbit DQ = P1^4;
void Delay_OneWire(unsigned int t) { while(t--); }
void Write_DS18B20(unsigned char dat) { unsigned char i; for(i=0;i<8;i++) { DQ = 0; DQ = dat&0x01; Delay_OneWire(5); DQ = 1; dat >>= 1; } Delay_OneWire(5); }
unsigned char Read_DS18B20(void) { unsigned char i; unsigned char dat; for(i=0;i<8;i++) { DQ = 0; dat >>= 1; DQ = 1; if(DQ) { dat |= 0x80; } Delay_OneWire(5); } return dat; }
bit init_ds18b20(void) { bit initflag = 0; DQ = 1; Delay_OneWire(60); DQ = 0; Delay_OneWire(480); DQ = 1; Delay_OneWire(120); initflag = DQ; Delay_OneWire(5); return initflag; }
|