📄 sx.asm
字号:
MOV KEY_SC,B
MOV ST1,#0
KEY_ZHSM_12: INC ST1
MOV A,ST1
CLR C
SUBB A,#SUANG_J_SJ*44
JC KEY_ZHSM_END
SETB KEY_YCL
LCALL KEY_ON_ON
LJMP KEY_ZHSM_END
KEY_ZHSM_21: MOV KEY_SC,#0
KEY_ZHSM_22: MOV A,KEY_SC
JZ KEY_ZHSM_25
DEC ST2
MOV A,ST2
ANL A,#07H
JNZ KEY_ZHSM_END
MOV A,ST1
CLR C
SUBB A,#KEY_BH_YS
JC KEY_ZHSM_24
JB KEY_YCL,KEY_ZHSM_24
LCALL KEY_ON
KEY_ZHSM_24: MOV KEY_SC,#0
KEY_ZHSM_25: CLR KEY_YCL
KEY_ZHSM_END: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SJ_BM_END: SETB ERROR
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SJ_BM_ERROR: LCALL DU_MIMA ;可能为死循环
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SJ_BM: MOV A,DQ_SJ_H ;入口为MIMA11-MIMA15
JZ SJ_BM_END
CLR C
MOV A,MIMA11
SUBB A,MIMA13
JNZ SJ_BM_ERROR
CLR C
MOV A,MIMA12
SUBB A,MIMA14
JNZ SJ_BM_ERROR
;;;;;;;;;;;;;;
MOV R0,#MIMA1 ;R0,R1,R4,R6,R7,A
MOV R1,#MIMA13
MOV R6,#3
SJ_BM2: MOV R7,#8
MOV A,@R1
INC R1
MOV R4,A
SJ_BM1: MOV A,R4
RLC A
MOV R4,A
JC SJ_LX2
;01为悬空 悬空为0110 11为高电平 高电平为1010 00为低电平 低电平为0101
;0 短时间长时间 1 长时间短时间
MOV A,#1
MOV @R0,A
INC R0
MOV A,#3H
MOV @R0,A
INC R0
AJMP SJ_LX_END
SJ_LX2: MOV A,#3H
MOV @R0,A
INC R0
MOV A,#1
MOV @R0,A
INC R0
SJ_LX_END: DJNZ R7,SJ_BM1
DJNZ R6,SJ_BM2
MOV A,#01H
MOV @R0,A
INC R0
MOV A,#31
MOV @R0,A
MOV SJ_DZ,#6
MOV YS_1,#32H
MOV YS_2,#FXCS
SETB YS_FX
CLR ET1
MOV P2,#0
SETB ET0
CLR TF0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;DH-DL-MH-ML
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DU_MIMA: MOV DPTR,#MIMA_TAB ;查找地址00H(数据底) 0FFH 数据空
DU_MIMA_1: CLR A
MOVC A,@A+DPTR
INC DPTR
JNZ DU_MIMA_W1
CLR A
MOVC A,@A+DPTR
JZ DU_MIMA_W
CLR A
DU_MIMA_W1: CLR C
SUBB A,MIMA_DPH
JNZ DU_MIMA_5
CLR A
MOVC A,@A+DPTR
CLR C
SUBB A,MIMA_DPL
JNZ DU_MIMA_5
NOP
LJMP DU_MIMA_Y
NOP
DU_MIMA_5: MOV A,DPH
CLR C
SUBB A,#1FH
JNC DU_MIMA_W
INC DPTR
INC DPTR
INC DPTR
NOP
LJMP DU_MIMA_1
;;;;;;;;;;;;;;;;;;;;;;;;
DU_MIMA_W: MOV MIMA11,#00H ;没找到
MOV MIMA12,#00H
MOV MIMA13,#00H
MOV MIMA14,#00H
MOV K_SJ_L,#0
MOV K_SJ_H,#0
MOV DQ_SJ_L,#0
MOV DQ_SJ_H,#0
RET
;;;;;;;;;;;;;;;;;;;;;;
DU_MIMA_Y: MOV K_SJ_L,DPL
DEC K_SJ_L
MOV K_SJ_H,DPH
INC DPTR ;解码
CLR A
MOVC A,@A+DPTR
MOV DQ_SJ_H,A
INC DPTR
CLR A
MOVC A,@A+DPTR
MOV DQ_SJ_L,A
;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV DPTR,#J_M_TAB
SWAP A
ANL A,#0FH
JZ DU_MIMA_W
MOVC A,@A+DPTR
MOV MIMA11,A
MOV A,DQ_SJ_L
ANL A,#0FH
JZ DU_MIMA_W
MOVC A,@A+DPTR
SWAP A
ORL A,MIMA11
MOV MIMA11,A
MOV MIMA13,A
MOV A,DQ_SJ_H
SWAP A
ANL A,#0FH
JZ DU_MIMA_W
MOVC A,@A+DPTR
MOV MIMA14,A
MOV A,DQ_SJ_H
ANL A,#0FH
JZ DU_MIMA_W
MOVC A,@A+DPTR
SWAP A
ORL A,MIMA14
MOV MIMA14,A
MOV MIMA12,A
;J_M1: MOV DPTR,#J_M_TAB
; ANL A,#0FH
; JZ DU_MIMA_W
; MOVC A,@A+DPTR
; MOV MIMA14,A
; MOV A,DQ_SJ_L
; SWAP A
; ANL A,#0FH
; JZ DU_MIMA_W
; MOVC A,@A+DPTR
; SWAP A
; ORL A,MIMA14
; MOV MIMA14,A
; MOV MIMA12,A
; MOV A,DQ_SJ_H
; ANL A,#0FH
; JZ DU_MIMA_W
; MOVC A,@A+DPTR
; MOV MIMA11,A
; MOV A,DQ_SJ_H
; SWAP A
; ANL A,#0FH
; JZ DU_MIMA_W
; MOVC A,@A+DPTR
; SWAP A
; ORL A,MIMA11
; MOV MIMA11,A
; MOV MIMA13,A
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;MI1 EQU 3BH ;要显示的数据
;MI2 EQU 3CH
;MI3 EQU 3DH
;MI4 EQU 3EH
;MIMA_DPL EQU 47H ;地址
;MIMA_DPH EQU 48H
;DQ_SJ_L EQU 49H ;密码
;DQ_SJ_H EQU 4AH
;K_SJ_L EQU 4BH ;空数据的地址
;K_SJ_H EQU 4CH
WR_MIMA_QX: MOV A,K_SJ_L ;删除
ADD A,K_SJ_H
JZ WR_MIMA_QX1
MOV DPL,K_SJ_L
MOV DPH,K_SJ_H
MOV R6,#0FFH
MOV R5,#0FFH
MOV R4,#000H
MOV R3,#0FFH
LCALL PGM_USER
WR_MIMA_QX1: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WR_MIMA: MOV A,MI2
JZ WR_MIMA_QX
MOV A,MI4
JZ WR_MIMA_QX
MOV A,MI1
JZ WR_MIMA_QX
MOV A,MI3 ;写地址
JZ WR_MIMA_QX
SWAP A ;00H(数据底) 0FFH 数据空
ORL A,MI4
MOV DQ_SJ_L,A
MOV A,MI1
SWAP A
ORL A,MI2
MOV DQ_SJ_H,A
MOV DPTR,#MIMA_DZ_TAB
MOV R6,#0
MOV R7,#0
WR_MIMA_1: CLR A
MOVC A,@A+DPTR ;高位
INC DPTR
JZ WR_MIMA_2
CLR C
SUBB A,DQ_SJ_H
JNZ WR_MIMA_5
CLR A
MOVC A,@A+DPTR
JZ WR_MIMA_22
CLR C
SUBB A,DQ_SJ_L
JNZ WR_MIMA_5
DEC DPL
DEC DPL
CLR A
MOVC A,@A+DPTR
MOV MIMA_DPL,A
DEC DPL
CLR A
MOVC A,@A+DPTR
MOV MIMA_DPH,A
MOV K_SJ_L,DPL
MOV K_SJ_H,DPH ;重码
LJMP WR_MIMA_END
WR_MIMA_2: CLR A
MOVC A,@A+DPTR ;低位
JZ WR_MIMA_3
WR_MIMA_22: MOV R6,DPH
MOV R7,DPL
WR_MIMA_5: MOV A,DPH
CLR C
SUBB A,#1FH
JNC WR_MIMA_3
INC DPTR
INC DPTR
INC DPTR
NOP
LJMP WR_MIMA_1
WR_MIMA_3: MOV A,K_SJ_L
ADD A,K_SJ_H
JNZ WR_MIMA_31
MOV A,R6
ADD A,R7
JZ WR_MIMA_33
MOV DPH,R6 ;在中间位置追加
MOV DPL,R7
WR_MIMA_33: DEC DPL ;在最后位置追加
DEC DPL
DEC DPL
AJMP WR_MIMA_32
WR_MIMA_31: MOV DPL,K_SJ_L ;修改
MOV DPH,K_SJ_H
WR_MIMA_32: MOV R6,MIMA_DPH
MOV R5,MIMA_DPL
MOV R4,DQ_SJ_H
MOV R3,DQ_SJ_L
LCALL PGM_USER
WR_MIMA_END: RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
PGM_USER: MOV R7,#3
CLR EA
PGM_USER2: NOP
MOV FMCON,#00H ;装载命令,清除页寄存器
MOV FMADRH,DPH ;写入高地址
MOV FMADRL,DPL ;写入低地址
MOV FMDATA,R6 ;MIMA_DPH
MOV FMDATA,R5 ;MIMA_DPL
MOV FMDATA,R4 ;DQ_SJ_H
MOV FMDATA,R3 ;DQ_SJ_L
MOV FMCON,#68H ;擦除和编程页
MOV A,FMCON ;读返回的状态
ANL A,#0FH
JNZ PGM_USER1
SETB EA
NOP
SETB EA
RET
PGM_USER1: DJNZ R7,PGM_USER2
SETB EA
NOP
SETB EA
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 6E0H
TAB_LED:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,79H,48H
; 0 1 2 3 4 5 6 7 8 9 E R
ORG 6F0H
J_M_TAB: ;0低 1空 2高
;DB 00H,00H,01H,03H,04H,05H,07H,0CH,0DH,0FH
;J_M_TAB1:
;DB 00H,00H,03H,01H,0CH,0FH,0DH,04H,07H,05H
DB 00H,00H,0CH,04H,03H,0FH,07H,01H,0DH,05H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 800H
MIMA_TAB:
DB 00H,00H
MIMA_DZ_TAB:
DB 00H,00H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -