新闻中心

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

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

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

*
程序效果:通过值,对应的温度值
程序重在理解时序,及延时时间
*/

DS18DQ EQU P1.3 //P1.3与DS18DQ等同,便于理解
SPEAKER EQU P2.0 //驱动蜂鸣器
TEMPH EQU 29H //保存读出温度的低8位
TEMPL EQU 28H //保存读出温度的高8位
DS18FLAG EQU 40H //设置标志
ORG 0000H
LJMP START
ORG 0030H
START: MOV 30H,#00 //设置初始值
MOV 31H,#00
MOV 32H,#00
START1: LCALL DS18_GF //设置的工作方式
LCALL CONVERT_TEMPERATURE //输出转换温度命令
LCALL DELAY750MS //延时750ms
LCALL GET_TEMPERATURE //获?温度数据
LCALL CAL_TEMPERATURE //计算温度数值
LCALL DISPLAY //调用,防止掉显
LJMP START1 //无限循环
//初始化子程序
DS18_START:
PUSH 07H //保存R7的值,防止改变R7的数值
SETB DS18DQ //将数据线拉高
NOP //延时1us
CLR DS18DQ //将数据线拉低
MOV R7,#0 //延时大约512us
DJNZ R7,$
SETB DS18DQ //将数据线拉高
MOV R7,#40
DS18_START1: //延时大约160us
JNB DS18DQ,DS18_START2 //检查是否工作正常
DJNZ R7,DS18_START1
SETB DS18FLAG //工作不正常
CLR SPEAKER //驱动蜂鸣器,报警
DS18_START2:
CLR DS18FLAG
MOV R7,#100 //延时月200us
DJNZ R7,$
POP 07H //恢复R7的值
RET
//设置DS18B20工作方式
DS18_GF:CLR DS18FLAG //清除标志
LCALL DS18_START //调用初始化子程序
MOV A,#0CCH //跳跃ROM指令
LCALL DS18_SEND //
MOV A,#4EH //向RAM写数据
LCALL DS18_SEND
MOV A,#75
LCALL DS18_SEND
MOV A,#0
LCALL DS18_SEND
MOV A,#7FH //设置工作方式
LCALL DS18_SEND
CLR DS18DQ //释放总线
LCALL DELAY500US //延时500us
LOOP: LCALL CONVERT_TEMPERATURE //调用转子程序
MOV R5,#80
LOOP1: LCALL DISPLAY //调用防止掉显,同时等待转换完成
DJNZ R5,LOOP1
LCALL GET_TEMPERATURE //获?转换值
LCALL CAL_TEMPERATURE //计算温度值
LJMP LOOP
RET

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

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭