Proporcione un fragmento de código fuente que utilice BEEP() para llamar a un timbre y reproducir una partitura musical simple. . Me gusta aprender a programar leyendo código. . .

No muchos puntos, la buena gente tiene una vida segura.

#include

#define uchar unsigned char

#define uint unsigned int

uchar Count;

p>

sbit Speak =P1^2; //Pin de control del zumbador

/*La siguiente matriz es el código de nota*/

código de carácter sin firmar SONG[] = { //Te deseo paz

0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,

0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,

0x20,0x80,0x2b ,0x20,0x26 ,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10, 0x26,0x60, 0x40,0x10,0x39,0x10,0x26,0x20,

0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10 ,0x2b,0x10 ,

0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,

0x20,0x10 ,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,

0x20,0x20,0x20,0x40,0x26, 0x20,0x2b, 0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,

0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30 ,0x60,0x39 ,0x10,0x30,0x10,

0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,

0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,

0x30,0x20, 0x1c,0x20, 0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,

0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20 ,0x2b,0x40 ,0x40,0x10,0x40,0x10,0x20,0x10,

0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,

/ /En la carretera no elijas a Yehua

0x30,0x1C,0x10,0x20,0x40,

0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,

0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20 ,0x30,0x1C,0x10,0x18,0x20,

0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,

0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B, 0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,

0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18 ,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,

0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30, 0x1C,0x10,0x20,

0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,

0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,

0x30,0x1C,0x10,0x18,0x20 ,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,

0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C, 0x10,0x18,0x40,0x1C,0x20,0x20,

0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};

/************************************ ***********************************

* Nombre: Time0_Init()

* Función: Inicialización del temporizador, el tiempo de sincronización se puede calcular mediante el software en el CD, oscilador de cristal 11.0592MZ, 10 ms

* Entrada: Ninguna

* Salida: Ninguna

*************************************** ********* *************************/

void Time0_Init()

{

TMOD = 0x01;

IE = 0x82;

TH0 = 0xDC;

TL0 = 0x00

}

/************************************ *********** **********************

* Nombre: Time0_Int()

>

* Función: interrupción del temporizador, el conteo aumenta en uno durante la interrupción

* Entrada: Ninguna

* Salida: Ninguna

*** * ************************************************* ** *****************/

void Time0_Int() interrupción 1

{

TH0 = 0xDC;

TL0 = 0x00;

Count++; //Agrega 1 a la longitud

}

/***** *** ************************************************* **** *********

* Nombre: Delay_xMs()

* Función: Subrutina de retardo Después de la depuración del software, el programa de retardo medido es de aproximadamente 55us.

* Entrada: x

* Salida: Ninguna

******************** . ** ************************************************* *** /

void Delay_xMs(uint x)

{

uint i,j;

for(i=0; i

{

para(j=0; j<3; j++);

}

}

/****************************************** ****** *************************

* Nombre: Play_Song()

* Función: Reproducir timbre Programa de control

* Entrada: i (Elige qué canción reproducir, 0 es "Te deseo paz", 1 es "No recojas las flores silvestres al borde de la carretera"

* Salida: Ninguna

************************************ *********** *******************************/

nulo Play_Song(uchar i)

{

uchar Temp1,Temp2;

uint Addr;

Count = 0; contador de interrupciones a 0

Addr = i * 217;

while(1)

{

Temp1 = SONG[Addr++];

if (Temp1 == 0xFF) / /rest

{

TR0 = 0;

Delay_xMs(100);

}

else if (Temp1 == 0x00) //Símbolo de fin de canción

{

return;

}

else

{

Temp2 = SONG[Addr++];

TR0 = 1;

mientras (1)

{

Hablar = ~Hablar;

Retardo_

xMs(Temp1);

if(Temp2 == Contar)

{

Contar = 0;

romper;

}

}

}

}

}

/***** ************************************************** * *************

* Nombre: Main()

* Función: Función principal

* Entrada: Ninguna

* Salida: Ninguna

******************************** *************************************/

void Principal ()

{

Time0_Init(); // Inicialización de interrupción del temporizador 0

while(1)

{

Play_Song(0); //Play_Song(0) es para desearte paz Play_Song(1) es para las flores silvestres al borde del camino, por favor no las cortes

}

}

tongji.js">