📄 ick.asm
字号:
;*************************************************************
; P3.0 IS LIE 1
; P3.1 IS LIE 2
; P3.2 IS LIE 3
; P3.3 IS LIE 4
; P3.4 IS HANG 1
; P3.5 IS HANG 2
; P3.6 IS HANG 3
; P3.7 IS HANG 4
;*************************************************************
; 5EH SAVE LOW DATA
; 5FH SAVE HIGH DATA
; 60H SAVE LOWER ADDRESS
; 61H SAVE LOW ADDRESS
; 62H SAVE HIGH ADDRESS
; 63H SAVE HIGHER ADDRESS
; 64H SAVE SURE ADDRESS
; 65H SAVE READ_OUT_DATA OF IC1
; 66H SAVE READ_OUT_DATA OF IC2
; 67H SAVE INPUT NUMBER
; 68H SAVE R4(60H,61H) OF START_ADDRESS
; 69H SAVE 62H OF START_ADDRESS
; 6AH SAVE R4(60H,61H) OF END_ADDRESS
; 6BH SAVE 62H OF END_ADDRESS
; 6CH SAVE PAGE_READ NUMBER
;*************************************************************
; SCL EQU P1.0
; SDA1 EQU P1.1
; SDA2 EQU P1.2
; NEXT_KEY EQU P1.3
; SURE_KEY EQU P1.4
; COM_KEY EQU P1.5
; READ_KEY EQU P1.6
;REDUCE/S_E_KEY EQU P1.7
; OK_KEY EQU P2.6
; FALSE_KEY EQU P2.7
;*************************************************************
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP ITOP
ORG 0050H
MAIN:MOV TMOD,#00H ;T0 WORK AT MODE0.
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV 67H,#00H
MOV 63H,#00H
MOV 62H,#00H
MOV 61H,#00H
MOV 60H,#02H
MOV 5FH,#0FH
MOV 5EH,#0FH
MOV R0,#63H
MOV R1,#75H
MOV 32H,#00H
MOV 50H,#0DFH
MOV 51H,#06H
SETB EA
SETB ET0
JUDGE:SETB TR0
LCALL KEY_BOARD
JNB P1.3,NEXT ;NEXT_KEY PRESSED?
JNB P1.7,REDUCE ;REDUCE/S_E_KEY PRESSED?
JNB P1.5,COM1
JNB P1.6,READ1
AJMP JUDGE
READ1:AJMP READ_IC
COM1:AJMP COM
;*************************************************************
NEXT:LCALL DLY100MS
JNB P1.3,NEXT_ADDRESS
AJMP JUDGE
NEXT_ADDRESS:JNB P1.3,$
LCALL NEXT_SUB
AJMP JUDGE
NEXT_SUB:MOV A,60H
CLR C
SUBB A,#0FH
JNZ ENABLE_GJIA_1
JINGWEI1:MOV 60H,#00H
MOV A,61H
CLR C
SUBB A,#0FH
JNZ ENABLE_SJIA_1
JINGWEI2:MOV 60H,#00H
MOV 61H,#00H
MOV A,62H
CLR C
SUBB A,#0FH
JNZ ENABLE_QJIA_1
JINGWEI3:MOV 63H,#00H
MOV 60H,#00H
MOV 61H,#00H
MOV 62H,#00H
SJMP OUT_JIA
ENABLE_GJIA_1:INC 60H
SJMP OUT_JIA
ENABLE_SJIA_1:INC 61H
SJMP OUT_JIA
ENABLE_QJIA_1:INC 62H
OUT_JIA:RET
;*************************************************************
REDUCE:LCALL DLY100MS
JNB P1.7,REDUCE_ADDRESS
AJMP JUDGE
REDUCE_ADDRESS:JNB P1.7,$
LCALL REDUCE_SUB
AJMP JUDGE
REDUCE_SUB:MOV A,60H
JNZ ENABLE_GJIAN_1
MOV A,61H ;61H EQUAL ZERO
JNZ ENABLE_SJIAN_1
MOV A,62H ;62H AND 62H EQUAL ZERO
JNZ ENABLE_QJIAN_1
; MOV A,63H ;63H,62H AND 61H EQUAL ZERO
; JNZ ENABLE_WJIAN_1
SJMP OUT_JIAN ;63H,62H,61H,60H ALL EQUAL ZERO,JMP JUDGE
ENABLE_GJIAN_1:DEC 60H
SJMP OUT_JIAN
ENABLE_SJIAN_1:MOV 60H,#0FH
DEC 61H
SJMP OUT_JIAN
ENABLE_QJIAN_1:MOV 60H,#0FH
MOV 61H,#0FH
DEC 62H
; ENABLE_WJIAN_1:MOV 60H,#0FH
; MOV 61H,#0FH
; MOV 62H,#0FH
; DEC 63H
OUT_JIAN:RET
;*************************************************************
; CHECK_IC_TYPE:CLR TR0
; LCALL ST
; MOV A,#0A8H
; LCALL WRBYT2
; LCALL CACK
; JNB F0,C16
; LCALL ST
; MOV A,#0A4H
; LCALL WRBYT2
; LCALL CACK
; JNB F0,C08
; LCALL ST
; MOV A,#0A2H
; LCALL WRBYT2
; LCALL CACK
; JNB F0,C04
; C02:MOV A,62H
; JNZ ALARM
; SJMP OUT
; C04:MOV A,#01H
; CLR C
; SUBB A,62H
; JC ALARM
; SJMP OUT
; C08:MOV A,#03H
; CLR C
; SUBB A,62H
; JC ALARM
; SJMP OUT
; C16:MOV A,#07H
; CLR C
; SUBB A,62H
; JC ALARM
; SJMP OUT
; ALARM:CPL P2.7
; LCALL DLY2S
; OUT:SETB TR0
; RET
;*************************************************************
KEY_BOARD:MOV P3,#0F0H ;SET LIE TO OUTPUT(LOW VOLTAGE).
JUG0:JNB P3.4,DLY_HANG1
JUG1:JNB P3.5,DLY_HANG2
JUG2:JNB P3.6,DLY_HANG3
JUG3:JNB P3.7,DLY_HANG4
AJMP JUMP_OUT
DLY_HANG1:LCALL DLY20MS
JNB P3.4,JUG4 ;SOME KEY ON HANG1 WAS PRESSED.
AJMP JUMP_OUT
DLY_HANG2:LCALL DLY20MS
JNB P3.5,JUG5 ;SOME KEY ON HANG2 WAS PRESSED.
AJMP JUMP_OUT
DLY_HANG3:LCALL DLY20MS
JNB P3.6,JUG6 ;SOME KEY ON HANG3 WAS PRESSED.
AJMP JUMP_OUT
DLY_HANG4:LCALL DLY20MS
JNB P3.7,JUG7 ;SOME HEY ON HANG4 WAS PRESSED.
AJMP JUMP_OUT
JUG4:MOV P3,#0FH ;SET HANG TO OUTPUT(LOW VOLTAGE)
JNB P3.0,DLY_H1_L1 ;KEY ON HANG1 AND LIE1 WAS PRESSED?
JNB P3.1,DLY_H1_L2 ;KEY ON HANG1 AND LIE2 WAS PRESSED?
JNB P3.2,DLY_H1_L3 ;KEY ON HANG1 AND LIE3 WAS PRESSED?
JNB P3.3,DLY_H1_L4 ;KEY ON HANG1 AND LIE4 WAS PRESSED?
JUG5:MOV P3,#0FH
JNB P3.0,DLY_H2_L1 ;KEY ON HANG2 AND LIE1 WAS PRESSED?
JNB P3.1,DLY_H2_L2 ;KEY ON HANG2 AND LIE2 WAS PRESSED?
JNB P3.2,DLY_H2_L3 ;KEY ON HANG2 AND LIE3 WAS PRESSED?
JNB P3.3,DLY_H2_L4 ;KEY ON HANG2 AND LIE4 WAS PRESSED?
JUG6:MOV P3,#0FH
JNB P3.0,DLY_H3_L1 ;KEY ON HANG3 AND LIE1 WAS PRESSED?
JNB P3.1,DLY_H3_L2 ;KEY ON HANG3 AND LIE2 WAS PRESSED?
JNB P3.2,DLY_H3_L3 ;KEY ON HANG3 AND LIE3 WAS PRESSED?
JNB P3.3,DLY_H3_L4 ;KEY ON HANG3 AND LIE4 WAS PRESSED?
JUG7:MOV P3,#0FH
JNB P3.0,DLY_H4_L1 ;KEY ON HANG4 AND LIE1 WAS PRESSED?
JNB P3.1,DLY_H4_L2 ;KEY ON HANG4 AND LIE2 WAS PRESSED?
JNB P3.2,DLY_H4_L3 ;KEY ON HANG4 AND LIE3 WAS PRESSED?
JNB P3.3,DLY_H4_L4 ;KEY ON HANG4 AND LIE4 WAS PRESSED?
AJMP JUMP_OUT
DLY_H1_L1:LCALL DLY500MS
JNB P3.0,KEY_0A
AJMP JUMP_OUT
DLY_H1_L2:LCALL DLY500MS
JNB P3.1,KEY_1A
AJMP JUMP_OUT
DLY_H1_L3:LCALL DLY500MS
JNB P3.2,KEY_2A
AJMP JUMP_OUT
DLY_H1_L4:LCALL DLY500MS
JNB P3.3,KEY_3A
AJMP JUMP_OUT
DLY_H2_L1:LCALL DLY500MS
JNB P3.0,KEY_4A
AJMP JUMP_OUT
DLY_H2_L2:LCALL DLY500MS
JNB P3.1,KEY_5A
AJMP JUMP_OUT
DLY_H2_L3:LCALL DLY500MS
JNB P3.2,KEY_6A
AJMP JUMP_OUT
DLY_H2_L4:LCALL DLY500MS
JNB P3.3,KEY_7A
AJMP JUMP_OUT
DLY_H3_L1:LCALL DLY500MS
JNB P3.0,KEY_8A
AJMP JUMP_OUT
DLY_H3_L2:LCALL DLY500MS
JNB P3.1,KEY_9A
AJMP JUMP_OUT
DLY_H3_L3:LCALL DLY500MS
JNB P3.2,KEY_AA
AJMP JUMP_OUT
DLY_H3_L4:LCALL DLY500MS
JNB P3.3,KEY_BA
AJMP JUMP_OUT
DLY_H4_L1:LCALL DLY500MS
JNB P3.0,KEY_CA
AJMP JUMP_OUT
DLY_H4_L2:LCALL DLY500MS
JNB P3.1,KEY_DA
AJMP JUMP_OUT
DLY_H4_L3:LCALL DLY500MS
JNB P3.2,KEY_EA
AJMP JUMP_OUT
DLY_H4_L4:LCALL DLY500MS
JNB P3.3,KEY_FA
AJMP JUMP_OUT
KEY_0A:AJMP KEY_0
KEY_1A:AJMP KEY_1
KEY_2A:AJMP KEY_2
KEY_3A:AJMP KEY_3
KEY_4A:AJMP KEY_4
KEY_5A:AJMP KEY_5
KEY_6A:AJMP KEY_6
KEY_7A:AJMP KEY_7
KEY_8A:AJMP KEY_8
KEY_9A:AJMP KEY_9
KEY_AA:AJMP KEY_A
KEY_BA:AJMP KEY_B
KEY_CA:AJMP KEY_C
KEY_DA:AJMP KEY_D
KEY_EA:AJMP KEY_E
KEY_FA:AJMP KEY_F
KEY_0:CLR TR0
MOV @R1,#00H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_1:CLR TR0
MOV @R1,#01H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_2:CLR TR0
MOV @R1,#02H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_3:CLR TR0
MOV @R1,#03H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_4:CLR TR0
MOV @R1,#04H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_5:CLR TR0
MOV @R1,#05H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_6:CLR TR0
MOV @R1,#06H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_7:CLR TR0
MOV @R1,#07H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_8:CLR TR0
MOV @R1,#08H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_9:CLR TR0
MOV @R1,#09H
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_A:CLR TR0
MOV @R1,#0AH
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_B:CLR TR0
MOV @R1,#0BH
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_C:CLR TR0
MOV @R1,#0CH
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_D:CLR TR0
MOV @R1,#0DH
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_E:CLR TR0
MOV @R1,#0EH
ACALL SUB_ADDRESS
AJMP JUMP_OUT
KEY_F:CLR TR0
MOV @R1,#0FH
ACALL SUB_ADDRESS
JUMP_OUT:RET
;*************************************************************
COM:JNB P1.4,COM_IC
AJMP JUDGE
COM_IC:LCALL COMPARE_SUB
AJMP JUDGE
COMPARE_SUB:CLR TR0
SET_SE_ADDRESS:INC 67H
MOV A,67H
CLR C
SUBB A,#01H
JZ SET_S_ADDRESS
MOV A,67H
CLR C
SUBB A,#02H
JZ SET_E_ADDRESS
MOV 67H,#00H
AJMP OUT_COM
SET_S_ADDRESS:LCALL SET_ADDRESS
MOV 68H,R4
MOV 69H,62H
SETB TR0
LCALL DLY1S
MOV 32H,#00H
AJMP OUT_COM
SET_E_ADDRESS:MOV 67H,#00H
MOV 70H,#00H
CLR P2.7
LCALL DLY1S
SETB P2.7
LCALL SET_ADDRESS
MOV 6AH,R4
MOV 6BH,62H
MOV 62H,69H
MOV R5,68H
LCALL CAI_ADDRESS
MOV A,6BH
CLR C
SUBB A,69H
MOV 6DH,A
CLR C
SUBB A,#01H
MOV 6EH,A
MOV A,6DH
COMPARE_CHA:CJNE A,#00H,GO_ON_COM
CHA_0:LCALL MODE1
LCALL COMPARE
MOV R5,64H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -