La Red de Conocimientos Pedagógicos - Conocimientos de formación/capacitación - Papel de caja de música MCU

Papel de caja de música MCU

#Incluir

#Definir carácter uchar sin signo

#Definir uint entero sin signo

int cnt_h, CNT_l;

sbit spk=p2^ 3;

//sbit led=p2^0;

uchar cnt, I, paso, s_bit

Código uint yin[ 7]= { 19121704161432127611361012 } ; //1: octava inferior 3: octava superior

//Código del símbolo "Beijing te da la bienvenida"

Código uint song[]={123,125,123,122,123,223,123,122,111665438

,122,121,116,121,122,123,125,122,123,126,125,125,123, 123, 122, 123, 122, 121, 125, 126, 222, 115, 123, 123, 222, 223, p>

116, 123, 122, 122, 221, 423 , 425, 131, 125, 226, 226, 125, 123, 123, 125, 225, 123, 125, 126, 131, 132, 131, 125, 123, 122, 125, 223, 223, 125, 131 , 125, 226, 231 ,132,131,125,123,125,127,226,223,122,123,125,133,232,127,331,999};

Retraso no válido (uint a); //

void init(); representado por un número de tres dígitos.

Void main() //El centésimo dígito del número de tres dígitos representa un múltiplo entero del ritmo.

{//El dígito de las decenas indica el tono (1 es bajo, 3 es agudo)

init(); //El número indica qué fonema básico es.

while(1)

{

step =(song[I]/100)* 4; //Cambia 2 a otros números para cambiar el ritmo .

//th 1 =(65536-65535)/256;

//TL 1 =(65536-65535) 256;

Cambiar ((canción) [i]/10)10)

{

Caso 1:

{

cnt_h=-(Yin[Canción[I ] 10-1]* 2)/256;

cnt_l=-(Yin[Song[I] 10-1]* 2) 256;

Pausa;

}

Caso 2:

{

CNT _ h =-yin[canción[I] 10-1]/256;

CNT _ l =-yin[canción[I] 10-1] 256;

Pausa;

}

Caso 3: p>

{

cnt_h=-(Yin[Canción[I] 10-1]/2)/256;

cnt_l=-(Yin[Canción[ I] 10-1]/2) 256;

Rotura;

}

}

TH0 = CNT _ h;< /p >

TL0 = CNT_l;

tr 1 = 1;

TR0 = 1;

Siguiente:

mientras (cnt! = paso)

Ir al siguiente;

//led = ~ led;

TR0 = 0;

CNT = 0;

tr 1 = 0;

Retraso (200);

i

if(Canción[i]= =999)

{

I = 0;

Retraso(900);

}

}

}

inicialización nula()

{

EA = 1;

ET0 = 1 ;

et 1 = 1;

TMOD = 0x 11;

I = 0;

CNT = 0;

TR0 = 0;

tr 1 = 0;

}

void t0 (void) interrupción 1

{

TH0 = CNT_h;

TL0 = CNT_l;

spk = ~ spk

}

void t1 (no válido ) interrumpir 3

{

//th 1 =(65536-65535)/256;

//TL 1 =( 65536-65535) 256;

cnt;

}

Retraso no válido

{

uint q, k;

for(q = 0;q lt84;q)

for(k = 0;k lta;k);

}

== =================

Escribí esto hace mucho tiempo. Échale un vistazo.