¿Diseñar un programa de reproducción de música y un diagrama de simulación para un microcontrolador (usando lenguaje ensamblador)? Solicitud urgente ~ ¡Gracias! ! !
NUM?EQU?30H
UP?EQU?P3.6
DN?EQU?P3.7
ORG?0000H
AJMPSTART;Fosc=12MHz
ORG?000BH;T0?Dirección de entrada de interrupción
AJMPINT_T0
ORG?001BH;T1?Interrupt Dirección de entrada
AJMPINT_T1
START:
MOV?SP,?#60H
MOV?TMOD,?#11H
MOV?IE,?#8AH?
MOV?IP,?#08H? ;La interrupción T1 tiene prioridad sobre la interrupción T0
MOV TH1,?#3CH p >
MOV TL1,?#0BH;Lo anterior es la inicialización del sistema, T=60ms
W1: MOV P2,?#01110001B;Esperando el mensaje "F",01110001
LCALL GETKEY
CJNE?A,?#0FFH,?W1?
MOV?A,?B
CJNEA,?#0AH,?W2
LCALLKEY_A; La clave de entrada es 'A', cambie a KEY_A
SJMP W1
W2: CJNE A,?#0BH,?W3
LCALLKEY_B ;La clave de entrada es 'B', gire a KEY_B
W3: CJNE A,?#0CH,?W4
LCALLKEY_C;La clave de entrada es 'C ', gire a KEY_C
W4: CJNE A,?#0DH,?W5
LCALLKEY_D
SJMP W1; a KEY_D
W5: CJNE?A,#0EH,W6 ;El siguiente
INC?NUM
MOV?A,NUM
CJNE?A,#4,W51
W51:
JC?W52
MOV?NUM,#0
W52:
MOV?A ,NUM
SJMP?D0
W6: CJNE?A,#0FH,W7 ;Canción anterior
MOV ?A,NUM
JNZ?W61
MOV?NUM,#4
W61:
DEC?NUM
MOV?A,NUM
SJMP?D0
W7:
SJMP W1
KEY_A:; 1 a 4
LCALL MUSIC1?;Música "Tú y Yo"
LCALL MUSIC2;Música "El amor siempre está enamorado"
LCALL MUSIC3;Música " Adiós"
LCALL MUSIC4;Música "Beijing te da la bienvenida"
RET
KEY_B:?; Bucles del 1 al 4
T11 : LCALL KEY_A
SJMP T11
RET
KEY_C:; Reproduce una determinada pieza musical en un bucle
T3: LCALL GETWORD
CJNE A,?#0FFH ,?T3
MOV A,?B
D0:
JNZ?D1
SJMP E0
D1: DIC?A
JNZ?D2
SJMP E1
D2: DIC?A
<p>JNZ?E3
SJMP E2
E0: LCALL MUSIC1;Música "Tú y Yo"
SJMP E0
E1: LCALL MUSIC2; música "El amor siempre está presente en miles de montañas y ríos"
SJMP E1
E2: LCALL MUSIC3; música "Adiós"
SJMP E2
E3: LCALL MUSIC4;Música "Beijing te da la bienvenida"
SJMP E3
RET
KEY_D:?;Comenzar a reproducir desde un cierta pieza musical y terminar de reproducir STOP
T2: LCALL GETWORD
CJNE A,?#0FFH,?T2
MOV A,?B
CJNE A, ?#00H,?B1
SJMP C0
B1: CJNE A,?#01H,?B2
SJMP C1
B2 : CJNE A,?#02H,?C3
SJMP C2
C0: LCALL MUSIC1;Música "Me and You"
C1: LCALL MUSIC2;Música "¿Siempre hay amor en miles de ríos y montañas"?
C2: LCALL MUSIC3;Música "Adiós"
C3: LCALL MUSIC4;Música "Beijing te da la bienvenida"
RET
MÚSICA1:?;La primera canción "Me and You"
MOV?P2,?#00000110B ?;Pantalla 1 ,00000110
MOV?R5, ?#11111001B
MOV?52H,?#HIGH?TABLE10
MOV?53H,?#LOW?TABLE10 p>
MOV?NUM,#0 p>
LCALL?music
RET
MUSIC2:? ;La segunda canción "El amor es siempre amor en miles de ríos y montañas"
MOV P2,?#01011011B ? ;Mostrar 2,01011011
MOV R5,?#10100100B
MOV?52H,?# ¿ALTA?TABLE20
MOV?53H,?#LOW?TABLE20 ?
MOV?NUM,#1
LCALL música
RET
MUSIC3: ?;La tercera canción "Farewell"
MOV P2,?#01001111B ?;Display 3,01001111
MOV R5,?#10110000B
¿MOV?52H,?#HIGH?TABLE30
MOV?53H,?#LOW?TABLE30?
MOV?NUM,#2
LCALL?música
RET
MÚSICA4: ;La cuarta canción "Bienvenido a Beijing"
MOV P2,?#01100110B;Pantalla 4,01100110
MOV R5,?#10011001B
MOV?52H,?#HIGH?TABLE40
MOV?53H,?#LOW?TABLE40?
MOV?NUM,#3
LCALL?música
RET?
música: MOV?R3,#00H ?;Descodificador de música
SIGUIENTE20:
MOV?A,P3
ORL?A,#0C0H
MOV?P3,A
> MOV?A,P3
CPL?A
ANL?A,#0C0H
JZ?NEXT21
POP?ACC
POP?ACC
LJMP?W1
RET
NEXT21: MOVA,?R3
?MOV? DPH,?52H
?MOV? DPL,?53H
?MOVC A,?@A+DPTR
?MOV R2,?A p>
?JZ? PARADA
?ANL? A,?#0FH
?MOV? R1,?A
?MOV A, ?R2
?SWAP? A
?ANL? A,?#0FH
?JNZ
?CLR?
?JMP?W11
;------------------------------- --- --------------------
CANTAR:
DEC? p>
MOV?22H,?A
RL?A
MOV?DPTR,?#TABLE00
MOVC A,?@A +DPTR
MOV?TH0,?A
MOV 21H,?A
MOV?22H
RL? ¿A
INC?A
MOVC?A,?@A+DPTR
MOV?A
MOV? ,? A
SETB? TR0
SETB?
W11:?
LCALLADA? INC?R3
LJMP?SIGUIENTE20
;----------------------------- ----- ----------------------------
DETENER:
CLR ? TR0
CLR? TR1
RET
;************************ ******** **********************
;Subrutina de interrupción del temporizador 0
; ************************************************* ***
INT_T0:?
CLR ?TR0
MOV?20H
TH0,?21H
CPL?P3.0
SETB TR0
RETI
;************** ********** *******************************
;Temporizador 1 subrutina de interrupción
;*************************************** *************** ****
INT_T1:?
CLR?TR1
CLR?TR0
LCALL KEY_E
MOV?TH1,?#3CH MOV?TL1,?#0BH
DJNZ 60H,?OUT
MOV? ?60H,?#20
SALIDA:
SETB TR1
>RETI?
KEY_E:
JB P3.1,?L2 ?;Interrumpir detección de teclado
LCALL DELAY2 ?;Eliminar jitter
JB ?P3.1,?L2 ?;Si es nivel alto, salta a L2
JNBP3.1,?$ ?;Si aún es nivel bajo, ejecuta el programa de interrupción
MOV P2,?#0111100B ;Deje que el LED muestre E,01111001
L3: JB P3.1,?$ ?;Detecte el nivel bajo y no salte del comando hasta que el nivel bajo nivel
LCALL DELAY2
JB P3.1,?L3
JNB?P3.1,?$ ?;La interrupción solo se activará si hay otro nivel alto
MOV P2,R5
L2: SETB?TR0
RET
GETKEY: ;Leer A?B?C ?D subrutina de teclado? p>
SA: JB P1.0,?SB; Leer A, que es un nivel alto que indica que no hay botón, salte a SB
LCALL DELAY2
JB P1.0 ,?SA
JNB ?P1.0,?$
MOV P2,?#01110111B ;Pantalla A,01110111
MOV R5,?#10001000B
MOV A,?#0FFH
MOV B,?#0AH
RET
SB: JB P1.1,?C11? ;Leer B, nivel alto significa que no se presiona ningún botón, saltar a C11
LCALL DELAY2
JB P1.1,?SB
JNB P1 .1,?$
MOV P2,?#01111100B ;Pantalla B,01111100
MOV R5,?#10000011B
MOV A, ?#0FFH
MOV B,?#0BH
RET
C11:JB P1.2,?ED1 ;Leer C
LCALL DELAY2 p>
JB ?P1.2,?C11
JNB?P1.2,?$
MOV P2,?#00111001B ;Pantalla C,00111001
MOV R5,?#11000110B
MOV A,?#0FFH
MOV B,?#0CH
RET
ED1:
JB P1.3,?L0 ;Leer D
LCALL DELAY2
JB ?P1.3,?ED1
JNBP1.3,?$
MOV P2,?#01011110B ?;Pantalla D,01011110
MOV R5,?#10100001B
MOV A,?# 0FFH
MOV B,?#0DH
L0: JB?UP,L01
LCALL?DELAY2
JB ?UP,L01
JNB?UP,$
MOV?A,#0FFH
MOV?B,#0EH
RET
L01:
JB?DN,L02
LCALL?DELAY2
JB?DN,L02
JNB?DN, $
MOV?A,#0FFH
MOV?B,#0FH
L02:
RET<
/p>
GETWORD:?;Leer subrutina de número de serie de música
S1: JB P1.4,?S2;Leer 1 tecla
LCALL DELAY2
JB P1.4,?S1
JNB P1.4,?$
MOV P2,?#00000110B ;Pantalla 1
MOV R5,?# 11111001B
MOV A,?#0FFH
MOV B,?#00H
RET
S2: JB P1.5,? S3 ;Leer 2 teclas
LCALL DELAY2
JB P1.5,?S2
JNB P1.5,?$
MOV P2,?#01011011B ;Pantalla 2
MOV R5,?#10100100B
MOV A,?#0FFH
MOV B,?#01H
RET
S3: JB P1.6,S4 ?;Leer tecla 3
LCALL DELAY2
JB P1.6,S3
JNB P1.6,$
MOV P2,#01001111B ;Pantalla 3
MOV R5,#10110000B
MOV A,#0FFH
MOV B,#02H
RET
S4: JB P1.7,?L1 ?;Leer 4 teclas
LCALL DELAY2
JB P1.7,?S1
JNB P1.7,?$
MOV P2,?#01100110B ;Pantalla 4
MOV R5,?#10011001B
MOV A,?#0FFH
MOV B,?#03H
L1: RET
RETARDO :?;Retrasar subrutina
PUSH0;Guardar escena
PUSH1
MOV?0,?#0H
DELAY1:? 1,?#0H
DJNZ1,?$
DJNZ0,?DELAY1
POP?1;Restaurar escena
POP ?0
RET
DELAY2: MOV 41H,?#100 subrutina de retardo 2
F1: MOV 42H,?#250
DJNZ 42H,?$
DJNZ 41H,?F1
RET
DELAY3: ?;Retardo subrutina 3
MOV? ?#2
W22: ¿MOV? R4,?#125
W33: ¿MOV? R0,?248
DJNZ ,?$
DJNZ?R4,?W33
DJNZ?R7,?W22
DJNZ?R1,?DELAY3
RET
TABLA00: ?;Tabla de frecuencias
DW?64260,64400,64524,64580?;Valor de código simple?Bajo 5,?Bajo 6,?Bajo 7,1
DW? 64684,64777,64820,64898?;?Valor de código corto?2,3,4,5
DW?64968,65030,65058,65110?;?Valor de código corto 6,7,Agudos 1? ,Agudos
DW?65157,65178,65217;¿Valor de código simple?Agudos 3,Agudos 4,Agudos 5
;--
-------------------------------------------------- ----------------
;La primera canción "Me and You"
;---------- -------------------------------------------------- --------
TABLA10:?DB?64H,82H,42H,48H
DB?54H,64H,18H
DB? 44H,54H,64H,84H
DB?5CH
DB?64H,84H,44H,04H,42H
DB?54H,64H,28H
DB?54H,14H,54H,64H
DB?4CH
DB?98H,88H
DB?98H,48H
DB?64H,24H,64H,84H
DB?5CH
DB?64H,82H,42H,48H
DB? 54H,64H,?28H
DB?54H,14H,54H,34H
DB?4CH
DB?00H
; -------------------------------------------------- ------------------
;La segunda canción "El amor siempre está ahí en miles de ríos y montañas"
;- ------ -------------------------------------------- ------ -----------
TABLA20: DB?64H,74H,84H,04H,82H,94H,84H,6CH
DB?54H,44H, 04H,62H,54H,44H,2CH
DB?24H,18H,?44H,54H,64H,84H,94H,64H,5CH
DB ?64H,74H,84H ,04H,82H,94H,84H,6CH
DB?54H,44H,04H,62H,54H,44H,2CH
DB?24H,18H ,?44H,64H, 54H,04H,42H,24H,44H,4CH
DB?64H,84H,9CH,0A4H,94H,74H,84H,04H,92H,8CH,64H,88H
DB?64H,84H,9CH,0A4H,0A4H,94H,84H,64H,5CH
DB?64H,74H,?84H,04H,82H,94H,84H,6CH
DB?54H,44H,04H,62H,54H,44H,2CH
DB?24H,18H,44H,64H,54H,42H,24,44H,4CH p>
DB ?00H
;---------------------------------- ------ ----------------------------
;La tercera canción "Adiós" p>
; -------------------------------------------- ------ ------------------
TABLA30:DB?84H,62H,82H,0B8H
DB ?94H,0B2H,92H,88H
DB?84H,42H,52H,64H,52H,44H
DB?5CH
>
DB?84H,62H,82H,0B4H,04H,82H
DB?94H,0B4H,?88H
DB?84H,52H,62H,74H,04H ,32H
DB?4CH
DB?94H,0B4H,0B8H
DB?0A4H,92H,0A2H,0B8H
DB ?92H,0A2H,0B2H,92H,92H,82H,62H,42H
DB?5CH
DB?84H,62H,82H,0B4H,04H,0A2H
DB?94H,0B4H,88H
DB?84H,52H,62H,74H,04H,32H
DB?4CH
DB?00H
;------------------------------------------ --- --------------------
;La cuarta canción "Beijing te da la bienvenida"
; ----------------------------------------- --- ------------------
TABLA40:DB?62H,82H,62H,52H,12H
DB? 62H,52H,12H,64H
¿DB?62H,52H,22H,42H?
DB?62H,54H
DB?52H,42H,22H ,42H
DB?52H,62H,82H,52H
DB?62H,92H,82H,12H
DB?52H,44H
DB?52H,42H,22H,42H
DB?52H,62H,82H,52H
DB?62H,92H,82H,82H
DB?68H
DB?52H,62H,52H,42H
DB?82H,92H,64H
DB?22H,62H,64H p>
DB?54H,64H
DB?64H,84H
DB?0B2H,82H,94H
DB?02H,92H,82H ,62H
DB?62H,?82H,88H
DB?00H
FIN