Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿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! ! !

¿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

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

MOV?NUM,#0

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

?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?

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

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

DB ?00H

;---------------------------------- ------ ----------------------------

;La tercera canción "Adiós"

; -------------------------------------------- ------ ------------------

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

DB?54H,64H

DB?64H,84H

DB?0B2H,82H,94H

DB?02H,92H,82H ,62H

DB?62H,?82H,88H

DB?00H

FIN

body>