51单片机数字温度计汇编程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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:

DJNZ R4,WR12

MOV DAT,C

MOV R4,#30

WR13:

DJNZ R4,WR13

DJNZ R3,WR11

SETB DAT

RET

;***读ds18b20的程序*********************************************************************

READ_1820:

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

DJNZ R6,RD11

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

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

MOV 5EH,#03H

MOV DPTR,#TAB

MOV R3,#100

S3: MOV R1,#20

S2: MOV R2,#08H

MOV R0,#63H

MOV R4,#4

SETB C

S1: MOV P2,R2

CJNE R4,#4,DLP3

CJNE @R0,#00H,DLP6

MOV A,#0FFH

LJMP DLP1

DLP3:CJNE R4,#3,DLP6

CJNE @R0,#00H,DLP6

MOV A,63H

CJNE A,#00H,DLP3

MOV A,#0FFH

LJMP DLP1

DLP6:MOV A,@R0

MOVC A,@A+DPTR

CJNE R4,#2,DLP1

ANL A,#7FH

相关文档
最新文档