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

📄 ds18b20.asm

📁 高精度液晶显示温度计,C51,16*2LCD,DS18B20温度传感器
💻 ASM
字号:
;用P2.3口,在C51里这样调用:char Te=(char)read_tem(1)/16;
void dis_temperature()
{
	Te=(float)read_tem(1)/16;
	sprintf(buffer,"%05.2f'C",Te);
	lcd_moveto(20);
	lcd_strall(buffer);
	lcd_moveto(36);
}
;请多指教!!
NAME	READ_EXP;程序名
;	int read_tem(char a)
?PR?_read_tem?READ_EXP	SEGMENT	CODE;代码段
?DT?_read_tem?READ_EXP	SEGMENT	DATA;数据段
PUBLIC	_read_tem;公共符号
RSEG	?DT?_read_tem?READ_EXP;★可覆盖数据段
;?_read_tem?	:			;起始地址
a?00:	DS	1	;传递参数字节
RSEG	?PR?_read_tem?READ_EXP
_read_tem:
		NOP
		MOV a?00,R7
		ACALL RESET_PULSE
		ACALL	PRESENCE
		MOV	A,#0CCH
		ACALL WRITE_BYTE
		MOV A,#44H
		ACALL WRITE_BYTE
		JNB	P2.3,$
		ACALL RESET_PULSE
		ACALL PRESENCE
		MOV A,#0CCH
		ACALL WRITE_BYTE
		MOV A,#0BEH
		ACALL WRITE_BYTE
		ACALL READ_BYTE
		MOV R7,A			;LSB STORED IN R7
		ACALL READ_BYTE
		MOV R6,A			;MSB STORED IN R6
		ACALL RESET_PULSE
		ACALL PRESENCE
		RET
READ_BYTE:
		MOV R3,#8
READ1:
		CLR P2.3
		NOP
		NOP
		SETB P2.3
		NOP
		NOP
		NOP
		MOV R5,A
		MOV C,P2.3
		MOV A,R5
		MOV R2,#30
		DJNZ R2,$
		RRC A
		DJNZ R3,READ1
		RET
PRESENCE:
		JB P2.3,$
		JNB P2.3,$
		RET
RESET_PULSE:
		CLR P2.3
		MOV R2,#250
		DJNZ R2,$
		SETB P2.3
		MOV R2,#10
		DJNZ R2,$
		RET
WRITE_BYTE:
		MOV R3,#8
WRITE:
		RRC A
		JC WRITE1
		CLR P2.3
		MOV R2,#30
		DJNZ R2,$
		SETB P2.3
		NOP
		NOP
		NOP
		NOP
		DJNZ R3,WRITE
		RET
WRITE1:
		CLR P2.3
		NOP
		NOP
		NOP
		NOP
		SETB P2.3
		MOV R2,#30
		DJNZ R2,$
		DJNZ R3,WRITE
		RET
		END
		

⌨️ 快捷键说明

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