這個怎么理解?
#include <reg51.h>
#define u8 unsigned char
#define u16 unsigned int
sbit BEEP=P2^3;
void delay_ms(u16 x)//毫秒延時函式
{u16 i,j;
for(i=0;i<x;i++)
for(j=0;j<115;j++);
}
//生日快樂歌的音符頻率表,不同頻率由不同的延時來決定
u8 code SONG_TONE[]={212,212,190,212,159,169,212,212,190,212,142,159,212,212,106,126,159,169,190,119,119,126,159,142,159,0};
//生日快樂歌節拍表,節拍決定每個音符的演奏長短
u8 code SONG_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};
void PlayMusic()
{
u16 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;
//SONG_TONE延時表決定了每個音符的頻率
for(k=0;k<SONG_TONE[i]/3;k++);
}
delay_ms(10);
i++;
}
}
void main()
{
PlayMusic(); //播放生日快樂
while(1); //播放完后停止
}
uj5u.com熱心網友回復:
通過控制P2^3 管腳 高電平時間 頻率來控制輸出聲音,類似控制輸出pwm轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/171380.html
標籤:C++ 語言
上一篇:推薦一款IDEA神器!一鍵查看Java位元組碼以及其他類資訊
下一篇:安裝nfs錯誤
