📄 shuzizhong.asm
字号:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;P1 数码管段码
;;;P2 0-5数码管位码
;;;p3 2\3按键
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CHING BIT 20H
KEY1 BIT 21H
KEY2 BIT 22H
ALEREN BIT 23H
ALER BIT 24H
SECOND BIT 25H
RE BIT 26H
DSEG AT 30H
BUF: DS 3 ;时间值
BUFT: DS 6 ;转化后的时间值
ALERM: DS 2
ALERMT: DS 4
SBUFT: DS 6
CSEG AT 000H
LJMP MAIN
CSEG AT 0003H
JMP XINT0
CSEG AT 0BH
JMP INTT0
CSEG AT 0013H
JMP XINT1
CSEG AT 0100H
MAIN:
MOV R0,#ALERM
MOV R1,#6
VV: MOV @R0,#0
INC R0
DJNZ R1,VV
CLR ALER
CLR ALEREN
MOV R7,#0
CLR KEY1
CLR KEY2
CLR IT0
CLR IT1
SETB EX0
SETB EX1
CLR CHING
MOV R0,#BUF
MOV @R0,#0
INC R0
MOV @R0,#0
INC R0
MOV @R0,#0
MOV TH0,#0D8H
MOV TL0,#0F0H
MOV TMOD,#1H
SETB ET0
SETB PT0
SETB EA
SETB TR0
MOV P0,#7FH
RESTA:
JNB ALER,NEXT55
CALL DIDI
NEXT55:
CALL DIS
JNB KEY1,NEXT4
JNB P3.2,RESTA
CLR KEY1
SETB EX0
SETB EX1
JNB ALER,NN
CLR ALER
CLR ALEREN
NN: JMP CASE1
NEXT4:
JNB KEY2,RESTA
JNB P3.3,RESTA
CLR KEY2
SETB EX1
MOV B,#100
REDIS:
MOV R0,#ALERMT
MOV R2,#4
MOV A,#0FEH
CALL LOOP
MOV P2,A
MOV P1,0C7H
CALL DELAY
MOV A,P2
ORL A,#0C0H
RL A
MOV P2,A
MOV P1,#88H
CALL DELAY
CALL KEYSCAN00
DJNZ B,REDIS
CLR KEY2
SETB EX0
SETB EX1
JMP RESTA
KEYSCAN00:
JNB KEY2,KK
JNB P3.3,KK
CLR KEY2
SETB EX1
MOV R0,#SBUFT
MOV A,#6
NEXT92:
MOV @R0,#0
INC R0
DJNZ ACC,NEXT92
POP ACC
POP ACC
CLR KEY2
SETB EX0
SETB EX1
NEXT91:
CALL KEYSCAN01
MOV R0,#SBUFT
MOV R2,#6
MOV A,#0FEH
CALL LOOP
JMP NEXT91
KK: RET
KEYSCAN01:
JNB KEY2,NEXT95
JNB P3.3,NEXT95
CPL SECOND
CLR RE
CLR KEY2
SETB EX0
SETB EX1
NEXT95:
JNB KEY1,NEXT93
JNB P3.2,NEXT93
CLR KEY1
SETB EX0
SETB EX1
CLR SECOND
JB RE,BACK
MOV R0,#SBUFT
MOV A,#6
NEXT94:
SETB RE
MOV @R0,#0
INC R0
DJNZ ACC,NEXT94
NEXT93:
RET
BACK:
MOV SP,#07H
JMP RESTA
CASE1:
RES: MOV B,#100
RESHO:
JB ALEREN,ON
MOV P2,#0FEH
MOV P1,#8EH
CALL DELAY
SETB P2.0
CLR P2.1
MOV P1,#8EH
CALL DELAY
SETB P2.1
CLR P2.2
MOV P1,#0C0H
CALL DELAY
SETB P2.2
JMP AL
ON:
MOV P2,#0FEH
MOV P1,#0C8H
CALL DELAY
SETB P2.0
CLR P2.1
MOV P1,#0C0H
CALL DELAY
SETB P2.1
AL:
CLR P2.4
MOV P1,#0C7H
CALL DELAY
SETB P2.4
CLR P2.5
MOV P1,#88H
CALL DELAY
JNB KEY1,NEXT5
JNB P3.2,RES
CLR KEY1
JMP CASE2
NEXT5:
JNB KEY2,NEXT6
JNB P3.3,RES
CLR KEY2
CPL ALEREN
SETB EX0
SETB EX1
JMP CASE1
NEXT6:
DJNZ B,RESHO
JMP RESTA
CASE2:
SETB EX0
SETB EX1
LL: MOV R6,#20
MOV R7,#30
NEXT7:
CALL SCANKEY
CALL DIS
DJNZ R6,NEXT7
NEXT9:
CALL SCANKEY
JNB CHING,NEXT8
CALL TRASS
NEXT8:
MOV R0,#BUFT
MOV R2,#4
MOV A,#0FEH
CALL LOOP
DJNZ R7,NEXT9
JMP LL
SCANKEY:
JNB KEY1,NEXT10
JNB P3.2,XZ
CLR KEY1
POP ACC
POP ACC
JMP CASE3
NEXT10:
JNB KEY2,XZ
JNB P3.3,XZ
CLR KEY2
SETB EX0
SETB EX1
MOV A,#BUF
ADD A,#2
MOV R0,A
MOV A,@R0
INC A
CJNE A,#24,NEXT11
MOV A,#0
NEXT11:
MOV @R0,A
SETB CHING
XZ: RET
CASE3:
SETB EX0
SETB EX1
NEXT12:
MOV R6,#20
MOV R7,#30
NEXT14:
CALL SCANKEY1
CALL DIS
DJNZ R6,NEXT14
NEXT16:
CALL SCANKEY1
JNB CHING,NEXT15
CALL TRASS
NEXT15:
MOV R0,#BUFT
MOV R2,#2
MOV A,#0FEH
CALL LOOP
INC R0
INC R0
MOV R2,#2
MOV A,#0EFH
CALL LOOP
DJNZ R7,NEXT16
JMP CASE3
SCANKEY1:
JNB KEY1,NEXT13
JNB P3.2,XY
CLR KEY1
POP ACC
POP ACC
SETB EX0
SETB EX1
JMP CASE4
NEXT13:
JNB KEY2,XY
JNB P3.3,XY
CLR KEY2
SETB EX0
SETB EX1
MOV A,#BUF
INC A
MOV R0,A
MOV A,@R0
INC A
CJNE A,#60,NEXT17
MOV A,#0
NEXT17:
MOV @R0,A
SETB CHING
XY: RET
CASE4:
SETB EX0
SETB EX1
DD: CALL KEYSCAN2
CALL TRASAL
MOV R6,#20
MOV R7,#30
BB: MOV R0,#ALERMT
MOV R2,#4
MOV A,#0FEH
CALL LOOP
MOV P2,A
MOV P1,0C7H
CALL DELAY
MOV A,P2
ORL A,#0C0H
RL A
MOV P2,A
MOV P1,#88H
CALL DELAY
DJNZ R6,BB
CC: MOV R0,#ALERMT
MOV R2,#2
MOV A,#0FEH
CALL LOOP
SETB P2.1
CLR P2.4
MOV P1,0C7H
CALL DELAY
SETB P2.4
CLR P2.5
MOV P1,#88H
CALL DELAY
DJNZ R7,CC
JMP DD
KEYSCAN2:
JNB KEY1,NEXT20
JNB P3.2,ZZ
CLR KEY1
POP ACC
POP ACC
JMP CASE5
NEXT20:
JNB KEY2,ZZ
JNB P3.3,ZZ
CLR KEY2
SETB EX0
SETB EX1
MOV A,#ALERM
INC A
MOV R0,A
MOV A,@R0
INC A
CJNE A,#24,NEXT21
MOV A,#0
NEXT21:
MOV @R0,A
ZZ: RET
TRASAL:
MOV R0,#ALERM
MOV A,@R0
MOV B,#10
DIV AB
MOV R1,#ALERMT
MOV @R1,B
INC R1
MOV @R1,A
INC R0
MOV A,@R0
MOV B,#10
DIV AB
INC R1
MOV @R1,B
INC R1
MOV @R1,A
RET
CASE5:
SETB EX0
SETB EX1
EE: CALL KEYSCAN3
CALL TRASAL
MOV R6,#20
MOV R7,#30
FF: MOV R0,#ALERMT
MOV R2,#4
MOV A,#0FEH
CALL LOOP
MOV P2,A
MOV P1,0C7H
CALL DELAY
MOV A,P2
ORL A,#0C0H
RL A
MOV P2,A
MOV P1,#88H
CALL DELAY
DJNZ R6,FF
GG: MOV R0,#ALERMT
INC R0
INC R0
MOV R2,#2
MOV A,#0FBH
CALL LOOP
SETB P2.3
CLR P2.4
MOV P1,0C7H
CALL DELAY
SETB P2.4
CLR P2.5
MOV P1,#88H
CALL DELAY
DJNZ R7,GG
JMP EE
KEYSCAN3:
JNB KEY1,NEXT30
JNB P3.2,QQ
CLR KEY1
SETB EX0
SETB EX1
POP ACC
POP ACC
JMP RESTA
NEXT30:
JNB KEY2,QQ
JNB P3.3,QQ
CLR KEY2
SETB EX0
SETB EX1
MOV A,#ALERM
MOV R0,A
MOV A,@R0
INC A
CJNE A,#60,NEXT31
MOV A,#0
NEXT31:
MOV @R0,A
QQ: RET
INCOS:
MOV R0,#BUF
MOV A,@R0
INC A
CJNE A,#60,NEXT2
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#60,NEXT2
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#24,NEXT2
MOV A,#0
NEXT2:
MOV @R0,A
RET
TRASS:
CLR CHING
MOV R0,#BUF
MOV A,@R0
MOV B,#10
DIV AB
MOV R1,#BUFT
MOV @R1,B
INC R1
MOV @R1,A
INC R0
MOV A,@R0
MOV B,#10
DIV AB
INC R1
MOV @R1,B
INC R1
MOV @R1,A
INC R0
MOV A,@R0
MOV B,#10
DIV AB
INC R1
MOV @R1,B
INC R1
MOV @R1,A
JB CHING,TRASS
RET
DIS:
JNB CHING,NEXT3
CALL TRASS
NEXT3:
MOV R0,#BUFT
MOV R2,#6
MOV A,#0FEH
LOOP:
MOV P2,A
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
CALL DELAY
MOV A,P2
ORL A,#0C0H
RL A
INC R0
DJNZ R2,LOOP
RET
DELAY:
MOV R4,#0
DELAY1: MOV R5,#5
DJNZ R5,$
DJNZ R4,DELAY1
RET
INTT0:
PUSH ACC
MOV A,R0
PUSH ACC
CLR EA
CLR TR0
MOV TH0,#0D8H
MOV TL0,#0F0H
SETB EA
SETB TR0
JNB SECOND,PP
CALL INC10MS
PP: INC R3
CJNE R3,#100,NEXT1
MOV R3,#0
SETB CHING
CPL P0.7
CPL P0.6
CALL INCOS
JNB ALEREN,NEXT1
CALL CPAM
NEXT1:
POP ACC
MOV R0,ACC
POP ACC
RETI
INC10MS:
MOV R0,#SBUFT
MOV A,@R0
INC A
CJNE A,#10,NEXT90
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#10,NEXT90
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#10,NEXT90
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#6,NEXT90
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#10,NEXT90
MOV @R0,#0
INC R0
MOV A,@R0
INC A
CJNE A,#10,NEXT90
MOV @R0,#0
NEXT90:
MOV @R0,A
RET
XINT0:
CLR EX0
CLR EX1
SETB KEY1
RETI
XINT1:
CLR EX0
CLR EX1
SETB KEY2
RETI
CPAM:
MOV R0,#ALERM
INC R0
MOV A,@R0
CJNE A,32H,NEXT41
DEC R0
MOV A,@R0
CJNE A,31H,NEXT41
SETB ALER
NEXT41:
RET
DIDI:
CLR P0.0
CALL DELAY
SETB P0.0
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -