C51数组问题 关于不同模式播放不同音乐!!高分求 采纳后另加!!

我定义了一个unsigned char code SONG_LONG[]和unsigned char code SONG_TONE[]
写了两段音乐代码 uchar code SONG1_TONE[] =
uchar code SONG1_LONG[] = {9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};
//世上只有妈妈好
unsigned char code SONG2_TONE[]={63,71,85,71,53,63,71,63,85,71,63,71,85,107,126,71,85,93,93,85,71,71,63,85,93,107,71,85,93,107,126,107,142,0};
unsigned char code SONG2_LONG[]={18,6,12,12,12,6,6,24,12,6,6,12,12,6,6,6,6,24,18,6,12,6,6,12,12,24,18,6,6,6,6,6,48,0};
音乐播放程序是抄的
void PlayMusic()
{
unsigned char Key;
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{
//播放各个音符,SONG_LONG为拍子长度
for(j=0;j<SONG_LONG[i]*20;j++)
{ //播放子程序
BEEP=~BEEP;Key=GetKey();
if(Key!=0) { KeyProcess(Key); }
//SONG_TONG决定了每个音符的频率
for(k=0;k<SONG_TONE[i]/3;k++);
}
DelayMS(10);
//下一个音符的索引
i++;

}
}
我想不同的模式选不同的歌 通过按键选择
case 0:Led_Demo(0x0001<<mb_Count) ;流水灯
SONG_TONE[]=SONG1_TONE[]; 编译出错
case1:.....
就是把代码赋给音乐程序的SONG_TONE[] 要怎么传参数,编译出错,怎么把play写成参数类型 实现不同模式播不同的音乐
最新回答
想挽无人

2024-12-01 05:29:09

我定义了一个unsigned char code SONG_LONG[]和unsigned char code SONG_TONE[]
写了两段音乐代码 uchar code SONG1_TONE[] =
uchar code SONG1_LONG[] = {9,3,12,12,12,24,9,3,12,12,12,24,9,3,12,12,12,12,12,9,3,12,12,12,24,0};
//世上只有妈妈好
unsigned char code SONG2_TONE[]={63,71,85,71,53,63,71,63,85,71,63,71,85,107,126,71,85,93,93,85,71,71,63,85,93,107,71,85,93,107,126,107,142,0};
unsigned char code SONG2_LONG[]={18,6,12,12,12,6,6,24,12,6,6,12,12,6,6,6,6,24,18,6,12,6,6,12,12,24,18,6,6,6,6,6,48,0};
音乐播放程序是抄的
void PlayMusic()
{
unsigned char Key;
uint i=0,j,k;
while(SONG_LONG[i]!=0||SONG_TONE[i]!=0)
{
//播放各个音符,SONG_LONG为拍子长度
for(j=0;j<SONG_LONG[i]*20;j++)
{ //播放子程序
BEEP=~BEEP;Key=GetKey();
if(Key!=0) { KeyProcess(Key); }
//SONG_TONG决定了每个音符的频率
for(k=0;k<SONG_TONE[i]/3;k++);
}
DelayMS(10);
//下一个音符的索引
i++;

}
}
我想不同的模式选不同的歌 通过按键选择
case 0:Led_Demo(0x0001<<mb_Count) ;流水灯
SONG_TONE[]=SONG1_TONE[]; 编译出错
case1:.....
就是把代码赋给音乐程序的SONG_TONE[] 要怎么传参数,编译出错,怎么把play写成参数类型 实现不同模式播不同的音乐
Ⅱ包子大人

2024-12-01 06:03:44

把 SONG_TONE和SONG_LONG的数组长度定义为SONG1_TONE和SONG1_LONG的数组长度,比如unsigned char code SONG_TONE[sizeof(SONG1_TONE)]={0};和unsigned char code SONG_LONG[sizeof(SONG1_LONG)]={0};这样使两个数组的长度相同。
如果还是不行,就做一个循环,把你的数组SONG_LONG1[]的每一个元素一个一个赋值给SONG_LONG[]。