Diseño de sonido MCU
ORG 0000H
LJMP START
ORG 000BH
INC 20H Interrumpe el servicio, el contador de interrupciones aumenta en 1
p >MOV TH0, #0D8H
MOV TL0, #0EFH; oscilador de cristal de 12M, formando una interrupción de 10 milisegundos
RETI
INICIO: p>
MOV SP, #50H
MOV TH0, #0D8H
MOV TL0, #0EFH
MOV TMOD, #01H
MOV IE, #82H
MUSIC0:
NOP
MOV DPTR, #DAT la dirección del encabezado se envía a DPTR
MOV 20H, #00H; Borrar el contador de interrupciones a 0
MUSIC1:
NOP
CLR A
MOVC A, @ A DPTR; Verifique la tabla Tome el código
JZ END0; Si es 00H, finalice
CJNE A, #0FFH, MUSIC5; p>
LJMP MUSIC3
MUSIC5:
NOP
MOV R6, A; R6=18H representa la frecuencia de la nota
INC INC A, @A DPTR ; Consulta la tabla.
INC DPTR; DPTR más uno
MOV A, #0
MOVC A, @A DPTR Obtenga el código de ritmo y envíelo a R7
p>p>
MOV R7, A; R7=30H tiempo de pronunciación de notas
SETB TR0; empezar a contar
MÚSICA2:
NOP;
MUSIC2.>NOP
CPL p3.6; p3.6 es el pin de salida de música
MOV A, R6
MOV R3, A; R3=R6=18H
LCALL DEL
MOV A, R7
CJNE A, 20H, MUSIC2; ¿No?
; Si no, continúa el bucle
MOV 20H, #00H; Si es así, toma el siguiente código
INC DPTR
LJMP MUSIC1
MÚSICA3:
NOP; descanso durante 100 milisegundos
CLR TR0
MOV R2, #0DH=13
MÚSICA4:
NOP
MOV R3, #0FFH=255
LCALL DEL
DJNZ R2, MÚSICA4
INC DPTR
LJMP MUSIC1
END0:
NOP
MOV R2, #0FFH; canción, continúa después de 1 segundo de retraso
MUSIC6:
MOV R3, #00H
LCALL DEL
DJNZ R2, MUSIC6 p> p>
LJMP MUSIC0
DEL:
NOP
DEL3:
MOV R4, #02H
DEL4:
NOP
DJNZ R4, DEL4
NOP
DJNZ R3, DEL3
RET
NOP
DAT:
DB 18H, 30H, 1CH, 10H
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, 20H
DB 30H, 1CH, 10H, 18H
DB 20H, 15H , 20H , 1CH
DB 20H, 20H, 20H 20H, 26H
DB 40H, 20H, 20H, 2BH
DB 20H, 26H, 20H, 20H
p>
DB 20H, 30H, 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 2BH, 20H, 26H .20H
DB 20H, 20H, 30H, 80H
DB 20H, 30H, 1CH, 10H
DB 20H, 10H, 1CH, 10H
DB 20H, 20H, 26H, 20H
DB 2BH, 20H, 30H , 20H
DB 2BH, 40H, 20H, 15H
DB 1FH, 05H, 20H, 10H
DB 1CH, 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, 30H
DB 20H, 30H, 1CH, 10H
DB 18H, 40H, 1CH, 20H
DB 20H, 20H, 26H, 40H
DB 13H, 60H, 18H, 20H
DB 15H, 40H, 13H, 40H
DB 18H, 80H, 00H
fin