📄 ok.asm
字号:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP FA
ORG 0100H
MAIN:
SETB P3.7
setb P3.6
MOV R1,#00H
MOV R2,#00H
MOV R3,#0H
MOV R4,#0H
MOV R5,#0H
MOV R6,#0H
MOV R7,#0H
MOV 10H,#2
MOV P1,#11111101B
MOV TMOD,#01H
MOV TH0,R1
MOV TL0,R2
SETB EA
SETB ET0
SETB TR0
START:
SETB EA
LCALL DELAY
CLR EA
LCALL KEY
LCALL DISPLAY
LCALL FUZI
LJMP START
KEY:
L3:MOV A,#0F7H
MOV R3,#0H
MOV R4,#0H
L2:RL A
MOV R6,A
MOV P0,A
MOV A,P0
MOV 0F0H,R6
CJNE A,0F0H,L1
INC R4
CJNE R4,#4H,L2
MOV R4,#0H
JMP L3
L1:MOV R5,#0H
MOV R6,A
L5: ANL A,#01H
CJNE A,#1H,L4
MOV A,R6
RR A
MOV R6,A
INC R5
JMP L5
L4:MOV A,#4H
MOV B,R4
MUL AB
ADD A,R5
MOV R4,A
RET
FUZI:
CJNE R4,#4,NEXT03
MOV 10H,#3
NEXT03:CJNE R4,#8,NEXT02
MOV 10H,#2
NEXT02:CJNE R4,#14,NEXT01
MOV 10H,#1
NEXT01:
MOV A,10H
CJNE A,#1,NEXT1
MOV DPTR,#TAB1
NEXT1:CJNE A,#2,NEXT2
MOV DPTR,#TAB2
NEXT2:CJNE A,#3,NEXT3
MOV DPTR,#TAB3
NEXT3:
MOV A,R4
MOV R3,A
RL A
MOVC A,@A+DPTR
MOV R1,A
MOV A,R4
RL A
INC A
MOVC A,@A+DPTR
MOV R2,A
RET
FA:
MOV TH0,R1
MOV TL0,R2
CPL P3.7
CPL P3.6
RETI
DELAY:
MOV R6,#187
LP1:MOV R5,#248
DJNZ R5,$
DJNZ R6,LP1
RET
DISPLAY:
MOV A,R4
MOV DPTR,#TABLE2
MOVC A,@A+DPTR
MOV P1,A
RET
TABLE2:
DB 0DH,25H,9FH,1FH ;.3,.2,.1,7
DB 0DH,41H,49H,99H ;.3,6,5,4
DB 1FH,0DH,25H,9FH ;7.,3,2,1
DB 1FH,41H,49H,49H ;7.,6.,5.,5.
TAB1: ;低音
DW 64777,64684,64580,64524 ;3,2,1,7。
DW 65536,64400,64260,64103 ;3.,6.,5.,4.
DW 65536,64021,63853,63628 ;7,3.,2.,1.
DW 63511,63263,65536,62984 ;7,6.,5.,5.
TAB2:
DW 65157,65110,65058,65030 ;.3,.2,.1,7
DW 65536,64968,64898,64820 ;.3,6,5,4
DW 65536,64777,64684,64580 ;7.,3,2,1
DW 64524,64400,65536,64260 ;7.,6.,5.,5.
TAB3: ;高音
DW 65157,65110,65058,65283 ;.3,.2,.1,7
DW 65536,65252,65217,65178 ;.3,6,5,4
DW 65536,65157,65110,65058 ;7.,3,2,1
DW 65030,64968,65536,64898 ;7.,6.,5.,5.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -