📄 ick.asm
字号:
LCALL CAI_ADDRESS
LCALL LED_ON
AJMP OUT_COM
GO_ON_COM:CJNE A,#01H,REST_COM
CHA_1:LCALL MODE2
LCALL COMPARE
MOV 60H,#00H
MOV 61H,#00H
MOV 70H,#00H
INC 62H
LCALL MODE4
LCALL COMPARE
MOV R5,64H
LCALL CAI_ADDRESS
LCALL LED_ON
AJMP OUT_COM
REST_COM:LCALL MODE2
LCALL COMPARE
LOOP_COM:MOV 60H,#00H
MOV 61H,#00H
MOV 70H,#00H
INC 62H
LCALL MODE3
LCALL COMPARE
DJNZ 6EH,LOOP_COM
MOV 60H,#00H
MOV 61H,#00H
MOV 70H,#00H
INC 62H
LCALL MODE4
LCALL COMPARE
MOV R5,64H
LCALL CAI_ADDRESS
LCALL LED_ON
OUT_COM:MOV 32H,#00H
SETB TR0
RET
;*************************************************************
COMPARE:LCALL SET_ADDRESS
MOV 64H,R4
COMPARE_IC:LCALL READ_IC1
LCALL READ_IC2
MOV A,65H
CJNE A,66H,ALARM1
GO_ON_COMPARE:MOV A,6CH
CLR C
SUBB A,70H
JNZ COMPARE_IC0
SJMP OUT0
COMPARE_IC0:INC 70H
INC 64H
SJMP COMPARE_IC
ALARM1:LCALL ALARM0
SJMP GO_ON_COMPARE
OUT0:RET
;*************************************************************
READ_IC:LCALL READ_SUB
AJMP JUDGE
READ_SUB:SETB TR0
LCALL SET_ADDRESS
MOV 64H,R4
JUDGE_IC_TYPE:LCALL SET_MUL
LCALL COMM_READ_PRG
OUT_READ:RET
;*************************************************************
SUB_ADDRESS:INC 32H
MOV A,32H
CJNE A,#01H,JUGDE1
CLIK1:MOV 60H,@R1
MOV R0,#60H
MOV 51H,#03H
INC R1
MOV 61H,#10H
MOV 62H,#11H
SETB TR0
AJMP OUT1
JUGDE1:MOV A,32H
CJNE A,#02H,JUGDE2
CLIK2:MOV 61H,60H
MOV 60H,@R1
MOV R0,#61H
MOV 51H,#04H
INC R1
MOV 62H,#10H
SETB TR0
AJMP OUT1
JUGDE2:MOV A,32H
CJNE A,#03H,JUGDE3
CLIK3:MOV 62H,61H
MOV 61H,60H
MOV 60H,@R1
MOV R0,#62H
MOV 51H,#05H
DEC R1
DEC R1
SETB TR0
AJMP OUT1
JUGDE3:MOV 32H,#00H
AJMP SUB_ADDRESS
OUT1:RET
;*************************************************************
SET_ADDRESS:MOV A,61H
SWAP A
MOV @R1,60H
XCHD A,@R1
MOV R4,A
RET
;*************************************************************
MODE1:MOV R6,68H
MOV R7,6AH
LCALL SET_CHA
LCALL SET_MUL
RET
;*************************************************************
MODE2:MOV R6,68H
MOV R7,#0FFH
LCALL SET_CHA
LCALL SET_MUL
RET
;*************************************************************
MODE3:MOV R6,#00H
MOV R7,#0FFH
LCALL SET_CHA
LCALL SET_MUL
RET
;*************************************************************
MODE4:MOV R6,#00H
MOV R7,6AH
LCALL SET_CHA
LCALL SET_MUL
RET
;*************************************************************
LED_ON:MOV 43H,#02H
LED:CLR P2.6
LCALL DLY2S
DJNZ 43H,LED
RET
;*************************************************************
CAI_ADDRESS:MOV A,R5
ANL A,#0FH
MOV 60H,A
MOV A,R5
SWAP A
ANL A,#0FH
MOV 61H,A
RET
;*************************************************************
SET_CHA:MOV A,R7
CLR C
SUBB A,R6
MOV 6CH,A
RET
;*************************************************************
SET_MUL:MOV A,62H
ADD A,62H
ADD A,#0A0H
MOV R2,A
ADD A,#01H
MOV R3,A
RET
;*************************************************************
ALARM0:MOV 43H,#02H
AL:CLR P2.7
MOV R5,64H
LCALL CAI_ADDRESS
MOV A,65H
ANL A,#0FH
MOV 5EH,A
MOV A,65H
SWAP A
ANL A,#0FH
MOV 5FH,A
SETB TR0
LCALL DLY2S
CLR TR0
MOV A,66H
ANL A,#0FH
MOV 5EH,A
MOV A,66H
SWAP A
ANL A,#0FH
MOV 5FH,A
SETB TR0
LCALL DLY2S
DJNZ 43H,AL
CLR TR0
RET
;*************************************************************
ITOP:PUSH ACC
PUSH SP
PUSH P3
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV A,@R0
DEC R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
MOV P2,50H
MOV A,50H
RR A
MOV 50H,A
DJNZ 51H,EXIT
MOV R0,#63H
MOV 50H,#0DFH
MOV 51H,#06H
EXIT:POP P3
POP SP
POP ACC
RETI
;*************************************************************
COMM_READ_PRG:LCALL ST
MOV A,R2
LCALL WRBYT2
LCALL PULS
MOV A,64H
LCALL WRBYT2
LCALL PULS
LCALL ST
MOV A,R3
LCALL WRBYT2
LCALL PULS
LCALL RDBYT2
LCALL STOP
LOW_BYTE:MOV A,65H
ANL A,#0FH
MOV 5EH,A
HIGH_BYTE:MOV A,65H
ANL A,#0F0H
SWAP A
MOV 5FH,A
RET
;*************************************************************
READ_IC1:LCALL ST
MOV A,R2
LCALL WRBYT1
LCALL PULS
MOV A,64H
LCALL WRBYT1
LCALL PULS
LCALL ST
MOV A,R3
LCALL WRBYT1
LCALL PULS
LCALL RDBYT1
LCALL PULS
LCALL STOP
RET
;************************************************************
READ_IC2:LCALL ST
MOV A,R2
LCALL WRBYT2
LCALL PULS
MOV A,64H
LCALL WRBYT2
LCALL PULS
LCALL ST
MOV A,R3
LCALL WRBYT2
LCALL PULS
LCALL RDBYT2
LCALL PULS
LCALL STOP
RET
;*************************************************************
ST:SETB P1.1
SETB P1.2
SETB P1.0
NOP
NOP
CLR P1.1
CLR P1.2
NOP
NOP
CLR P1.0
RET
WRBYT1:MOV 54H,#08H
RLC A
WLP1:MOV P1.1,C
RLC A
NOP
NOP
SETB P1.0
NOP
NOP
CLR P1.0
DJNZ 54H,WLP1
RET
WRBYT2:MOV 54H,#08H
RLC A
WLP2:MOV P1.2,C
RLC A
NOP
NOP
SETB P1.0
NOP
NOP
CLR P1.0
DJNZ 54H,WLP2
RET
CACK:SETB P1.2
SETB P1.0
CLR F0
MOV A,P1
JNB ACC.2,CEND
SETB F0
CEND:CLR P1.0
NOP
NOP
RET
RDBYT1:MOV 54H,#08H
RLP:CLR P1.0
NOP
NOP
MOV C,P1.1
RLC A
MOV 66H,A
SETB P1.0
DJNZ 54H,RLP
RET
RDBYT2:MOV 54H,#08H
RLP1:CLR P1.0
NOP
NOP
MOV C,P1.2
RLC A
MOV 65H,A
SETB P1.0
DJNZ 54H,RLP1
RET
STOP:CLR P1.1
CLR P1.2
SETB P1.0
NOP
NOP
SETB P1.1
SETB P1.2
NOP
NOP
CLR P1.0
RET
PULS:SETB P1.0
NOP
NOP
CLR P1.0
RET
;*************************************************************
DLY1S:MOV 42H,#10H
EDLM:MOV 41H,#64H
EDLN:MOV 40H,#0F9H
EDLP:DJNZ 40H,EDLP
DJNZ 41H,EDLN
DJNZ 42H,EDLM
RET
DLY2S:MOV 42H,#30H
DLM:MOV 41H,#64H
DLN:MOV 40H,#0F9H
DLP:DJNZ 40H,DLP
DJNZ 41H,DLN
DJNZ 42H,DLM
RET
DLY20MS:MOV 41H,#14H
BDLM:MOV 40H,#0F9H
BDLN:DJNZ 40H,BDLN
DJNZ 41H,BDLM
RET
DLY100MS:MOV 42H,#01H
CDLM:MOV 41H,#64H
CDLN:MOV 40H,#0F9H
CDLP:DJNZ 40H,CDLP
DJNZ 41H,CDLN
DJNZ 42H,CDLM
RET
DLY500MS:MOV 42H,#05H
ADLM:MOV 41H,#64H
ADLN:MOV 40H,#0F9H
ADLP:DJNZ 40H,ADLP
DJNZ 41H,ADLN
DJNZ 42H,ADLM
RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,0F7H,0FFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -