📄 music1.asm
字号:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar j,k,c=1,t,s=0,zt=0;
uint m,wei,shiwei,guowei;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
sbit P1_7=P1^7;
sbit P3_2=P3^2;
sbit P3_3=P3^3;
//sbit P2_0=P2^0;
//sbit P2_1=P2^1;
sbit P2_7=P2^7;
void DELAY1();
uchar code TAB[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uint code table0[]={0,64260,64400,64524,64580,64671,64777,64820,//T值表;
64898,64968,65030,65058,65110,65157,65178,65217};
uint code table1[]={ //简码表;
0x52,0x61,0x81,0x22,0x41,0x54,0x02,0x62,0x84, //过雪山草地
0x71,0x81,0x92,0x84,0x04,0xb2,0xb2,0x92,0xb2,0x82,0x02,0x91,
0x82,0x62,0x52,0x52,0x22,0x52,0x44,0x04,0x52,0x02,0x61,0x52,
0x42,0x22,0x21,0x41,0x54,0x82,0x02,0x81,0x72,0x82,0x92,0x72,
0x84,0x92,0x92,0x81,0x91,0xa2,0x94,0x02,0x82,0x62,0x92,0x82,
0x52,0x64,0x04,0x82,0x91,0xb1,0x92,0x81,0x61,0x52,0x61,0x81,
0x51,0x61,0x42,0x22,0x02,0x41,0x61,0x81,0x52,0x44,0x04,0x08
,0x00
};
uint code table2[]={ //生日歌
0x83,0x81,0x94,0x84,0xb4,0xa8,0x83,0x81,0x94,0x84,0xc4,0xb8,
0x83,0x81,0xf4,0xd4,0xb4,0xa4,0x94,0xe3,0xe1,0xd4,0xb4,0xc4,
0xb8,0x08,0x00
};
uint code table3[]={ //甜蜜蜜
0x11,0x21,0x41,0x51,0x68,0x14,0x22,0x11,0x21,0x48,0x48,
0x64,0x82,0x92,0x65,0x42,0x53,0x41,0x52,0x61,
0x81,0x68,0x52,0x52,0x52,0x51,0x61,0x51,0x41,0x42,0x21,
0x11,0x12,0x45,0x52,0x63,0x51,0x61,0x51,0x61,0x81,
0x58,0x58,0x64,0x82,0x92,0x65,0x42,0x53,0x41,
0x52,0x61,0x81,0x68,0x52,0x52,0x52,0x51,0x61,0x51,0x41,
0x42,0x21,0x13,0x45,0x62,0x51,0x41,0x42,0x21,0x11,
0x12,0x48,0x48,0x68,0x14,0x21,0x41,0x11,0x21,
0x48,0x48,0x22,0x42,0x22,0x42,0x22,0x21,0x41,0x21,
0x11,0x12,0x68,0x68,0x22,0x42,0x22,0x42,0x22,0x21,
0x41,0x21,0x11,0x12,0x68,0x64,0x02,0x81,0x91,0x84,0x02,
0x81,0x91,0x84,0x02,0x81,0x91,0x82,0x81,0x91,0x82,0x81,0x91,
0x88,0x64,0x82,0x92,0x65,0x42,0x53,0x41,0x52,0x61,
0x81,0x68,0x52,0x52,0x52,0x51,0x61,0x51,0x41,0x42,0x21,
0x13,0x45,0x62,0x51,0x41,0x42,0x21,0x11,0x12,0x48,
0x48,0x68,0x14,0x21,0x41,0x11,0x21,0x48,0x48,0x00
};
uint code table4[]={ //月亮代表我的心
//1
0x02,0x12,0x45,0x62,0x85,0x42,0x35,0x62,0x84,0x02,0x82,
0x95,0xa2,0xb5,0x92,
//2
0x8c,0x62,0x52,0x45,0x42,0x44,0x62,0x52,0x45,0x42,0x44,
0x52,0x62,
//3
0x55,0x42,0x24,0x64,0x5c,0x02,0x12,0x45,0x62,0x85,0x42,
0x35,0x62,0x84,0x02,0x82,0x95,0xa2,0xb5,0x92,0x8c,0x62,
0x52,0x45,0x42,0x44,0x62,0x52,0x45,0x42,0x44,0x52,0x62,
0x55,0x22,0x34,0x42,0x52,0x4c,0x84,
//4
0x65,0x52,0x44,0x84,0x3c,0x22,0x32,0x25,0x34,0x24,0x14,
0x6c,0x84,
//5
0x65,0x52,0x44,0x84,0x3c,0x22,0x32,0x45,0x42,0x45,0x51,
0x61,0x5c,0x02,0x12,
//6
0x45,0x62,0x85,0x42,0x35,0x62,0x85,0x82,0x95,0xa2,0xb5,
0x92,0x8c,0x62,0x52,
//7
0x45,0x42,0x44,0x62,0x52,0x45,0x42,0x44,0x52,0x62,0x55,
0x22,0x34,0x42,0x52,0x4c,
//重复
0x62,0x52,0x45,0x42,0x44,0x62,0x52,0x45,0x42,0x44,0x52,
0x62,0x55,0x22,0x34,0x42,0x52,0x4c,0x62,0x52,0x45,0x42,
0x44,0x62,0x52,0x45,0x42,0x44,0x52,0x62,0x55,0x22,0x34,
0x42,0x52,0x4c,0x00
};
uint code table5[]={ //遇见
0x82,0x62,
0x64,0x82,0x52,0x54,0x62,0x52,
0x52,0x42,0x48,0x42,0x32,
0x22,0x32,0x42,0x32,0x42,0x42,0x52,0x62,
0x6C,0x82,0x62, 0x64,0x82,0x52,0x54,0x62,0x52,
0x52,0x42,0x48,0x42,0x32,
0x22,0x32,0x42,0x32,0x32,0x42,0x42,0x52,
0x48,0x02,0x82,0x92,0xA2,
0xB4,0xA2,0xB2,0xA2,0x92,0x92,0x81,0x71,
0x84,0x32,0x82,0x44,0x52,0x62,
0x72,0x62,0x52,0x42,0x34,0x82,0x62,
0x64,0x82,0x52,0x54,0x62,0x52,
0x52,0x42,0x48,0x42,0x32,
0x22,0x32,0x42,0x32,0x32,0x42,0x42,0x52,
0x6C,0x82,0x62,
0x64,0x82,0xC2,0xC4,0xB2,0xA2,
0xA2,0xB2,0xA8,0x42,0x32,
0x22,0x32,0x42,0x32,0x32,0x42,0x42,0x52,
0x48,0x02,0x82,0x92,0xA2,
0xB4,0xA2,0xB2,0xA2,0x92,0x82,0x92,
0x92,0x82,0x84,0x82,0x42,0x52,0x62,
0x74,0x62,0x72,0x82,0x42,0x52,0x62,
0x62,0x62,0x64,0x02,0x92,0xA2,
0xB4,0xA2,0xB2,0xC2,0xB2,0xC2,0xD2,
0xD2,0x82,0x84,0x82,0x42,0x52,0x62,
0x74,0x62,0x72,0x62,0x52,0x52,0x42,
0x32,0x42,0x48,0x02,0x82,
0xD2,0xC2,0x82,0xD2,0xC4,0xC2,0xF2,
0x02,0x72,0x62,0x72,0x82,0xA2,0xA2,0xC2,
0xBC,0x82,0x62,
0x32,0x42,0x44,0x02,0x82,0x92,0xA2,
0xB4,0xA2,0xB2,0xC2,0xB2,0xA2,0x92,
0x92,0x82,0x84,0x02,0x42,0x52,0x62,
0x74,0x62,0x72,0x82,0x42,0x42,0x92,
0x92,0x82,0x84,0x02,0x82,0x92,0xA2,
0xB4,0xA2,0xB2,0xC2,0xA2,0xC2,0xD2,
0xD2,0x82,0x84,0x02,0x42,0x52,0x62,
0x74,0x62,0x72,0x82,0x42,0x44,
0x51,0x61,0x51,0x41,0x4C,
0x08,0x02,0x82,0x92,0xA2,
0xB4,0xA2,0xB2,0xA2,0x92,0x82,0x72,
0x72,0x82,0x8C,
0x72,0x62,0x52,0x42,0xA4,0xA4,
0xBF,0x00
};
void delay(uint count) //1毫秒延时程序
{
uint u,y;
for(u=0;u<count;u++)
for(y=0;y<120;y++)
;
}
void service_int0() interrupt 0 using 0 //暂停按钮
{
do{P0=TAB[c];P2_7=1;} while(P1_3==1); //按下次键,就继续播放
}
void service_int1() interrupt 2 using 2 /*按下不够500毫秒就执行播下一首,
大于500毫秒就执行快进,直到防开*/
{
do
{
delay(500);
t++;
}
while(P3_3==0);
if(t<100)
{
s=1; //显示第几首歌
}
if(t>=100);
{k++;
}
}
time0() interrupt 1 using 1
{ TH0=m/256;
TL0=m%256;
P1_7=!P1_7;
}
void chengxu(uint ap[])
{
while(1)
{ wei=ap[k++];
/*if(s==1) //显示第几首歌
{ s=0;
wei=0;
k=0;
}*/
guowei=wei%16;
shiwei=wei/16;
if(wei!=0)
{if(shiwei!=0)
{
m=table0[shiwei];TH0=m/256;TL0=m%256;TR0=1;
do{P0=TAB[c];P2_7=1; //显示第几首歌
DELAY1();guowei--;} while(guowei>0); //拍数延时
}
else{TR0=0;
do{DELAY1();guowei--;} while(guowei>0);
}
P0=TAB[c];P2_7=1; //显示第几首歌
}
else{c++;if(c==6){c=1;};break;}
}
}
void main() //主程序
{
TMOD=0x01;
IP=0x05;
IE=0x87;
while(P1_3==1); //按下次键播放
while(1)
{
switch(c)
{
case 1:
chengxu(table1);
break;
case 2:
chengxu(table2);
break;
case 3:
chengxu(table3);
break;
case 4:
chengxu(table4);
break;
case 5:
chengxu(table5);
break;
default:
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -