最近用18B20做了个温度测试,单片机控制,

来源:百度知道 编辑:UC知道 时间:2024/07/02 05:59:52
但程序就是在温度输出上出错,温度越高,还越降低温度。请高手指点一二。这个我温度的数据输出到底怎么写?急求
最好是C语言程序,因为本人只懂C语言

ORG 0000H ;DS18B20.ASM
TEMPER_L EQU 41H ;用于保存读出温度的低8位
TEMPER_H EQU 40H ;用于保存读出温度的高8位
FLAG1 EQU 38H ;是否检测到DS18B20标志位
A_BIT1 EQU 31H ;数码管个位数存放内存位置
B_BIT1 EQU 32H ;数码管十位数存放内存位置
D_BIT1 EQU 35H ;数码管百位数存放内存位置
DQ EQU P3.2 ;30H,31H,32H,33H: X 个位 十位 X
MOD7: MOV SP,#60H
LCALL GET_TEMPER ;调用读温度子程序
LCALL TEMPCOV
LCALL DISPLAY ;调用数码管显示子程序
AJMP MOD7
TEMP0: INC A
AJMP TEMP1
TEMPCOV:MOV A,TEMPER_L ;数据处理子程序TEMPCOV
MOV B,#16
DIV AB
JB B.3,TEMP0
TEMP1: MOV 34H,A ;将TEMPER_L的高四位右移四位,存入34H中(温度值)
MOV A,B ;将TEMPER_L的低四位X10/16得小数后一位数.
MOV B,#10
MUL AB
MOV B,#16
DIV AB
MOV 30H,A ;将小数后一位数.存入30H中
MOV A,TEMPER_H ;TEMPER_H中存放高8位数,权重16
MOV B,#16
MUL AB
ADD A,34H ;34H中存入温度值的整数部分
MOV B,#10
DIV AB
MOV 31H,B ;个位存入31H中
MOV B,#10 ;
DIV AB ;
MOV 32H,B ;十位存入32H中
MOV B,#10 ;
DIV AB ;