很可惜,当时用了记事本保存,导致现在的注释中文的都成了问号了,原来的文件早就被删除了,只留下了这么一个备份,已经一年多了啊,当初用了7279a,18b20,12864,8051等东西
CLK EQU P2.3 ;7279CLK //7279A?????
DATE EQU P2.4 ;7279'S DATE
CS EQU P2.7 ;7279 ENBLE
KEY EQU INT0 ;7279 INT
DAT BIT P1.3 ;18B20'S DATE LINE
RS EQU P1.0 ;12864'S RS
STD EQU P1.1 ;12864'S RW
SCLK EQU P1.2 ;12864 ENBLE
PSB EQU P2.0 ;12864 IT IS ALWAY BE 1
RES BIT P3.5 ;12864 IT IS ALWAY BE 1
COMMAND EQU 20H ;//???7279 ? 12864 ???????????
RECEIVE EQU 22H ;//?7279?????????????
M_TIMES EQU 23H ;//??????
TEMPER_L EQU 25H ;//??????,????????
TEMPER_H EQU 24H ;//??????,????????
M_FLAG EQU 21H.0 ;//????,?????????????
M_FIRST EQU 21H.1 ;//???????????,??????
CU_HIGH EQU 21H.2 ;//??????????,??????
SET_HIGH EQU 21H.3 ;//??????????,??????
SUB_HIGH EQU 21H.4 ;//????????,??????
POINT_FLAG EQU 21H.5 ;//??????????
CALC_WRONG_FLAG EQU 21H.6 ;
FIRST_ENABLE_0 EQU 26H.0 ;//???????0???
//?????????????,?????????????????????
SET_TEMPER_P EQU 3DH ;//????????????8?
SET_TEMPER_I EQU 3EH ;//????????????8?
HDATA EQU 45H ;//??/??????
LDATA EQU 46H ;//??/??????
TTT EQU 47H
TMP EQU 3FH ;//??????
TMP0 EQU 42H ;//??????
TMP_SET_TEMPER_P EQU 41H ;
//????????????,????????,???????
TMP_SET_TEMPER_I EQU 40H ;
//????????????,????????,???????
COUNT_SUB EQU 43H ;USED TO COUNT ;//??????,???
SHOW_ADDR EQU 44H ;USED TO RECORD WHICH ADDR TO SHOW
RESET7 EQU 10100100B
SHOW0 EQU 10000000B
SHOW1 EQU 10000001B
SHOW2 EQU 10000010B
SHOW3 EQU 10000011B
READ EQU 00010101B
ORG 0000H
JMP START
ORG 0003H
LJMP INTERRUPT
ORG 500H
DB 00H,00H,00H,0DH,0CH,0BH,0AH,00H
DB 00H,00H,00H,0EH,09H,06H,03H,00H
DB 00H,00H,00H,2EH,08H,05H,02H,00H
DB 00H,00H,00H,00H,07H,04H,01H,00H ;//???
;===========//12864????
;MOV TMP,#0F8H ;//????(11111000)
;MOV COMMAND,#80H ;//??????
;LCALL LCDWRITE
;MOV TMP,#0FAH ;//??? (11111010)
;MOV COMMAND,#35H
;CALL LCDWRITE ;//??????
;=================
START:
MOV SP,#50H
CALL SYSTEM_INIT
MOV 36H,#00H
MOV 37H,#02H
MOV 38H,#07H
MOV 39H,#2eH
MOV 3AH,#03H
MOV 3BH,#09H
MOV 3CH,#09H ;//???????
CALL MAIN ;//?????
;=======================
MAIN:
JNB M_FLAG,CONTINUE_MAIN
CALL MAIN_MODIFY
JMP MAIN
CONTINUE_MAIN:
CLR EA
CLR CU_HIGH
CALL GET_TEMPER //\/ ??????????Flag+Intege+Point??
// ????CU_HIGH+TEMPER_H+TEMPER_L
MOV COMMAND,#SHOW0
CALL SENT
MOV COMMAND,#5
CALL SENT
CALL LONG_LONG_DELAY
CALL CALC_INPUT //\/ ??????????Flag+Intege+Point??
SETB EA // ?36H?????,???????SET_HIGH+SET_TEMPER_I+SET+TEMPER_P
CALL FORMAT_TEMPER //\/ ????????????Flag
CALL CALC_SUB //\/ ????????,?????????,??????
// ????????SUB_HIGH+TMP_SET_TEMPER_I+TMP_SET_TEMPER_P
CALL CALC_CLARK
CLR EA
CALL DISPLAY_INFO //\/ ???????????????????
SETB EA
CALL LONG_LONG_DELAY
JMP MAIN
;====================================================
;==================================//????
DISPLAY_INFO:
MOV TMP0,TEMPER_H
MOV TMP,TEMPER_L
MOV TTT,#0F8H
MOV COMMAND,#80H
LCALL LCDWRITE
MOV TTT,#0FAH
MOV COMMAND,#0B5H
CALL LCDWRITE
MOV COMMAND,#0B1H
CALL LCDWRITE
MOV COMMAND,#0C7H
CALL LCDWRITE
MOV COMMAND,#0B0H
CALL LCDWRITE
MOV COMMAND,#0CEH
CALL LCDWRITE
MOV COMMAND,#0C2H
CALL LCDWRITE
MOV COMMAND,#0B6H
CALL LCDWRITE
MOV COMMAND,#0C8H
CALL LCDWRITE
MOV COMMAND,#03AH
CALL LCDWRITE
CALL WRITE_DATE_TO_DISPLAY
JNB CU_HIGH,DISPLAY_INFO_00
MOV 30H,#2DH
JMP DISPLAY_INFO_0
DISPLAY_INFO_00:
MOV 30H,#0
DISPLAY_INFO_0:
CALL SHOW_BUFFER
MOV TMP0,SET_TEMPER_I
MOV TMP,SET_TEMPER_P
MOV TTT,#0F8H
MOV COMMAND,#90H
LCALL LCDWRITE
MOV TTT,#0FAH
MOV COMMAND,#0C9H
CALL LCDWRITE
MOV COMMAND,#0E8H
CALL LCDWRITE
MOV COMMAND,#0B6H
CALL LCDWRITE
MOV COMMAND,#0A8H
CALL LCDWRITE
MOV COMMAND,#0CEH
CALL LCDWRITE
MOV COMMAND,#0C2H
CALL LCDWRITE
MOV COMMAND,#0B6H
CALL LCDWRITE
MOV COMMAND,#0C8H
CALL LCDWRITE
MOV COMMAND,#03AH
CALL LCDWRITE
CALL WRITE_DATE_TO_DISPLAY
JB SET_HIGH,DISPLAY_INFO_11 ;//=1?????,???
MOV 30H,#2DH
JMP DISPLAY_INFO_1
DISPLAY_INFO_11:
MOV 30H,#0
DISPLAY_INFO_1:
CALL SHOW_BUFFER
MOV TMP0,TMP_SET_TEMPER_I
MOV TMP,TMP_SET_TEMPER_P
MOV TTT,#0F8H
MOV COMMAND,#88H
LCALL LCDWRITE
MOV TTT,#0FAH
MOV COMMAND,#0CEH
CALL LCDWRITE
MOV COMMAND,#0C2H
CALL LCDWRITE
MOV COMMAND,#0B6H
CALL LCDWRITE
MOV COMMAND,#0C8H
CALL LCDWRITE
MOV COMMAND,#0B2H
CALL LCDWRITE
MOV COMMAND,#0EEH
CALL LCDWRITE
MOV COMMAND,#0D6H
CALL LCDWRITE
MOV COMMAND,#0B5H
CALL LCDWRITE
MOV COMMAND,#03AH
CALL LCDWRITE
CALL WRITE_DATE_TO_DISPLAY
JNB SUB_HIGH,DISPLAY_INFO_22
MOV 30H,#2DH
JMP DISPLAY_INFO_2
DISPLAY_INFO_22:
MOV 30H,#0
DISPLAY_INFO_2:
CALL SHOW_BUFFER
RET
;*****************************************
MAIN_MODIFY:
JB M_FIRST,FIRST_MODIFY
JMP NEXT0_MODIFY
FIRST_MODIFY:
MOV TTT,#0F8H
MOV COMMAND,#01H
CALL LCDWRITE
CLR M_FIRST
CALL LONG_LONG_DELAY
MOV COMMAND,#80H
CALL LCDWRITE
MOV TTT,#0FAH
MOV COMMAND,#0C3H
CALL LCDWRITE
MOV COMMAND,#0A0H
CALL LCDWRITE
MOV COMMAND,#0CEH
CALL LCDWRITE
MOV COMMAND,#0C2H
CALL LCDWRITE
MOV COMMAND,#0B6H
CALL LCDWRITE
MOV COMMAND,#0C8H
CALL LCDWRITE
MOV COMMAND,#0C9H
CALL LCDWRITE
MOV COMMAND,#0E8H
CALL LCDWRITE
MOV COMMAND,#0B6H
CALL LCDWRITE
MOV COMMAND,#0A8H
CALL LCDWRITE
MOV COMMAND,#0BDH
CALL LCDWRITE
MOV COMMAND,#0E7H
CALL LCDWRITE
MOV COMMAND,#0C3H
CALL LCDWRITE
MOV COMMAND,#0E6H
CALL LCDWRITE
MOV TTT,#0F8H
MOV COMMAND,#90H
CALL LCDWRITE
MOV TTT,#0FAH
MOV 36H,#00H
MOV 37H,#00H
MOV 38H,#00H
MOV 39H,#00H
MOV 3AH,#00H
MOV 3BH,#00H
MOV 3CH,#00H
NEXT0_MODIFY:
CLR CY
MOV A,RECEIVE
SUBB A,#0FFH
JZ CON_NO_NUMBER ;CHECK IF IN
CLR CY
MOV A,RECEIVE
SUBB A,#0AH
JZ CON_NO_NUMBER ;CHECK IF IN
CLR CY
MOV A,RECEIVE
SUBB A,#0BH
JZ CON_END_MODIFY ;END INPUT
JMP NEXT2_MODIFY
CON_END_MODIFY:
JMP END_MODIFY
CON_NO_NUMBER:
JMP NO_NUMBER
NEXT2_MODIFY:
CLR CY
MOV A,RECEIVE
SUBB A,#02EH
JZ IS_POINT
CLR CY
MOV A,RECEIVE
SUBB A,#0CH
JZ IS_UNDER0
CALL LONG_DELAY
CALL LONG_DELAY
CALL LONG_DELAY
CALL LONG_DELAY
CLR CY
MOV A,RECEIVE
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
JMP NEXT1_MODIFY
IS_POINT:
MOV A,M_TIMES
JZ NO_NUMBER
JB POINT_FLAG,NO_NUMBER
SETB POINT_FLAG
CALL LONG_DELAY
CALL LONG_DELAY
CALL LONG_DELAY
CALL LONG_DELAY
MOV COMMAND,RECEIVE
CALL LCDWRITE
JMP NEXT1_MODIFY
IS_UNDER0:
MOV A,M_TIMES
JNZ NO_NUMBER
JB SET_HIGH,NO_NUMBER
SETB SET_HIGH
CALL LONG_DELAY
CALL LONG_DELAY
CALL LONG_DELAY
CALL LONG_DELAY
MOV COMMAND,#2DH
CALL LCDWRITE
JMP NEXT1_MODIFY
NEXT1_MODIFY:
CLR CY
MOV A,M_TIMES
ADD A,#36H
MOV R0,A
MOV @R0,RECEIVE ;record what input
MOV RECEIVE,#0FFH
MOV A,M_TIMES
INC A
MOV M_TIMES,A ;GET TIMES UP
CLR CY
SUBB A,#7H
JZ END_MODIFY ;IF FULL FOR MODIFY
JMP MAIN_MODIFY
END_MODIFY:
CLR M_FLAG
SETB M_FIRST
CLR POINT_FLAG
MOV M_TIMES,#0H
MOV RECEIVE,#0FFH
MOV TTT,#0F8H
MOV COMMAND,#01H
CALL LCDWRITE
RET
NO_NUMBER:
MOV RECEIVE,#0FFH
CALL LONG_DELAY
JMP MAIN_MODIFY
;===============================
;============//??????????,
SHOW_BUFFER:
CLR FIRST_ENABLE_0
CLR A
MOV A,30H
SUBB A,#2DH
JNZ SHOW_CONTINUE
MOV COMMAND,#2DH
CALL LCDWRITE
SHOW_CONTINUE:
MOV A,31H
JZ SHOW_NEXT0
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
SETB FIRST_ENABLE_0 //31h??0,?????
SHOW_NEXT0:
MOV A,32H
JZ SHOW_NEXT1
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
SETB FIRST_ENABLE_0
JMP SHOW_NEXT2
SHOW_NEXT1:
JNB FIRST_ENABLE_0,SHOW_NEXT2 //???0,?????0,????
//????1,????
MOV A,32H
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
//33?????,????????
SHOW_NEXT2:
MOV A,33H
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
MOV A,#2EH
MOV COMMAND,A
CALL LCDWRITE
MOV A,34H
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
MOV A,35H
ADD A,#30H
MOV COMMAND,A
CALL LCDWRITE
RET
;****************************************************
;========================//???12864
INIT12864:
LCALL DL1MS ;//????????
MOV TTT,#0F8H ;// ????(11111000)
MOV COMMAND,#30H ;//???????
LCALL LCDWRITE
MOV COMMAND,#0CH
LCALL LCDWRITE ;//????ON
MOV COMMAND,#01H ;//??
LCALL LCDWRITE
LCALL DL1MS
MOV COMMAND,#06H ;//????
LCALL LCDWRITE
LCALL DL1MS
RET
;========================================================
LCDWRITE: ;//???????
MOV A,COMMAND ;//???????A
ANL A,#0F0H ;//???4?
MOV HDATA,A ;//??4??HDATA??
MOV A,COMMAND ;//??4?
SWAP A ;//??4???
ANL A,#0F0H
MOV LDATA,A ;//??4??LDATA??
MOV A,TTT ;//?????
LCALL SENDBIT ;//??
LCALL DL1MS ;//??1ms
MOV A,HDATA
LCALL SENDBIT
LCALL DL1MS
MOV A,LDATA
LCALL SENDBIT
LCALL DL1MS
RET
;=================ALL DELAY
LONG_DELAY:
PUSH 30H
MOV 30H,#25H
DELAY_LP:
DJNZ 30H,DELAY_LP
POP 30H
RET
LONG_LONG_DELAY:
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#08FH
DELAY_LP0:
MOV 31H,#0F0H
DELAY_LP1:
MOV 32H,#04H
DELAY_LP2:
DJNZ 32H,DELAY_LP2
DJNZ 31H,DELAY_LP1
DJNZ 30H,DELAY_LP0
POP 32H
POP 31H
POP 30H
RET
SHORT_DELAY:
PUSH 30H
MOV 30H,#10H
SHORT_LP:
DJNZ 30H,SHORT_LP
POP 30H
RET
DL1MS: ;//?????
PUSH 00H ;0.1MS
PUSH 01H
PUSH 02H
MOV R2,#01H
WA_PA: MOV R0,#0FH
WA_PB: MOV R1,#0FH
DJNZ R1,$
DJNZ R0,WA_PB
DJNZ R2,WA_PA
POP 02H
POP 01H
POP 00H
RET
NOP
RET
DL40MS: ;//?????
PUSH 00H ;40MS
PUSH 01H
PUSH 02H
MOV R2,#01H
DL_PA: MOV R0,#0FFH
DL_PB: MOV R1,#0FFH
DJNZ R1,$
DJNZ R0,DL_PB
DJNZ R2,DL_PA
POP 02H
POP 01H
POP 00H
RET
;********************************************
;======================
SENDBIT: ;//???????????
MOV R7,#08H ;//??8?
SEND_1: RLC A
MOV STD,C ;//??????
CLR SCLK ;//??????
SETB SCLK
DJNZ R7,SEND_1 ;//????8???
RET
;==========================================
;**********************************************
;==============GET TEMPER
GET_TEMPER:
LCALL Set_18B20
MOV A,#0CCH ;JMP ROM
LCALL WRITE_1820
MOV A,#44H ;CHANGE TEMPER
LCALL WRITE_1820
LCALL LONG_LONG_DELAY
LCALL Set_18B20 ;INIT 18B20
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_1820
CALL CALC_TEMPER ;CALC_TEMPER TO NUMBER
RET
Set_18B20:
SETB DAT
NOP
CLR DAT
MOV R2,#250 ;DELAY
DJNZ R2,$
SETB DAT ;
MOV R2,#30
DJNZ R2,$
JNB DAT,INIT1
JMP Set_18B20
INIT1: MOV R2,#120
DJNZ R2,$ ;
JB DAT,INIT2
JMP Set_18B20
INIT2: MOV R2,#240
DJNZ R2,$
RET
;=====================WRITE DATE TO 1820
WRITE_1820:
MOV R2,#8
WR0: CLR DAT
MOV R3,#6
DJNZ R3,$
RRC A
MOV DAT,C
MOV R3,#20
DJNZ R3,$
SETB DAT
NOP
NOP
DJNZ R2,WR0
SETB DAT
RET
;======================READ FROM 1820
READ_1820:
MOV R4,#2
MOV R1,#TEMPER_L
RE0: MOV R2,#8
RE1: SETB DAT
NOP
NOP
CLR DAT
NOP
NOP
SETB DAT
MOV R3,#4
DJNZ R3,$
MOV C,DAT
RRC A
MOV R3,#30
DJNZ R3,$
DJNZ R2,RE1
MOV @R1,A
DEC R1
DJNZ R4,RE0
RET
;******************************
;==================7279's sent and receive
SENT:
MOV COUNT_SUB,#8
CLR CS
CALL LONG_DELAY
SENT_LP:
MOV C,COMMAND.7
MOV DATE,C
SETB CLK
MOV A,COMMAND
RL A
MOV COMMAND,A
CALL SHORT_DELAY
CLR CLK
CALL SHORT_DELAY
DJNZ COUNT_SUB,SENT_LP
CLR DATE
RET
;************************************
;================
RECEIVEDATE:
MOV COUNT_SUB,#8
SETB DATE
CALL LONG_DELAY
RECEIVEDATE_LP:
SETB CLK
CALL SHORT_DELAY
MOV A,RECEIVE
RL A
MOV RECEIVE,A
MOV C,DATE
MOV RECEIVE.0,C
CLR CLK
CALL SHORT_DELAY
DJNZ COUNT_SUB,RECEIVEDATE_LP
CLR DATE ;get keyborad
MOV DPTR,#500H
MOV A,RECEIVE
MOVC A,@A+DPTR
MOV RECEIVE,A ;change to number
RET
;================CALC_TEMPER TO FLAG+INTEGE+POINT STRUCT
CALC_TEMPER:
MOV C,TEMPER_H.3
;JC TEM_UNDER0
JMP TEM_CALC
TEM_UNDER0:
MOV A,TEMPER_L
CPL A
MOV TEMPER_L,A
MOV A,TEMPER_H
CPL A
INC A
MOV TEMPER_H,A
SETB CU_HIGH
JMP TEM_CALC
TEM_CALC:
MOV A,TEMPER_L
ANL A,#00001111B
MOV B,#0AH
MUL AB
MOV B,#10H
DIV AB
MOV 34H,A
MOV A,#0AH
MUL AB
MOV B,#10H
DIV AB
MOV 35H,A ;GET PAST POINT
MOV A,#0H
MOV C,TEMPER_L.4
RRC A
MOV C,TEMPER_L.5
RRC A
MOV C,TEMPER_L.6
RRC A
MOV C,TEMPER_L.7
RRC A
MOV C,TEMPER_H.0
RRC A
MOV C,TEMPER_H.1
RRC A
MOV C,TEMPER_H.2
RRC A
RRC A ;GET INTERGA
MOV TMP0,A
MOV A,34H
MOV B,#10
MUL AB
CLR CY
ADD A,35H
MOV TMP,A
MOV TEMPER_L,TMP ;RECORD POINT
MOV TEMPER_H,TMP0 ;RECORD INTERGE
RET
;***************************************
;===========format current and set temper from FLAG+INTEGE+POINT to Flag+Intege
;============and change the flag of set temper's flag because a-b=a+(-b)
FORMAT_TEMPER: ;//???????????,?????
MOV A,TEMPER_H
MOV B,#100
MUL AB
MOV TMP0,B
MOV TMP,A ;HIGH X 100
ADD A,TEMPER_L
MOV TEMPER_L,A
MOV A,B
ADDC A,#0H
MOV TEMPER_H,A
;format current temper
MOV A,SET_TEMPER_I
MOV B,#100
MUL AB
MOV TMP0,B
MOV TMP,A
ADD A,SET_TEMPER_P
MOV SET_TEMPER_P,A
MOV A,B
ADDC A,#0H
MOV SET_TEMPER_I,A
;format set temper
RET
;========CALC INPUT TO NUMBER
;36~3CH
;get set temper and change it to Flag+Intege+Point struct
;IF NUNBER IS WRONG,DON'T change anything
CALC_INPUT:
CLR CALC_WRONG_FLAG ;//??????
CLR SET_HIGH
MOV A,#00H
MOV A,36H
CLR CY
SUBB A,#0CH ;IS <0
JNZ C_I_OVER0
SETB SET_HIGH ;//?????????
C_I_UNDER0:
MOV 36H,#00H ;//????,?36??
C_I_OVER0: ;START FROM 36H,POINT CAN'T APPRE AT 39H
CLR OV
CLR CY
MOV A,37H
SUBB A,#2EH
JNZ P_NEXT0
P_37:
MOV 40H,36H ;get intege
;next get point
MOV A,38H
MOV B,#10
MUL AB
ADD A,39H ;get point
MOV 41H,A ;X.XXXXX
JMP OUT_CALC_SET
P_NEXT0:
MOV A,36H
MOV B,#10
MUL AB
ADD A,37H
MOV TMP,A ;it is didn't >256
CLR CY
MOV A,38H
SUBB A,#2EH
JNZ P_NEXT1
P_38:
MOV 40H,TMP
MOV A,39H
MOV B,#10
MUL AB
ADD A,3AH
MOV 41H,A ;XX.XXXX
JMP OUT_CALC_SET
P_NEXT1:
MOV A,TMP
MOV B,#10
MUL AB
JBC OV,WRONG0 ;if it >256
ADD A,38H
JBC CY,WRONG0 ;get intege
CJNE A,#110,OVER100_0
OVER100_0:
JC NEXT_0
WRONG0:
JMP WRONG
NEXT_0:
MOV TMP,A
CLR CY
MOV A,39H
SUBB A,#2EH
JNZ P_NEXT2
P_39:
MOV 40H,TMP
MOV A,3AH
MOV B,#10
MUL AB
ADD A,3BH
MOV 41H,A ;XXX.XXX
JMP OUT_CALC_SET
P_NEXT2:
MOV A,TMP
MOV B,#10
MUL AB
JBC OV,WRONG1
ADD A,39H
JBC CY,WRONG1
CJNE A,#110,OVER100_1
OVER100_1:
JC NEXT_1
WRONG1:
JMP WRONG
NEXT_1:
MOV TMP,A
CLR CY
MOV A,3AH
SUBB A,#2EH
JNZ P_NEXT3
P_3A:
MOV 40H,TMP
MOV A,3BH
MOV B,#10
MUL AB
ADD A,3CH
MOV 41H,A ;XXXX.XX
JMP OUT_CALC_SET
P_NEXT3:
MOV A,TMP
MOV B,#10
MUL AB
JBC OV,WRONG2
ADD A,3AH
JBC CY,WRONG2
CJNE A,#110,OVER100_2
OVER100_2:
JC NEXT_2
WRONG2:
JMP WRONG
NEXT_2:
MOV TMP,A
CLR CY
MOV A,3BH
SUBB A,#2EH
JNZ P_NEXT4
P_3B:
MOV 40H,TMP
MOV A,3CH
MOV B,#10
MUL AB
MOV 41H,A
JMP OUT_CALC_SET
;XXXXX.X
P_NEXT4:
MOV A,TMP
MOV B,#10
MUL AB
JBC OV,WRONG3
ADD A,#3BH
JBC CY,WRONG3
CJNE A,#110,OVER100_3
OVER100_3:
JC NEXT_3
WRONG3:
JMP WRONG
NEXT_3:
MOV 40H,A
MOV 41H,#00H
OUT_CALC_SET: ;
//??????????????,???????????????
MOV SET_TEMPER_I,40H
MOV SET_TEMPER_P,41H
JNB SET_HIGH,OUT_OUT
MOV 36H,#0CH ;//?????,?????,????0c,?????
OUT_OUT:
CPL SET_HIGH ;//?????,-??+
RET
WRONG:
SETB CALC_WRONG_FLAG
CLR SET_HIGH
RET
;=================================
;==============SYSTEM_INIT
SYSTEM_INIT:
SETB EA
SETB EX0
SETB PX0
CLR EA
MOV M_TIMES,#00H ;NO MODIFY
CLR M_FLAG ;NOT IN MODIFY
MOV RECEIVE,#0FFH ;NO PUTIN
SETB M_FIRST ;FIRST IN MODIFY
MOV 31H,#99H
INIT_LP:
CALL LONG_DELAY
DJNZ 31H,INIT_LP
MOV COMMAND,#RESET7
CALL SENT
SETB CS ;INIT 7279A
;999999999999999
CALL LONG_LONG_DELAY
CLR RES
SETB RES ; // ???????VDD
SETB RS ; // ???????VDD
CLR PSB ; // ??????VSS
CALL INIT12864 ; // ???????
RET
;================================================
;****************************************
;========//========r6,r7??,r3r4r5?BDC?
HB2:CLR A//;BCD????
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H//;???????????
HB3:MOV A,R7//;?????????????CY?
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5//;BCD????????,????2
ADDC A,R5
DA A//;?????
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A//;???????????????6,????
DJNZ R2,HB3//;???16bit
RET
;************************************
;====================
;==================INTERRUPT
INTERRUPT:
PUSH ACC
PUSH PSW
MOV COMMAND,#READ
CALL SENT
CALL RECEIVEDATE
SETB CS ;get keyborad
JB M_FLAG,IN_MODIFY ;IN_MODIFY
OUT_MODIFY:
CLR CY
MOV A,RECEIVE
SUBB A,#0AH
JZ CHANGE_STAA
JMP OUT_INT
IN_MODIFY:
CLR CY
MOV A,RECEIVE
SUBB A,#0AH
JZ OUT_INT
MOV A,RECEIVE
SUBB A,#0DH
JZ OUT_INT
CLR CY
MOV A,RECEIVE
SUBB A,#0EH
JZ OUT_INT
JMP OUT_INT
;IF IT IS NOT A/B/C/D/E ,IT WILL JMP TO CHANGE
CHANGE_STAA:
SETB M_FLAG
MOV RECEIVE,#0FFH
CLR SET_HIGH ;clear set temper flag
CLR POINT_FLAG ;clear point flag,it's mean no point in
OUT_INT:
POP PSW
POP ACC
RETI
;==================================
;//==================????????????????
WRITE_DATE_TO_DISPLAY:
MOV R6,TMP0 ;//????TMP0?
MOV R7,TMP ;//????TMP?
CALL HB2
MOV A,R3
MOV 31H,A
MOV A,R4
ANL A,#0F0H
SWAP A
MOV 32H,A
MOV A,R4
ANL A,#0FH
MOV 33H,A
MOV A,R5
ANL A,#0F0H
SWAP A
MOV 34H,A
MOV A,R5
ANL A,#0FH
MOV 35H,A
RET
;**********************************************
;=============//??????
CALC_CLARK:
CLR CY
CLR P1.7
CLR P1.5
MOV A,TMP_SET_TEMPER_I
SUBB A,#8
JNC CLARK //????20,c??0,????
RET
CLARK:
JB SUB_HIGH,RED_CLARK ;//????
SETB P1.7
RET
RED_CLARK:
SETB P1.5
RET
;=============================================================
;//????????,????????,????????????,
CALC_SUB:
MOV HDATA,SET_TEMPER_I
MOV LDATA,SET_TEMPER_P
JNB SET_HIGH,SET_OVER0
MOV A,SET_TEMPER_P
CPL A
MOV SET_TEMPER_P,A
MOV A,SET_TEMPER_I
CPL A
MOV SET_TEMPER_I,A
CLR CY
MOV A,SET_TEMPER_P
ADD A,#1
MOV SET_TEMPER_P,A
MOV A,#0H
ADDC A,SET_TEMPER_I
MOV SET_TEMPER_I,A ;//?????????
SET_OVER0:
JNB CU_HIGH,CURRENT_OVER0
MOV A,TEMPER_L
CPL A
MOV TEMPER_L,A
MOV A,TEMPER_H
CPL A
MOV TEMPER_H,A
CLR CY
MOV A,TEMPER_L
ADD A,#1
MOV TEMPER_L,A
MOV A,#0H
ADDC A,TEMPER_H
MOV TEMPER_H,A ;//?????????
CURRENT_OVER0:
NEXT_CALC_SUBB:
MOV A,#0H
MOV A,TEMPER_H
RL A
MOV C,CU_HIGH
RRC A
MOV A,#0H
MOV A,SET_TEMPER_I
RL A
MOV C,SET_HIGH
RRC A
CLR CY
MOV A,TEMPER_L
ADD A,SET_TEMPER_P
MOV TMP_SET_TEMPER_P,A
MOV A,TEMPER_H
ADDC A,SET_TEMPER_I
MOV TMP_SET_TEMPER_I,A
ANL A,#80H
JNZ SUB_UNDER0 //????????,?????????
MOV SET_TEMPER_I,HDATA
MOV SET_TEMPER_P,LDATA
CLR SUB_HIGH
RET
SUB_UNDER0:
SETB SUB_HIGH
CLR CY
MOV A,TMP_SET_TEMPER_P
SUBB A,#1H
CPL A
MOV TMP_SET_TEMPER_P,A
MOV A,TMP_SET_TEMPER_I
SUBB A,#0H
CPL A
MOV TMP_SET_TEMPER_I,A
MOV SET_TEMPER_I,HDATA
MOV SET_TEMPER_P,LDATA
SETB SUB_HIGH
RET
;************************************************
END