Solicitud: ¡Todo el programa utiliza el lenguaje C de 51 microcontroladores para hacer que el timbre reproduzca la música "Feliz cumpleaños a ti"!
#include lt; reg51.hgt;
sbit altavoz=P1^2;
unsigned char timer0h, timer0l, time; > //Canción de cumpleaños
código unsigned char sszymmh[]={5, 1, 1, 5, 1, 1, 6, 1, 2, 5, 1, 2, 1, 2, 2, 7, 1, 4,
5, 1, 1, 5, 1, 1, 6, 1, 2, 5, 1, 2, 2, 2, 2, 1, 2, 4,
5, 1, 1, 5, 1, 1, 5, 2, 2, 3, 2, 2, 1, 2, 2, 7, 1, 2, 6, 1, 2, p>
4, 2, 1, 4, 2, 1, 3, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 4};
/ / Ocho dígitos altos de la tabla de frecuencias de la escala
código unsigned char FREQH[]={
0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,
0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC, //1, 2, 3, 4, 5, 6, 7, 8, i
0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,
0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF,
}
// Los ocho dígitos inferiores de la tabla de frecuencia de escala
código unsigned char FREQL[]={
0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,
0x21, 0xE1 , 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, //1, 2, 3, 4, 5, 6, 7, 8, i
0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D ,
0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16,
};
retraso nulo (gráfico sin firmar)
{
p>char t1 sin firmar;
t2 largo sin firmar
for(t1=0; t1lt; t; t1 ) p><
p> {
for(t2=0;t2lt;8000;t2)
{
;
}
}
TR0=0
}
void t0int() interrupción 1
{
TR0=0;
altavoz=!altavoz;
TH0=temporizador0h;
TL0=temporizador0l;
}
canción vacía()
{
TH0=timer0h
TL0=timer0l;
TR0=1;
retraso(tiempo);
}
void main(void)
{
unsigned char k, i;
TMOD=1; //Establece el modo de trabajo de temporización CT0 1
EA=1; ET0=1; //IE=0x82 //La CPU activa la interrupción, CT0 activa la interrupción
while(1)
{
i=0;
p>
while(ilt; 75){ //Duración del conjunto musical, empezar de nuevo después de cantar
k=sszymmh[i] 7*sszymmh[i 1]- 1;
timer0h=FREQH[k];
timer0l=FREQL[k]
time=sszymmh[i 2]; p> i=i 3;
canción();
}
}
}