Utilice el chip at89s52 del microcontrolador 80c51 y el lenguaje ensamblador para escribir el código de reproducción de música de "Only Mom is Good in the World".
Speaker EQU p 2.0; Definir puerto de unidad de altavoz
Pseudo dirección ORG 0000H
Salto largo LJMP MAIN, realiza la función principal.
ORG 000BH
LJMP DSQT0
Principal: MOV SP, # 50H Escribe 50 en SP
MOV TMOD, # 01H ;Temporizador ajustes
MOV TH0,#0F8H graves 1-261hz; Temporizador carga valor inicial alto
MOV TL0,#39H Temporizador carga valor inicial bajo
SETB EA; Permitir interrupciones
SETB ET0; bajo la premisa de que EA está activado, el temporizador T0 activa la interrupción.
CLR TR0 no habilita el bucle del contador/temporizador T0: el NOP comienza a bucle. Programa incompleto
; -
; 1-|6.5 3 5 |; Primer párrafo
LCALL DY6 salta largo a la etiqueta bass 6, el programa no No escrito en absoluto. Lo siguiente es lo mismo
SETB TR0; Iniciar habilitación del contador/temporizador T0.
LCALL DEL11
LCALL DEL12
LCALL ZY5
LCALL DEL12
LCALL ZY3
LCALL DEL11
LCALL ZY5
LCALL DEL11
;-
;2-|1 6 5 6- |
LCALL GY1
SETB TR0
LCALL DEL11
LCALL ZY6
LCALL DEL12
LCALL ZY5
LCALL DEL12
LCALL ZY6
LCALL DEL11
LCALL DEL11
-
;3-|3 5 6 5 3 |
LCALL ZY3
SETB TR0
LCALL DEL11
LCALL ZY5
LCALL DEL12
LCALL ZY6
LCALL DEL12
LCALL ZY5
LCALL DEL11
>LCALL ZY3
LCALL DEL11
;-
;4-|1 6 5 3 2- |
LCALL ZY1
SETB TR0
LCALL DEL12
LCALL DY6
LCALL DEL12
LCALL ZY5 p>
LCALL DEL12
LCALL ZY3
LCALL DEL12
LCALL ZY2
LCALL DEL11
LCALL DEL11
;-
;5-|2.3 5 5 6 |
LCALL ZY2
SETB TR0
LCALL DEL11
LCALL DEL12
LCALL ZY3
LCALL DEL12
LCALL ZY5
LCALL DEL11
LCALL ZY5
LCALL DEL12
LCALL ZY6
LCALL DEL12
;-
; 6-|3 2 1 -|
LCALL ZY3
SETB TR0
LCALL DEL11
LCALL ZY2
LCALL DEL11
LCALL ZY1
LCALL DEL11
LCALL DEL11
;-
7 -|5.3 2 1 6 1 |
LCALL ZY5
SETB TR0
LCALL DEL11
LCALL ZY3
LCALL DEL12
LCALL ZY2
LCALL DEL12
LCALL ZY1
LCALL DEL12
LCALL DY6 p>
ACV
LL DEL12
LCALL ZY1
LCALL DEL12
;8-|5 - - - |
LCALL DY5
SETB TR0
LCALL DEL11
LCALL DEL11
LCALL DEL11
LCALL DEL11
El bucle LJMP salta al bucle y se reproduce de nuevo.
=========================================== =
; El dispositivo de valor inicial del temporizador de 16 bits corresponde a la subrutina de la frecuencia de la nota de bajo.
DY1: MOV 30H, # 0F8H bajo 1-262 Hz. Coloque F8 en la dirección 30. .
MOV 40H, #89H
no provisto de otra manera a menos que se especifique lo contrario
Remojado en agua para suavizar
DY2: MOV 30H, # 0F9H Graves 2-294 Hz
MOV 40 horas, #59 horas
Remojado en agua para suavizar
no previsto de otra manera (para) a menos que se especifique lo contrario