新闻中心

EEPW首页>嵌入式系统>设计应用> DS18B20读取温度并显示-汇编程序

DS18B20读取温度并显示-汇编程序

作者: 时间:2012-10-31 来源:网络 收藏

//输出转换温度命令
CONVERT_TEMPERATURE:
LCALL DS18_START //调用初始化子程序
MOV A,#0CCH //跳跃ROM指令
LCALL DS18_SEND
MOV A,#44H //温度转换
LCALL DS18_SEND
RET
//读?温度数据
GET_TEMPERATURE:
LCALL DS18_START //调用初始化子程序
MOV A,#0CCH //跳跃ROM指令
LCALL DS18_SEND
MOV A,#0BEH //从RAM中的数据
LCALL DS18_SEND
LCALL DELAY60US
LCALL DS18_READ
MOV TEMPL,A //将获得数据的低八位存到TEMPL
LCALL DS18_READ
MOV TEMPH,A //将获得数据的高八位存到TEMPH
CLR DS18DQ //即复位。否则会一直读到
LCALL DELAY501US //暂存第九字节
RET
//计算获得温度值,便于现实
CAL_TEMPERATURE:
PUSH 07H //暂存,防止改变R7的数据
CLR C //进位标志清零
MOV R7,#04H //循环次数

EX2: MOV A,TEMPH // 这些语句的作用是:
RRC A // 整数位在:TEMPL中
MOV TEMPH,A //?数位在:TEMPH中的高半
MOV A,TEMPL
RRC A
MOV TEMPL,A
DJNZ R7,EX2 //

MOV A,TEMPH //
RLC A //这些语句的作用是:
RLC A //把TEMPH得高半移到低四位中
RLC A
RLC A //
ANL A,#0FH //屏蔽高四位,保留低四位
MOV DPTR,#TAB_TEMP //赋带?数点的数值表的表首地址
MOVC A,@A+DPTR
MOV 30H,A //暂存该值,用于
MOV A,TEMPL
CLR C
MOV B,#0AH
DIV AB //分离整数位的高低四位
MOV 32H,A //暂存十位
MOV A,B
ADD A,#10H
MOV 31H,A //暂存个位
POP 07H //恢复R7的值
RET
//写数据子程序
DS18_SEND:
PUSH 06H //保护Rn的值
PUSH 07H
//以下语句是"写 笔毙虻脑?
SETB DS18DQ //写时序是有DS18DQ的下降沿决定
NOP //延时1us
MOV R6,#08H //循环次数,一个字节
DS18_SEND1:
CLR DS18DQ //拉低,产生下降沿
MOV R7,#07 //延时大约15us
DJNZ R7,$
RRC A //把要写入得数据的高位移到C中
MOV DS18DQ,C //再把C的值赋给DS18DQ
MOV R7,#30 //延时时间约为60us,只要大约45us即可
DJNZ R7,$
SETB DS18DQ //拉高准备,下次产生下降沿
DJNZ R6,DS18_SEND1 //判断循环次数够了没
POP 07H //恢复Rn的数据
POP 06H
RET
篇幅太大完整程序请从这里下载:http://www.51hei.com/ziliao/file/ds182051hei.asm

本程序已经测试成功。

蜂鸣器相关文章:蜂鸣器原理

上一页 1 2 下一页

关键词:DS18B20读取温度显示汇编程序

评论


相关推荐

技术专区

关闭