温度监控系统

很可惜,当时用了记事本保存,导致现在的注释中文的都成了问号了,原来的文件早就被删除了,只留下了这么一个备份,已经一年多了啊,当初用了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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值