欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 程序插入單片機開發板 沒聲音 是我輸出有問題嘛? [打印本頁]

作者: 2993880071    時間: 2021-6-17 15:09
標題: 程序插入單片機開發板 沒聲音 是我輸出有問題嘛?
程序插入開發板 開發板沒聲音 是我輸出有問題嘛?是普中51開發板

#include<REG52.H>
#define sound_amount 5
//位定義
sbit Beep =  P1^5 ;
sbit play_up=P1^3;
sbit play_down=P3^5;
sbit pause=P3^2;
sbit speaker=P1^0;
//全局變量
unsigned char timerOh,timer01,time;
unsigned char music_num ;
unsigned int num;
signed int fre;
bit play_enable;
//函數申明
void delay(unsigned char t);
void delayms (unsigned int t) ;
void music_play (void) ;

//《煙花易冷》
unsigned char code song1[]={
            5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4,
         5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4,
         3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,2,1, 1,2,1,
         2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1,
         1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1,
         7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1,
         6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2,
         5,1,2, 6,1,6, 0,0,0 };
//《發如雪》
unsigned char code song2[]={
     5,2,2, 1,1,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1,
         3,2,1, 6,2,1, 5,2,1, 3,2,1, 5,2,3, 5,2,1, 6,2,1, 1,3,2, 6,2,1, 5,2,1,
         3,2,1, 5,2,1, 3,2,2, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 6,1,1, 3,2,1, 2,2,1,
         5,1,1, 2,2,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1,
         5,2,1, 3,2,1, 5,2,1, 3,2,2, 1,2,1, 6,1,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1,
         1,2,1, 2,2,1, 2,2,1, 1,2,4, 0,0,0 };
//《簡單愛》
unsigned char code song3[]={
     5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1,
         4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1,
         5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1,
         3,3,1, 3,2,1, 1,2,1, 5,2,1, 1,2,1, 5,2,1, 1,2,1, 7,1,1, 1,2,1, 1,2,1, 6,1,1,
         2,2,1, 2,2,1, 3,2,1, 3,2,1, 5,2,1, 5,2,1,
         4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1,
         5,2,1, 5,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1,
         3,2,1, 3,2,1, 1,2,2, 5,2,1, 1,2,1, 5,2,1, 5,2,1, 7,1,1, 1,2,1, 0,0,0 };
//頻率-半周期數據表高八位共保存了四個八度的28個頻率數據
unsigned char code FREQH[]={
     0xF2, 0xF3,0xF5, 0xF5,0xF6, 0xF7, 0xF8, //低音1234567
         0xF9, 0xF9,0xFA, 0xFA,0xFB, 0xFB, 0xFC, 0xFC, //中音1234567
         0xFC, 0xFD,0xFD, 0xFD,0xFD, 0xFE,  //高音234567
         0xFE, 0xFE,0xFE, 0xFE,0xFE, 0xFE, 0xFE, 0xFF};//超高音1234567
//頻率-半周期數據表低八位
unsigned char code  FREQL[]={
     0x42, 0xC1,0x17, 0xB6, //低音1234567
         0x21, 0xE1,0x8C, 0xD8,0x68, 0xE9, 0x5B, 0x8F, //中音1234567
         0xEE, 0x44,0x6B, 0xB4,0xF4, 0x2D,  //高音234567
         0x47, 0x77,0xA2, 0xB6,0xDA, 0xFA, 0x16}; //超高音1234567



void main(void)
{
        TMOD=0x11;
        ET0 =1;
        EA=1;
        while(1)
        {
                music_play();
                if(!pause)
                {
                        if(!pause)
                        {
                                if(music_num==0)
                                {
                                        music_num=1;
                                        num=0;
                                        play_enable=1;
                                }
                                else
                                {
                                        play_enable=~play_enable;
                                        speaker=1;
                                }                                       
                                while(!pause)
                                {
                                        if(play_enable==0){}
                                }
                        }
                }
                if((!play_up)&&(music_num!=0))
                {
                                delayms(5);
                                if((!play_up)&&(music_num!=0))
                                {  speaker=1;
                                music_num-=1;
                                if(music_num<=0)
                                music_num=3;
                                num=0;
                                if(music_num==(sound_amount+1))
                                music_num=1;
                                delayms(500);
                                }
                }
                if((!play_down)&&(music_num!=0))
                {
                                delayms(5);
                                if((!play_down)&&(music_num!=0))
                                {  speaker=1;
                                music_num-=1;
                                num=0;
                                if(music_num==0)
                                music_num=sound_amount;
                                delayms(500);
                                }
                }        
        }
}

//延時函數(毫秒)
void delayms(unsigned int t)
{
        unsigned int i,j;
        for(i=0;i<t;i++)
        {
                for(j=0;j<123;j++);
        }
}


//延時函數
void delay(unsigned char t)
{
        unsigned char t1;
        unsigned char t2;
        for(t1=0;t1<t;t1++)
        {
                for(t2=0;t2<8000;t2++)
                {
                        ;
                }
        }
        TR0=0;
}

//定時器0中斷函數
void timer0(void) interrupt 1
{
        speaker=!speaker;
        TH0= timerOh;
        TL0=timer01;
}


void song(void)
{
        TH0= timerOh;
        TR0=1;
        delay(time);
}



void music_play(void)
{
        if((music_num==1)&&(play_enable==1))
        {
                fre=song1[num]+7*song1[num+1]-1;
                 timerOh=FREQH[fre];
                timer01=FREQL[fre];
                time=song1[num+2];
                num+=3;
                if(fre<0)
                {
                        num=0;
                        music_num=2;
                }
                song();
        }
        if((music_num==2)&&(play_enable==1))
        {
                fre=song2[num]+7*song2[num+1]-1;
                 timerOh=FREQH[fre];
                num+=3;
                if(fre<0)
                {        
                        num=0;
                        music_num=3;
                }
                        song();
        }
        if((music_num==3)&&(play_enable==1))
        {
                fre=song3[num]+7*song3[num+1]-1;
                 timerOh=FREQH[fre];
                num+=3;
                if(fre<0)
                {
                        num=0;
                        music_num=3;
                }
                song();
        }
}








歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1