📄 huibian.asm
字号:
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP INTPT
ORG 0013H
LJMP INTP0
ORG 0030H
MAIN:
MOV 49H,#09H
MOV 64H,#09H ;定时时间
MOV 65H,#70H ;数据区指针
MOV R1,#70H
MOV A,#09H
MOV R2,#04H
LCALL CHUSHI
MOV R1,#80H
MOV R2,#04H
LCALL CHUSHI
MOV R1,#90H
MOV R2,#04H
LCALL CHUSHI
MOV R1,#0A0H
MOV R2,#04H
LCALL CHUSHI
MOV R1,#73H
MOV A,#0
MOV R2,#04H
LCALL CHUSHI
MOV R1,#83H
MOV R2,#04H
LCALL CHUSHI
MOV R1,#93H
MOV R2,#04H
LCALL CHUSHI
MOV R1,#0A3H
MOV R2,#04H
LCALL CHUSHI
ANL TMOD,#0FH;定时器0工作在方式1
ORL TMOD,#01H
MOV TH0,#3CH;定时器初值设定
MOV TL0,#0B0H
CLR F0;清F0用户自定义标注为(用于按键中断)
SETB EA;开中断
SETB ET0;开定时器中断
SETB EX1;开INT1中断(按键4接的为外中断1)
SETB TR0;启动定时器
EXIT: LCALL KEY
LCALL CHANG
LCALL INPUT
LCALL DEAL
LCALL SHOW
LCALL BAOJ
LJMP EXIT
CHUSHI:
LP: MOV @R1,A
INC R1
DJNZ R2,LP
RET
INTP0: CPL F0
MOV A,64H
MOV 49H,A
RETI
INTPT: PUSH ACC
MOV A,R0
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#60H //定时时间
MOV A,@R0
INC A
CJNE A,#20,JX1
MOV A,0
INC R0
INC @R0
DEC R0
JX1: MOV @R0,A
POP ACC
MOV R0,A
POP ACC
RETI
KEY: MOV 4AH,#00H
MOV 49H,#00H
MOV 62H,#06H
MOV 63H,#4AH
MOV 65H,#70H
MOV R0,#48H
MOV R1,#73H
MOV R2,#4
CS1: MOV A,@R0
MOV @R1,A
DEC R0
DEC R1
DJNZ R2,CS1
MOV R0,#4AH
MOV R1,#73H
KEY1:
JNB F0,CTN1
LCALL SHOW
MOV A,P3
ANL A,#07H
CJNE A,#07H,CZ1
LJMP KEY1
CZ1: CALL DL1MS
MOV A,P3
ANL A,#07H
CJNE A,#07H,CZ2
LJMP KEY1
CZ2:
JNB ACC.0,K0
JNB ACC.1,K1
JNB ACC.2,K21
LJMP KEY1
K21: LJMP K2
CTN1: LJMP CTN
K0: MOV A,62H;存储正在设置的位数(1-6)
DEC A
CJNE A,#0,NEXT00
MOV A,#6
NEXT00: MOV 62H,A
MOV A,63H;当前正在设定的显示缓存区
DEC A
CJNE A,#44H,NEXT01
MOV A,#4AH
NEXT01: MOV 63H,A
LJMP KEY1
K1: MOV A,63H
CJNE A,4AH,STEP1
MOV R0,#4AH
MOV A,@R0
INC A
CJNE A,#04H,STEP11
MOV A,#00H
MOV @R0,A
MOV R1,#7FH
ANL 65H,#0FH
ANL 65H,#7FH
MOV R2,#4
MOV 49H,#00H
LCALL COPY
LJMP KEY1
STEP11: MOV @R0,A
CJNE A,#01H,CL2
MOV R1,#80H
ANL 65H,#0FH
ANL 65H,#8FH
MOV R2,#4
MOV 49H,00H
LCALL COPY
LJMP KEY1
CL2: CJNE A,#02H,CL3
MOV R1,#90H
ANL 65H,#0FH
ANL 65H,#9FH
MOV R2,#4
MOV 49H,00H
LCALL COPY
LJMP KEY1
CL3: CJNE A,#03H,CL4
MOV R1,#0A0H
ANL 65H,#0FH
ANL 65H,#0AFH
MOV R2,#4
MOV 49H,#00H
LCALL COPY
LJMP KEY1
CL4: MOV R1,#46H
MOV R2,#4
QING: MOV @R1,#00H
INC R1
DJNZ R2,QING
MOV R1,#64H
MOV 45H,@R1
MOV R1,#0B0H
ANL 65H,#0FH
ANL 65H,#0BFH
MOV @R1,45H
LJMP KEY1
STEP1: CJNE A,#49H,STEP2
MOV R0,#49H
MOV A,@R0
INC A
CJNE A,#02H,STEP22
MOV A,#00
MOV @R0,A
MOV R1,65H
MOV R2,#4
LCALL COPY
LJMP KEY1
STEP22: MOV @R0,A
MOV A,65H
ADD A,#4
MOV 65H,A
MOV R1,A
MOV R2,#4
LCALL COPY
LJMP KEY1
STEP2: MOV R0,A
MOV A,@R0
INC A
CJNE A,#0AH,STEP3
MOV A,#00H
STEP3: MOV @R0,A
MOV B,62H
DEC B
MOV A,65H
ADD A,B
MOV R1,A
MOV A,@R0
MOV @R1,A
LJMP KEY1
K2:
CTN: RET
COPY: MOV R0,#45H
MOV B,R0
MOV R3,B
COPY1: MOV B,@R1
MOV @R0,B
INC R0
INC R0
DJNZ R2,COPY1
MOV B,R3
MOV R0,B
RET
CHANG: MOV R0,#64H;(64H)存储设定的定时时间
MOV A,61H;(61H)存储当前的扫描时间
CLR C
SUBB A,@R0
JZ HL;判断是否到换路时间
LJMP JS
HL: MOV 61H,#0
MOV R0,#4AH
MOV A,@R0
INC A
CJNE A,#04H,C1
MOV A,#00H
C1: MOV @R0,A
SWAP A
MOV R2,A
MOV A,P2
ANL A,#0CFH
ADD A,R2
MOV P2,A
JS: CLR P2.6;清报警
CLR P2.7
RET
INPUT: MOV R0,#7CH
MOV R1,#30H
MOVX @R0,A
SETB P2.3
LOOP: JB P2.3,LOOP
INC R0
MOVX A,@R0
MOV @R1,A
DEC R1
INC R0
INC R0
MOVX A,@R0
ANL A,#0FH
MOV @R1,A
RET
DEAL: MOV R0,#30H //要转换的数空间
MOV R1,#40H //结果空间
MOV R2,#2 //转换位数
;MOV 30H,#0FFH//
;MOV 31H,#0FFH//
LCALL BCD
MOV R0,#45H
MOV R1,#40H
MOV R2,#2
ZH: MOV A,@R1
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,@R1
MOV B,#0FH
DIV AB
MOV @R0,A
INC R0
INC R1
DJNZ R2,ZH
RET
BCD: MOV A,R0
MOV R6,A
MOV A,R1
MOV R7,A
MOV A,R2
MOV R5,A
MOV B,#8
MUL AB
MOV R3,A
MOV R4,#02H
CHU: MOV @R1,#00H
INC R1
DJNZ R4,CHU
CS: MOV A,R6
MOV R0,A
MOV A,R7
MOV R1,A
MOV A,R5
MOV R2,A
YW: MOV A,@R0
RLC A
MOV @R0,A
INC R0
DJNZ R2,YW
MOV R4,#10H
JG: MOV A,@R1
ADDC A,@R1
DA A
MOV @R1,A
INC R1
DJNZ R4,JG
DJNZ R3,CS
RET
SHOW: MOV R0,#4AH //
MOV R2,#6 //
;MOV R1,#50H//C
AGAIN: LCALL XIANS
DJNZ R2,AGAIN
DEC R0
RET
XIANS: MOV B,R2
DEC B
MOV A,P2
;MOV A,@R1//C
ANL A,#0F8H
ADD A,B
MOV P2,A
;MOV @R1,A//C
;INC R1//C
MOV DPTR,#TAB
MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
;MOV @R1,A//C
;INC R1//C
LCALL DL1MS
RET
TAB: DB 0,0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DL1MS: MOV R7,#02H
DL1: MOV R6,#0FFH
DL2: DJNZ R6,DL2
DJNZ R7,DL1
RET
BAOJ: MOV R0,#4AH
MOV A,@R0
CJNE A,#00H,B1
MOV R1,#73H
LJMP BJ
B1: CJNE A,#01H,B2
MOV R1,#83H
LJMP BJ
B2: CJNE A,#02H,B3
MOV R1,#93H
LJMP BJ
B3: MOV R1,#0A3H
BJ: MOV R0,#48H
MOV R2,#4
CMP1: MOV A,@R0
CLR C
SUBB A,@R1
JC BJ0
DEC R0
DEC R1
DJNZ R2,CMP1
LJMP BJ1
BJ0: SETB P2.6
BJ1: MOV R0,#48H
MOV A,R1
ADD A,#47H
MOV R1,A
MOV R2,#4
CMP2: MOV A,@R1
CLR C
SUBB A,@R0
JC BJ1
DEC R0
DEC R1
DJNZ R2,CMP2
LJMP BJ3
BJ2: SETB P2.7
BJ3: RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -