⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 18b20hh.asm

📁 --- --- 下面是DS18B20测温实验源程序 --------- ORG 0000H START: MOV SP,#60H 开机初始化 MOV P0,#0FFH MOV P1
💻 ASM
字号:
;--------- 下面是DS18B20测温实验源程序 ---------
        ORG   0000H
START:  MOV   SP,#60H		;开机初始化
        MOV   P0,#0FFH
		MOV   P1,#0FFH
		MOV   P2,#0FFH
		MOV   P3,#0FFH

MAIN:   LCALL GET_TEMPER	;调用读温度子程序
		LCALL DISP			;调用数码管显示子程序
		AJMP  MAIN			;重复循环
;------ 读DS18B20传感器的温度值 ------
GET_TEMPER:
		SETB P3.7
		LCALL RET18B20	    ;复位
		JB 00H,DSS2
		RET
DSS2:   MOV A,#0CCH			;跳过ROM匹配
        LCALL WR18B20
		MOV A,#44H			;向DS18B20发出温度转换命令
		LCALL WR18B20
		LCALL RET18B20		;准备读温度前先复位DS18B20
		MOV A,#0CCH			;跳过ROM匹配
		LCALL WR18B20
		MOV A,#0BEH			;向DS18B20发出读温度命令
		LCALL WR18B20
		LCALL RE18B20		;读出温度数据
		RET
;------ DS18B20复位初始化程序 ------
RET18B20:
        SETB P3.7		
		NOP
		CLR P3.7
		MOV R0,#06BH		;主机发出复位低脉冲
		MOV R1,#03H
DSR1:	DJNZ R0,DSR1
		MOV R0,#6BH
		DJNZ R1,DSR1
		SETB P3.7			;拉高数据线
		NOP
		NOP
		NOP
		MOV R0,#25H
DSR2:   JNB P3.7,DSR3		 ;等待DS18B20回应
		DJNZ R0,DSR2
		LJMP DSR4
DSR3:   SETB 00H			  ;置标志位,表示DS1820存在
        LJMP DSR5
DSR4:   CLR 00H				  ;清标志位,表示DS1820不存在
		LJMP DSR7
DSR5:   MOV R0,#06BH
DSR6:   DJNZ R0,DSR6		   ;延时一段时间
DSR7:   SETB P3.7
		RET
;------ 写DS18B20的子程序 ------
WR18B20:
		MOV R2,#8
		CLR C
WR1:    CLR P3.7
        MOV R3,#6
		DJNZ R3,$
		RRC A
		MOV P3.7,C
		MOV R3,#23
		DJNZ R3,$
		SETB P3.7
		NOP
		DJNZ R2,WR1
		SETB P3.7
		RET
;------ 从DS18B20中读温度数据程序 ------
RE18B20:
        MOV R4,#2
		MOV R1,#2FH
RE00:   MOV R2,#8
RE01:   CLR C
        SETB P3.7
		NOP
		NOP
		CLR P3.7
		NOP
		NOP
		NOP
		SETB P3.7
		MOV R3,#09
RE10:	DJNZ R3,RE10
        MOV C,P3.7
		MOV R3,#23			
RE20:   DJNZ R3,RE20
        RRC A
		DJNZ R2,RE01
		MOV @R1,A
		DEC R1
		DJNZ R4,RE00
		RET
;-------- 显示子程序 --------
DISP:   MOV A,2FH
        MOV C,70H
		RRC A
		MOV C,71H
		RRC A
		MOV C,72H
		RRC A
		MOV C,73H
		RRC A
		MOV 2FH,A
		MOV A,2FH
		MOV B,#10
		DIV AB
		MOV 30H,A
		MOV 31H,B
		MOV A,30H
		MOV DPTR,#SGTB
		MOVC A,@A+DPTR	   
		MOV P2,A			;显示温度"十位"值
		MOV P0,#80H			
		LCALL YS4722U
		MOV A,31H
		MOV DPTR,#SGTB
		MOVC A,@A+DPTR		
		MOV P2,A			;显示温度"个位"值
		MOV P0,#01H
		LCALL YS4722U
		MOV A,#11000110B
		MOV P2,A			;显示温度符号"C"
		MOV P0,#02H
		LCALL YS4722U
		RET
;************* 8位共阳数码管显示器字型码表 *****************
SGTB:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
        DB 88H,83H,0C6H,0A1H,86H,8EH,89H,0A3H,8CH,0C8H
YS4722U:
		MOV R4,#10			;延时子程序
Y3:     MOV R5,#216
        DJNZ R5,$
		DJNZ R4,Y3
		RET

		END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -