Diseño de sonido MCU

;MCU canta

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:

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>

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