Código fuente de Ba
typedef unsigned char u8;
typedef unsigned int u 16;
sbit beepio=p2^3; //puerto de salida del altavoz
p>u8 m, n;
código U8 T[49][2]={{0, 0}, //define el tono de la música.
{0xF8, 0x8B}, {0xF8, 0xF2}, {0xF9, 0x5B}, {0xF9, 0xB7}, {0xFA, 0x14}, {0xFA, 0x66}, {0xFA, 0xB9}, { 0xFB, 0x03}, {0xFB, 0x4A}, {0xFB, 0x8F}, {0xFB, 0xCF}, {0xFC, 0x0B},
{0xFC, 0x43}, {0xFC, 0x78}, {0xFC , 0xAB}, {0xFC, 0xDB}, {0xFD, 0x08}, {0xFD, 0x33}, {0xFD, 0x5B}, {0xFD, 0x81}, {0xFD, 0xA5}, {0xFD, 0xC7}, {0xFD, 0xE7 }, {0xFE, 0x05},
{0xFE, 0x21}, {0xFE, 0x3C}, {0xFE, 0x55}, {0xFE, 0x6D}, {0xFE, 0x84}, {0xFE, 0x99} , {0xFE, 0xAD}, {0xFE, 0x02}, {0xFE, 0xE3}, {0xFE, 0xF3}, {0xFF, 0x02},
{0xFF, 0x10}, {0xFF, 0x1D}, {0xFF, 0x2A}, {0xFF, 0x36}, {0xFF, 0x42}, {0xFF, 0x4C}, {0xFF, 0x56}, {0xFF, 0x60}, {0xFF, 0x69}, {0xFF, 0x71}, {0xFF , 0x79}, {0xFF, 0x865438
};
código u8 música [][2]={{0, 4}, {0, 4}, {0, 4 }, {0,8}, {0,8}, {0,8}, {17,4}, {21,4}, {23,4}, {0,4}, {0,4}, {21, 4}, {23, 4}, {0, // Define el ritmo de la música.
Retraso no válido(u8 p)//función de retardo
{ u8 i,j;
for(;p gt0;p -)
for(I = 181;i gt0;i-)
for(j = 181;j gt0;j-);}
Pausa nula()//retraso tiempo fijo.
{ u8 i, j;
for(I = 150; i gt0; i-)
for(j = 150; j gt0; j- );}
Void T0_int() interrupción 1 //Función de interrupción del temporizador 0
{ beepIO=! bipio; //Salida de audio
TH0 = T[m][0]; TL0 = T[m][1] } //Reasignar valor inicial
void main();
{ u8i = 0;
TMOD = 0x 01; EA = 1; ET0 = 1; //Temporizador 0 modo 1, interrupción habilitada
mientras( 1)
{ m = música[I][0]; n =música[I][1] //Obtener el audio
if(m== 0x00)
{ TR0 = 0; delay(n); i;}//0 se retrasará durante un cierto período de tiempo, lo que equivale a una pausa.
else if(m==0xFF)
{ TR0 = 0; retraso (30); I = 0;//tiempo de retraso fijo (pausa)
else if(m = = music[I 1][0])//De lo contrario, melodía normal.
{ TR0 = 1; retraso(n); TR0 = 0; pausa();}
Otro
{ TR0 = 1; n);i;}
}}