📄 sorcem.asm
字号:
ORG 0000H
JMP START
ORG 0003H
JMP INT
ORG 000BH
INC 0020H
MOV TH0,#0D8H
MOV TL0,#0EFH
RETI ;10ms 中断,为拍定时,拍长RETI
org 30h
START:
MOV TH0,#0D8H
MOV TL0,#0EFH
SETB EA
SETB ET0
SETB EX0
SETB IT0
MOV TMOD,#01H
mov p1,00h
MOV P2,00H
MOV R1,00H
;;;;;;;;;;;;;;;;;;;;;;;MOV DPTR,#M2
;;;;;;;;;;;;;;;;;;;;;MOV 0022H,DPH
;;;;;;;;;;;;;;;;;;;;;MOV 0021H,DPL
;;;;;;;;;;;;;;;;;;;MOV DPTR,#M3
;;;;;;;;;;;;;;;;;;;;MOV 0024,DPH
;;;;;;;;;;;;;;;;;;MOV 0023,DPL
;;;;;;;;;;;;;;;;;;;;;MOV DPTR,#M1
;;;;;;;;;;;;;;;;;;;;MOV 0026,DPH
;;;;;;;;;;;;;;;;;;;;;;;MOV 0025,DPL
;*********************************
TEST:clr p1.0
MOV R1,00H
mov b,00h
mov R0,#00h
SETB P1.4
JB P2.0,B3
JB P2.5,B7
CLR P1.4
SETB P1.5
JB P2.0,B2
JB P2.5,B6
CLR P1.5
SETB P1.6
JB P2.0,B1
JB P2.5,B5
CLR P1.6
SETB P1.7
JB P2.0,BMUSIC
CLR P1.7
SETB P1.3
JB P2.0,B4
CLR P1.3
JMP TEST
;************************************
;===========================
INT: MOV R0,#00h
JB P2.4,RES
JB P2.5,NEXT
RES:MOV R1,#50H
JMP R
NEXT:
MOV R1,#05H
R:NOP
RETI
;===========================
BMUSIC: SETB P2.1
MOV DPTR,#M1
LJMP MUSIC0
B1:
MOV DPTR,#DAT1
LJMP MUSIC1
B2:
MOV DPTR,#DAT2
LJMP MUSIC1
B3:
MOV DPTR,#DAT3
LJMP MUSIC1
B4: MOV DPTR,#DAT4
LJMP MUSIC1
B5: MOV DPTR,#DAT5
LJMP MUSIC1
B6:
MOV DPTR,#DAT6
LJMP MUSIC1
B7: MOV DPTR,#DAT7
LJMP MUSIC1
RNEST: ;;;;;;;;;;;;;;;;MOV DPH,00H
;;;;;;;;;;;;;;MOV DPL,#21H
;;;;;;;;;;;;;;;;;;;MOV A,B
;;;;;;;;;;;;;;;;;;;CJNE A,#06H,GOON
;;;;;;;;;;;;;;MOV B,00H
;;;;;;;;;;;;;;;;;;;;MOV A,B
;;;;;;;;;;;;;;;GOON:NOP
;;;;;;;;;;;;;;;MOVC A,@A+DPTR
;;;;;;;;;;;;;;;;MOV 27H,A
;;;;;;;;;;;;;;;INC B
;;;;;;;;;;;;mov A,B
;;;;;;;;;;;;;;;;MOVC A,@A+DPTR
;;;;;;;;;;;;;;;;;;MOV 28H,A
;;;;;;;;;;;;;;;;;;MOV DPL,27H
;;;;;;;;;;;;;;;MOV DPH,28H
;;;;;;;;;;;;;;;;MOV R1,00H
;;;;;;;;;;;;;;;;;;;;;LJMP MUSIC0
mov r3,#1ch
mov r2,#64h
loop:lcall del
djnz r2,loop
mov a,b
cjne a,#00h,ji
jmp pm1
ji:cjne a,#01h,xu
jmp pm2
xu:cjne a,#02h,san
jmp pm3
san:jmp pm4
pm1:mov dptr,#m4
inc b
jmp music0
pm2:mov dptr,#m2
inc b
jmp music0
pm3:mov dptr,#m3
inc b
jmp music0
pm4:mov dptr,#m1
mov b,#00h
jmp music0
INTC:
SETB P2.1
CJNE R1,#50H,CNN ; ;R1 中断功能选择
LJMP TEST
CNN:NOP
CJNE R1,#05H,CNNN
mov r1,00h
LJMP RNEST
CNNN:NOP
JMP INTC
;++++++++++++++++++++++++++++++++
MUSIC0: MOV R0,#55H ;R0 音乐模块选择
SETB P2.1
MUSIC1:
CJNE R1,#50H,NN ; ;R1 中断功能选择
LJMP TEST
NN:NOP
CJNE R1,#05H,NNN
mov r1,00h
LJMP RNEST
NNN:NOP
mov 20h,#00h
CLR A
MOVC A,@A+DPTR
MOV R7,A
JZ END0
CJNE A,#0ffH,MUSIC2
JMP MUSIC4 ;stop 100ms
MUSIC2:
;
INC DPTR
MOV A,B
MOVC A,@A+DPTR
MOV R6,A
SETB TR0
MUSIC3:
CPL P1.0
MOV A,R7
MOV R3,a
LCALL DEL
mov a,r6
CJNE A,20H,MUSIC3
CLR TR0
INC DPTR
JMP MUSIC1
MUSIC4: NOP
MOV R2,#0DH
MUSIC5:
NOP
MOV R3,#0FFH
LCALL DEL
DJNZ R2,MUSIC5
INC DPTR
LJMP MUSIC1
END0:NOP
MOV R2,#00H
END1:
MOV R3,#00H
LCALL DEL
DJNZ R2,END1
clr p1.0 ;消除杂音
clr p2.1
MOV A,R0
CJNE A,#55H,NNNN
jmp INTC
NNNN:LJMP TEST
;++++++++++++++++++++++++++++++++++++
DEL:
NOP
DEL3:
MOV R4,#02H ;20us
DEL4:
NOP
DJNZ R4,DEL4
NOP
DJNZ R3,DEL3
RET
M1:
DB 26h,30h, 26h,30h, 2bh,30h, 30h,30h, 30h,30h, 30h,30h, 39h,40h, 0FFH,40h,30h, 00h
m2:
DB 20H, 40H, 1CH, 10H
DB 18H, 10H, 20H, 10H
DB 1CH, 10H, 18H, 40H
DB 1CH, 20H, 20H, 20H
DB 1CH, 20H, 18H, 20H
DB 20H, 80H, 0FFH
DB 20H, 20H, 1CH , 10H
DB 18H, 10H, 20H , 20H
DB 26H, 20H , 2BH , 20H
DB 30H, 20H , 2BH , 40H
DB 20H, 20H , 1CH , 10H
DB 18H, 10H, 20H, 20H
DB 26H, 20H , 2BH, 20H
DB 30H, 20H, 2BH , 40H
DB 20H, 30H, 1CH , 10H
DB 18H, 20H , 15H , 20H
DB 1CH, 20H , 20H , 20H
DB 26H, 40H, 20H , 20H
DB 2BH, 20H, 26H , 20H
DB 20H, 20H, 30H , 80H
DB 20H, 30H, 1CH , 10H
DB 20H, 10H, 1CH , 10H
DB 20H, 20H, 26H , 20H,00h
M3:
db 26h,20h,20h,20h,20h,20h,26h,10h,20h,10h,20h,80h,26h,20h,30h,20h
db 30h,20h,39h,10h,30h,10h,30h,80h,26h,20h,20h,20h,20h,20h,1ch,20h
db 20h,80h,2bh,20h,26h,20h,20h,20h,2bh,10h,26h,10h,2bh,80h,26h,20h
db 30h,20h,30h,20h,39h,10h,26h,10h,26h,60h,40h,10h,39h,10h,26h,20h
db 30h,20h,30h,20h,39h,10h,26h,10h,26h,80h
db 26h,20h,30h,10h,30h,10h,30h,20h
db 39h,20h,26h,10h,2bh,10h,2bh,20h,2bh,40h,40h,10h,40h,10h,20h,10h
db 20h,10h,2bh,10h,26h,30h,30h,80h,00H
m4:
db 30h,1ch,2bh,1ch,26h,1ch,23h,1ch,20h,1ch,1ch,1ch,19h,1ch
DAT1: DB 30H,1CH,00h
DAT2: DB 2BH,1CH,00h
DAT3: DB 26H,1CH,00h
DAT4: DB 23H,1CH,00h
DAT5: DB 20H,1CH,00h
DAT6: DB 1CH,1CH,00h
DAT7: DB 19H,1CH,00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -