单片机数字温度计汇编程序
- 格式:doc
- 大小:21.50 KB
- 文档页数:9
ORG 0000H
LJMP MAIN
ORG 0100H
;*********************************************
DAT BIT P1.0
TEMPER_L EQU 40H
TEMPER_H EQU 41H
A_BIT EQU 60H
B_BIT EQU 61H
C_BIT EQU 62H
D_BIT EQU 63H
;***主程序****************************************
MAIN:
MOV A,#7FH
LCALL WRITE_1820
LCALL INIT_1820
LCALL GET_TEMPER
LCALL CONVER
LCALL DISPLAY
LJMP MAIN
;***初始化db18b20**************************************************** INIT_1820:
CLR EA
INI10:
SETB DAT
MOV R2,#200
INI11:
CLR DAT
DJNZ R2,INI11
SETB DAT
MOV R2,#30
INT12:
DJNZ R2,INT12
CLR C
ORL C,DAT
JC INI10
MOV R6,#80
INI13:
ORL C,DAT
JC INI14
DJNZ R6,INI13
SJMP INI10
INI14:
MOV R2,#240
INT15:
DJNZ R2,INT15
RET
;**读温度子程序********************************************************* GET_TEMPER:
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
SETB DAT
LCALL DISPLAY
LCALL INIT_1820
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_1820
MOV TEMPER_L,A
LCALL READ_1820
MOV TEMPER_H,A
RET
;***写ds18b20的程序*********************************************************** WRITE_1820:
CLR EA
MOV R3,#8
WR11:
SETB DAT
MOV R4,#8
RRC A
CLR DAT
WR12:
MOV DAT,C
MOV R4,#30
WR13:
DJNZ R4,WR13
DJNZ R3,WR11
SETB DAT
RET
;***读ds18b20的程序*********************************************************************
READ_1820:
CLR EA
MOV R6,#8
RD11:
CLR DAT
MOV R4,#8
NOP
SETB DAT
RD12:
DJNZ R4,RD12
MOV C,DAT
RRC A
MOV R5,#30
RD13:
DJNZ R5,RD13
SETB DAT
RET
;***计算温度子程序************************************************ CONVER:
MOV A,#0F0H
ANL A,TEMPER_H
MOV 64H,A
JZ UNSIGN
DEC TEMPER_L
MOV A,TEMPER_H
CPL A
MOV TEMPER_H,A
MOV A,TEMPER_L
CPL A
MOV TEMPER_L,A
UNSIGN:
MOV A,#0FH
ANL A,TEMPER_L
MOV B,#10
MUL AB
MOV B,#16
DIV AB
MOV A_BIT,A
MOV A,#0F0H
ANL A,TEMPER_L
SWAP A
MOV B,A
MOV A,#0FH
ANL A,TEMPER_H
SWAP A
ADD A,B
MOV 32H,A
BCD:
MOV B,#100
DIV AB
MOV 30H,A
MOV D_BIT,A
MOV A,#10
XCH A,B
DIV AB
MOV C_BIT,A
MOV B_BIT,B
SWAP A
ADD A,B
MOV 31H,A
RET
;****显示温度子程序*********************************************************** DISPLAY:
MOV 5FH,#00H