k = 0;
break; case 0x48: k = 1;
break; case 0x28: k = 2 ; break; case 0x18: k = 3 ; break; case 0x84: k = 4 ; break; case 0x44: k = 5 ; break; case 0x24: k = 6 ; break; case 0x14: k = 7 ; break; case 0x82: k = 8 ; break; case 0x42: k = 9 ; break; case 0x22: k = 10 ; break; case 0x12: k = 11 ; break; case 0x81: k = 12 ; break; case 0x41: k = 13 ; break; case 0x21: k = 14 ; break;
case 0x11: k = 15 ; break; default : break; } if(FY==0) {
/*根据所得的K值设定计数器1的计数初值*/ 音符
} } } }
STH0 = tab[k]/256; STL0 = tab[k]%6;
TR0 = 1; //开始计数
while ((P0&0xf0)!=0xf0); //若没有松开按键,则等待,等待期间弹奏该 TR0=0; //若按键松开,则停止计数,不产生脉冲输出 }
else {
while (FY==1) {
if(Song[k][Tone_Index]==-1) Tone_Index=0;
STH0=(tab[Song[k][Tone_Index]])/256; STL0=(tab[Song[k][Tone_Index]])%6; P2=DSY_CODE[Song[k][Tone_Index]]; TR0 = 1;
delay1(300*Len[k][Tone_Index]); Tone_Index++; TR0=0; } }