#include
int code Yinfu[]={64021,64103,64260,64400,64524,64580,64684};
sbit beep = P2^7;
unsigned char KEY;
void delay()
{
int i;
for(i=0;i<240;i++);
}
void play() interrupt 1
{
TH0 = Yinfu[KEY]/256;
TL0 = Yinfu[KEY]%256;
beep = ~beep;
}
unsigned char scan()
{
unsigned char res;
switch(P1)
{
case 0xfe:res=0;break;
case 0xfd:res=1;break;
case 0xfb:res=2;break;
case 0xf7:res=3;break;
case 0xef:res=4;break;
case 0xdf:res=5;break;
case 0xbf:res=6;break;
}
return res;
}
void main()
{
TMOD = 0x01;
IE = 0x82;
while(1)
{
P1 = 0xff;
if(P1 != 0xff)
{
delay();
if(P1 != 0xff)
{
KEY = scan();
TR0 = 1;
}
}
else
{
TR0 = 0;
beep = 1;
}
delay();
}
}
就是输出不同的频率呀。一共有八个频率。