?? fantest.asm
字號:
MOV R1, #68H
MOV R2, #05
LOOP: MOV A, @R1
ORL A, #30H
LCALL WriteLCDData
DEC R1
DJNZ R2, LOOP
RET
/*************** Get key value *****************************************/
GETKEY: MOV 32H, #0FFH
;MOV P1, #0FFH
SETB INP
JNB INP, KEYIN
MOV 32H, #0FFH
LJMP BACK
KEYIN: MOV A, P1
SWAP A
ANL A, #0FH
MOV DPTR, #TABLE ;BCD TO ASCII
MOVC A, @A+DPTR
MOV 32H, A ; GET KEY SBUFF
JNB INP, $
MOV A, 32H
CJNE A, #0FFH, BACK
MOV 32H, #0FFH
BACK: RET
/*************** key anaylsis ******************************************************/
PRESS: MOV A, 32H
MOV 33H, A
MOV A, 33H ; HANDLE KEY SBUFF
NOP
CJNE A, #0FFH, PRES0
LJMP QUIT
/*************** first press A key***************************************************/
PRES0: NOP
JNB 20H.0, PRES1 ; switch enter & quit/char & numb, =1, FUNCTION KEY, =0 NUMBER KEY
MOV A, 33H
MOV 34H, A ; SBUF FOR FUNC KEY
MOV A, 34H
NOP
CJNE A, #0AH, COMP0
LCALL I2CINIT
LCALL VERIFY_PAGE_HI
MOV A, #0C0H ; DISPLAY "H Limit"
LCALL Write_instruction
MOV DPTR, #LINE6
LCALL PR_STRING
MOV A, #0C8H ; DISPLAY 48H--44H
LCALL Write_instruction
MOV R0, #48H
MOV R2, #5
HILIMT: MOV A, @R0
ORL A, #30H
LCALL WriteLCDData
DEC R0
DJNZ R2, HILIMT
MOV A, #0CDH ; DISPLAY "rpm"
LCALL Write_instruction
MOV DPTR, #LINE8
LCALL PR_STRING
CLR 20H.0
LJMP QUIT
PRES1: LJMP PRES2
/*************** first press B key***************************************************/
COMP0: MOV A, 34H
NOP
CJNE A, #0BH, COMP1
LCALL I2CINIT
LCALL VERIFY_PAGE_LO
MOV A, #0C0H ; DISPLAY "L Limit"
LCALL Write_instruction
MOV DPTR, #LINE5
LCALL PR_STRING
MOV A, #0C8H ; DISPLAY 4DH--49H
LCALL Write_instruction
MOV R0, #4DH
MOV R2, #5
LOLIMT: MOV A, @R0
ORL A, #30H
LCALL WriteLCDData
DEC R0
DJNZ R2, LOLIMT
MOV A, #0CDH ; DISPLAY "rpm"
LCALL Write_instruction
MOV DPTR, #LINE8
LCALL PR_STRING
CLR 20H.0
LJMP QUIT
/*************** first press C key***************************************************/
COMP1: MOV A, 34H
NOP
CJNE A, #0CH, SAVE
LCALL I2CINIT
LCALL VERIFY_BYTE_FILL
MOV A, #0C0H ; DISPLAY "FAN Q'TY"
LCALL Write_instruction
MOV DPTR, #LINE7
LCALL PR_STRING
MOV A, #0C9H ; DISPLAY "4F"
LCALL Write_instruction
MOV A, 4FH
ORL A, #30H
LCALL WriteLCDData
MOV A, #0CAH ; DISPLAY "PCS"
LCALL Write_instruction
MOV DPTR, #LINE9
LCALL PR_STRING
CLR 20H.0
LJMP QUIT
/*************** first press F key***************************************************/
SAVE: MOV A, 34H
NOP
CJNE A, #0FH, COMP2
LCALL I2CINIT
LCALL PAGE_FILL_SAVE
NOP
NOP
NOP
NOP
NOP
LCALL I2CINIT
LCALL PAGE_FILL_SAVE1
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE14
LCALL PR_STRING
LCALL DELAY2
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE11
LCALL PR_STRING
LJMP QUIT
/*************** first press other key***************************************************/
COMP2: MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE13
LCALL PR_STRING
LCALL DELAY2
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE11
LCALL PR_STRING
LJMP QUIT
/***************after first press A key, press D key quit*************************************/
PRES2: MOV A, 33H
CJNE A, #0DH, ENTER
QUITT: MOV 34H, #00H ;SBUF FOR FUNCTION KEY
SETB 20H.0
CLR 20H.1
CLR A
MOV R0, #59H
MOV R2, #5
FILLO: MOV @R0, A
INC R0
DJNZ R2, FILLO
MOV 50H, A ; Number key buff
MOV 51H, A
MOV 52H, A
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE11
LCALL PR_STRING
LJMP QUIT
/***************after first press A key, press E key enter*************************************/
ENTER: MOV A, 33H
CJNE A, #0EH, INPTA
JNB 20H.1, OUT ; NUMBER KEY IN ?
ABA: MOV A, 34H
CJNE A, #0AH, ABB
LCALL I2CINIT
LCALL PAGE_FILL_HI
LJMP OUT
ABB: MOV A, 34H
CJNE A, #0BH, ABC
LCALL I2CINIT
LCALL PAGE_FILL_LO
LJMP OUT
ABC: MOV A, 34H
CJNE A, #0CH, OUT
LCALL I2CINIT
LCALL BYTE_FILL
LCALL VERIFY_BYTE_FILL
MOV A, 4FH
MOV DPTR, #TABLE1
MOVC A, @A+DPTR
MOV 4EH, A
OUT: MOV 34H, #00H
SETB 20H.0
CLR 20H.1
CLR A
MOV R0, #59H
MOV R2, #5
FILLH: MOV @R0, A
INC R0
DJNZ R2, FILLH
MOV 50H, A ; Number key buff
MOV 51H, A
MOV 52H, A
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE10
LCALL PR_STRING
LCALL DELAY2
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE11
LCALL PR_STRING
LJMP QUIT
/*************** display error input key *************************************/
INPTA: MOV A, 33H
CJNE A, #0AH, INPTB
JMP FAIL
INPTB: MOV A, 33H
CJNE A, #0BH, INPTC
JMP FAIL
INPTC: MOV A, 33H
CJNE A, #0CH, INPTF
JMP FAIL
INPTF: MOV A, 33H
CJNE A, #0FH, MATH
FAIL: MOV 34H, #00H
SETB 20H.0
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE12
LCALL PR_STRING
LCALL DELAY2
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE11
LCALL PR_STRING
LJMP QUIT
/*************** display OK input A key (H limit input)*************************************/
MATH: MOV A, 34H
CJNE A, #0AH, OUPTB
SETB 20H.1 ; SAVE #5DH-#59H PC
MOV A, 50H
CJNE A, #00H, MOVA1
MOV A, 33H
MOV 59H, A
MOV A, 50H
ADD A, #01H
MOV 50H, A
JMP QW1
MOVA1: CJNE A, #01H, MOVA2
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 50H
ADD A, #01H
MOV 50H, A
JMP QW1
OUPTB: LJMP OUPTBB
MOVA2: CJNE A, #02H, MOVA3
MOV A, 5AH
MOV 5BH, A
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 50H
ADD A, #01H
MOV 50H, A
JMP QW1
MOVA3: CJNE A, #03H, MOVA4
MOV A, 5BH
MOV 5CH, A
MOV A, 5AH
MOV 5BH, A
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 50H
ADD A, #01H
MOV 50H, A
JMP QW1
MOVA4: CJNE A, #04H, QW1
MOV A, 5CH
MOV 5DH, A
MOV A, 5BH
MOV 5CH, A
MOV A, 5AH
MOV 5BH, A
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 50H
ADD A, #01H
MOV 50H, A
QW1: MOV A, #0C8H
LCALL Write_instruction
MOV R0, #5DH
MOV R2, #05
LCD1: MOV A, @R0
ORL A, #30H
LCALL WriteLCDData
DEC R0
DJNZ R2, LCD1
LJMP QUIT
/*************** display OK input B key (L limit input)*************************************/
OUPTBB: MOV A, 34H
CJNE A, #0BH, OUPTC
SETB 20H.1
MOV A, 51H
CJNE A, #00H, MOVB1
MOV A, 33H
MOV 59H, A
MOV A, 51H
ADD A, #01H
MOV 51H, A
JMP QW2
MOVB1: CJNE A, #01H, MOVB2
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 51H
ADD A, #01H
MOV 51H, A
JMP QW2
OUPTC: LJMP OUPTCC
MOVB2: CJNE A, #02H, MOVB3
MOV A, 5AH
MOV 5BH, A
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 51H
ADD A, #01H
MOV 51H, A
JMP QW2
MOVB3: CJNE A, #03H, MOVB4
MOV A, 5BH
MOV 5CH, A
MOV A, 5AH
MOV 5BH, A
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 51H
ADD A, #01H
MOV 51H, A
JMP QW2
MOVB4: CJNE A, #04H, QW2
MOV A, 5CH
MOV 5DH, A
MOV A, 5BH
MOV 5CH, A
MOV A, 5AH
MOV 5BH, A
MOV A, 59H
MOV 5AH, A
MOV A, 33H
MOV 59H, A
MOV A, 51H
ADD A, #01H
MOV 51H, A
QW2: MOV A, #0C8H
LCALL Write_instruction
MOV R0, #5DH
MOV R2, #05
LCD2: MOV A, @R0
ORL A, #30H
LCALL WriteLCDData
DEC R0
DJNZ R2, LCD2
LJMP QUIT
/*************** display OK input C key (Fan Q'ty input)*************************************/
OUPTCC: MOV A, 34H
CJNE A, #0CH, QUIT
SETB 20H.1
MOV A, 52H
CJNE A, #00H, QW3
MOV A, 33H
CJNE A, #00H, UNZERO
MOV 34H, #00H
SETB 20H.0
CLR 20H.1
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE12
LCALL PR_STRING
LCALL DELAY2
MOV A, #0C0H
LCALL Write_instruction
MOV DPTR, #LINE11
LCALL PR_STRING
JMP QUIT
UNZERO: MOV 5FH, A
MOV 52H, #00H
QW3: MOV A, #0C9H
LCALL Write_instruction
MOV A, 5FH
ORL A, #30H ;BCD TO ASCII
LCALL WriteLCDData
QUIT: RET
/*************** compare H limit*************************************/
HILIMIT: LCALL I2CINIT
LCALL VERIFY_PAGE_HI
CLR C
MOV A, 48H
SUBB A, 68H
JC LED1ON
JNZ LED1OFF
MOV A, 47H
SUBB A, 67H
JC LED1ON
JNZ LED1OFF
MOV A, 46H
SUBB A, 66H
JC LED1ON
JNZ LED1OFF
MOV A, 45H
SUBB A, 65H
JC LED1ON
JNZ LED1OFF
MOV A, 44H
SUBB A, 64H
JC LED1ON
JNZ LED1OFF
JMP LED1OFF
LED1ON: SETB P0.0
JMP LASTH
LED1OFF: CLR P0.0
LASTH: RET
/*************** compare L limit*************************************/
LOLIMIT: LCALL I2CINIT
LCALL VERIFY_PAGE_LO
CLR C
MOV A, 68H
SUBB A, 4DH
JC LED2ON
JNZ LED2OFF
MOV A, 67H
SUBB A, 4CH
JC LED2ON
JNZ LED2OFF
MOV A, 66H
SUBB A, 4BH
JC LED2ON
JNZ LED2OFF
MOV A, 65H
SUBB A, 4AH
JC LED2ON
JNZ LED2OFF
MOV A, 64H
SUBB A, 49H
JC LED2ON
JNZ LED2OFF
JMP LED2OFF
LED2ON: SETB P0.1
JMP LASTL
LED2OFF: CLR P0.1
LASTL: RET
/*************** OK (Over L limit, Under H limit)*************************************/
GREENLED:MOV C, P0.0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -