基于DS18B20的温控系统,智能仪器设计实习
读时序
3个子程序:INIT为初始化子程序,WRITE为写(命令或数据)子程序,READ为读数据子程序,所有的数据读写均由最低位开始。 INI11:CLRDAT
DJNZR2,INI11;主机发复位脉冲持续3μs×200=600μs SETBDAT;主机释放总线,口线改为输入 MOVR2,#30
IN12:DJNZR2,INI12;DS18B20等待2μs×30=60μs CLRC
ORLC,DAT;DS18B20数据线变低(存在脉冲)吗? JCINI10;DS18B20未准备好,重新初始化 MOVR6,#80 INI13:ORLC,DAT
JCINI14;DS18B20数据线变高,初始化成功
DJNZR6,INI13;数据线低电平可持续3μs×80=240μs SJMPINI10;初始化失败,重来 INI14:MOVR2,#240
IN15:DJNZR2,INI15;DS18B20应答最少2μs×240=480μs RET
;------------------------ WRITE:CLREA
MOVR3,#8;循环8次,写一个字节 WR11:SETBDAT MOVR4,#8
RRCA;写入位从A中移到CY CLRDAT
WR12:DJNZR4,WR12 ;等待16μs
MOVDAT,C;命令字按位依次送给DS18B20 MOVR4,#20