/* 名称:演奏音阶
说明:本例使用定时器演奏一段音
阶,播放由K1控制。
*/
#includereg51.h>
#defineucharunsignedchar
#defineuintunsignedint
sbitK1=P1^0;
sbitSPK=P3^4;
uinti=0; //音符索引
//14个音符放在方式2下的定时寄存器
(TH0,TL0)
ucharcodeHI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};
ucharcodeLO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};
//定时器0中断函数
voidT0_INT()interrupt1
{
TL0=LO_LIST[i];
TH0=HI_LIST[i];
SPK=~SPK;
}
//延时
voidDelayMS(uintms)
{
uchart;
while(ms--)for(t=0;t120;t++);
}
//主程序
voidmain()
{
TMOD=0x00; //T0方式0
IE=0x82;
SPK=0;
while(1)
{while(K1==1);//未按键等待
while(K1==0);//等待释放
for(i=1;i15;i++)
{
TR0=1; //播放一个音符
DelayMS(500); //播放延时
TR0=0;
} DelayMS(50);
}
推荐阅读:用定时器设计的门铃程序