📄 ds1820.asm
字号:
ORG 0000H
TEMPER_L EQU 36H
TEMPER_H EQU 35H
TEMPER_N EQU 40H
FLAG BIT 00H
DQ BIT P3.2
ajmp start
org 0100h
START: MOV SP,#60H
LCALL GET_T
LCALL T_COV
mov p1,40h
mov a,40h
lcall disp
LJMP START
;*************************************
GET_T: SETB DQ
A1 : LCALL INIT_1820
JB FLAG,A2
LJMP A1
A2 : LCALL DELAY1
MOV A,#0CCH
LCALL WR_1820
MOV A,#44H
LCALL WR_1820
NOP
LCALL DELAY
LCALL DELAY
B1: LCALL INIT_1820
JB FLAG,B2
LJMP B1
B2: LCALL DELAY1
MOV A,#0CCH
LCALL WR_1820
MOV A,#0BEH
LCALL WR_1820
LCALL RD_1821
RET
;***************************************
RD_1820:MOV R2,#8H
RD1: CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7H
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RD1
RET
;***********************************
WR_1820:MOV R2,#8H
CLR C
WR1: CLR DQ
MOV R3,#3H
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#12
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
;************************************
RD_1821:MOV R4,#2H
MOV R1,#36H
RD2 :MOV R2,#8H
RD3 :CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#3
DJNZ R3,$
MOV C,DQ
MOV R3,#12
DJNZ R3,$
RRC A
DJNZ R2,RD3
MOV @R1,A
DEC R1
DJNZ R4,RD2
RET
;***************************************
T_COV: MOV A,#0F0H
ANL A,TEMPER_L
SWAP A
MOV TEMPER_N,A
MOV A,TEMPER_L
JNB ACC.3,T_COV1
INC TEMPER_N
T_COV1: MOV A,TEMPER_H
ANL A,#07H
SWAP A
ORL A,TEMPER_N
MOV TEMPER_N ,A
LCALL TO_BCD
RET
;*************************************
TO_BCD: MOV DPTR,#TAB
MOV A,TEMPER_N
MOVC A,@A+DPTR
MOV TEMPER_N,A
RET
TAB: DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
DB 10H,11H,12H,13H,14H,15H,16H,17H,18H,19H
DB 20H,21H,22H,23H,24H,25H,26H,27H,28H,29H
DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H
DB 40H,41H,42H,43H,44H,45H,46H,47H,48H,49H
DB 50H,51H,52H,53H,54H,55H,56H,57H,58H,59H
DB 60H,61H,62H,63H,64H,65H,66H,67H,68H,69H
DB 70H,71H,72H,73H,74H,75H,76H,77H,78H,79H
DB 80H,81H,82H,83H,84H,85H,86H,87H,88H,89H
DB 90H,91H,92H,93H,94H,95H,96H,97H,98H,99H
;****************************************
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#40H
DJNZ R0,$
SETB DQ
MOV R0,#13H
DJNZ R0,$
JNB DQ,INIT1
LJMP INIT2
INIT1: SETB FLAG
LJMP INIT3
INIT2: CLR FLAG
LJMP INIT4
INIT3: MOV R0,#35H
DJNZ R0,$
INIT4: SETB DQ
RET
;***************************************
R_CONFIG:
JB FLAG,R_CONFIG1
RET
R_CONFIG1:
MOV A,#0CCH
LCALL WR_1820
MOV A,#4EH
LCALL WR_1820
MOV A,#00H
LCALL WR_1820
MOV A,#00H
LCALL WR_1820
MOV A,#7FH
LCALL WR_1820
RET
;****************************************
DELAY: MOV R7,#80H
MIN: DJNZ R7,YS500
RET
YS500: LCALL YS500US
LJMP MIN
YS500US:MOV R6,#80H
DJNZ R6,$
RET
DELAY1: MOV R7,#10H
DJNZ R7,$
RET
;*************************************
DISP: MOV R0,A
ANL A,#0FH
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
DJNZ R7,$
MOV A,R0
SWAP A
ANL A,#0FH
MOVC A,@A+DPTR
MOV SBUF,A
MOV R7,#0FH
DJNZ R7,$
RET
TAB1: DB 0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0h
DB 0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8eh
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -