第 11 页
RET
;===========初始化1820================================== RESET: SETB DQ
FLAG1: SETB NDQ:
;=============1820写字节======================== WR_1820:
MOV R6,#8 CLR C
CLR DQ CLR FLAG
DQ
ACALL ERROR RET MOV R5,#100 DJNZ SETB DJNZ
R5,$ DQ R5,$
FLAG
SETB NOP
MOV R5,#25H DJNZ JMP NDQ
R5,RESET1 DQ
NOP CLR DQ MOV R5,#250 DJNZ
R5,$
RESET1: JNB DQ,FLAG1
MOV R5,#100 JMP RETU
RETU: SETB
WR1:
第 11 页
第 12 页
MOV R5,#7 DJNZ RRC A MOV DQ,C MOV R5,#25 DJNZ SETB NOP NOP DJNZ SETB RET
R6,WR1 DQ R5,$ DQ R5,$
;==============读取1820数据====================== READ_1820:
MOV R2,#4 MOV R1,#TEMPL
MOV R6,#8 SETB
DQ
RE1: RE2:
NOP
CLR DQ CLR C NOP NOP SETB DJNZ
DQ R5,$
MOV R5,#9
MOV C,DQ MOV R5,#24 DJNZ RRC A DJNZ DEC R1
R6,RE2 R5,$
MOV @R1,A
第 12 页
第 13 页
DJNZ RET
R2,RE1
;===========转换数据=============================
TURN: MOV XIAOSHU,TEMPL ;保存TEMPL值,后面用于取低4位转换小数部分 KEYSCAN:
JB K1,RETUN JNB K1,$ ACALL CLR_LCD ACALL DISP_THL ACALL SET_HL ACALL WR_THL //.../ACALL LED ACALL WR_PROM
;限值复制到EEPROM中 ;清屏
;显示高温限值和低温限值 ;设定限值
;把高温限值和低温限值写入RAM ;按下K1,进入键盘扫描
ACALL DELAY20 RET
;========键盘扫描=============================
MOV A,TEMPL MOV C,16 RRC A MOV C,17 RRC A MOV C,18 RRC A MOV C,19 RRC A MOV TEMP,A MOV A,XIAOSHU ANL A,#00001111B MOV XIAOSHU,A
;22H的位寻址
RETUN: RET
;------------设定高低限值----------------------
SET_HL: //JNB K4,EXIT
JB K1,KEY4
第 13 页
第 14 页
ACALL DELAY20 JNB K1,$ CPL 20H.1 JB 20H.1,SET_H JMP SET_L
;标志位,标志设定高温限值或低温限值
;-------------调高温限值------------------------- SET_H: KEY3H:
JB K3,KEY2H ACALL DELAY20 JNB K3,$ DEC MOV CJNE
TEMP_TH A,TEMP_TH A,#0,A1
;按下K3,值减1
JNB K2,$ MOV A,TEMP_TH CJNE
A,#99,A0
MOV TEMP_TH,#00 INC TEMP_TH
ACALL DELAY20 ACALL TH_SHAN
;高温限值与低温限值间设定转换
JNB K4,EXIT JB K2,KEY3H
;按下K2,值加1
;光标闪,进入设定
KEY2H: JNB K1,SET_L
A0: ACALL DISP_THL
MOV TEMP_TH,#99 JMP SET_H
A1: ACALL DISP_THL
;-------------调低温限值------------------------------ SET_L:
ACALL TL_SHAN
;高温限值与低温限值间设定转换
JNB K4,EXIT JB K2,KEY3L
;按下K2,值加1
KEY2L: JNB K1,SET_H
第 14 页