; ***************************************** ;温度总子程序 ; ***************************************** wendu: ACALL INIT_1820 ACALL RE_CONFIG ACALL GET_TEMPER ACALL TEMPER_COV RET ; ***************************************** ;DS18B20初始化程序 ; ***************************************** INIT_1820: SETB P2.0 NOP CLR P2.0 MOV R0,#06BH MOV R1,#03H TSR1: DJNZ R0,TSR1 ; 延时 MOV R0,#6BH DJNZ R1,TSR1 SETB P2.0 NOP NOP NOP MOV R0,#25H TSR2: JNB P2.0,TSR3 DJNZ R0,TSR2 LJMP TSR4 ; 延时 TSR3: SETB 20H.1 ; 置标志位,表示DS1820存在 LJMP TSR5 TSR4: CLR 20H.1 ; 清标志位,表示DS1820不存在 LJMP TSR7 TSR5: MOV R0,#06BH MOV R1,#03H TSR6:DJNZ R0,TSR6 ; 延时 MOV R0,#6BH DJNZ R1,TSR6 TSR7:SETB P2.0 RET ; ***************************************** ; 重新写DS18B20暂存存储器设定值 ; ***************************************** RE_CONFIG:JB 20H.1,RE_CONFIG1 ; 若DS18B20存在,转RE_CONFIG1 RET RE_CONFIG1: MOV A,#0CCH ; 发SKIP ROM命令 LCALL WRITE_1820 MOV A,#4EH ; 发写暂存存储器命令 LCALL WRITE_1820 MOV A,#00H ; TH(报警上限)中写入00H LCALL WRITE_1820 MOV A,#00H ; TL(报警下限)中写入00H LCALL WRITE_1820 MOV A,#1FH ; 选择9位温度分辨率 LCALL WRITE_1820 RET ; ***************************************** ; 读出转换后的温度值 ; ***************************************** GET_TEMPER: SETB P2.0 ; 定时入口 LCALL INIT_1820 &n
首页 上一页 3 4 5 6 7 8 下一页 尾页 6/8/8
WORD格式全文下载链接(充值:元)