|
此例为单音频输出,想学习51的师兄可以先从此入手。
代码:
#include<reg51.h>
sbit SOND=P1^0;
sbit KL=P3^0;
sbit KH=P3^2;
void tone(unsigned char t)
{
unsigned char j;
unsigned int i;
for(i=0;i<(30000/t);i++)
{
SOND=~SOND;
for(j=0;j<t;j++);
}
SOND=0;
}
void main()
{
unsigned char n,k;
unsigned int t;
unsigned char T[21]=
{219,193,170,159,139,122,107,100,87,75,70,60,52,43,40,33,27,25,20,16,12}; //音符1-7的高低音
while(1)
{
if((KL==0)&(KH!=0)) n=0;
else if((KH==0)&(KL!=0)) n=2;
else n=1;
if((~(P1|0x01))!=0)
{
k=P1|0x01;
for(t=0;t<2000;t++);
while((~(P1|0x01))!=0);
switch(k)
{
case 0xfd:tone(T[1+n*7]);break;//音符1
case 0xfb:tone(T[2+n*7]);break;//音符2
case 0xf7:tone(T[3+n*7]);break;//音符3
case 0xef:tone(T[4+n*7]);break;//音符4
case 0xdf:tone(T[5+n*7]);break;//音符5
case 0xbf:tone(T[6+n*7]);break;//音符6
case 0x7f:tone(T[7+n*7]);break;//音符7
default:;
}
}
}
}
|
|