------------------读DS18B20的程序,从DS18B20中读出一个字节的数据
READ_1820:
MOV R2,#8
RE1:
CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE1
RET
程序中红色的部分应该是按照DS18B20的时序要求来读取数据的部分,在拉低DQ后接了3个NOP,延时为3us,SETB DQ 1us,mov R3,#7 1us,djnz R3,$执行7次共14us,也就是说在MCU拉低1 WIRE总线19us后才开始对总线执行采样,而DS18B20的DATASHEET中规定此周期必须在15us内完成,以上程序有误还是我对DS18B20的读写周期规定理解有误,望各位大大帮忙解释一二,万分感谢!