|
|
在做智能小車時(shí)遇到點(diǎn)問(wèn)題,請(qǐng)教大佬們幫我看看問(wèn)題,我現(xiàn)在要實(shí)現(xiàn)小車按照我設(shè)定的路線行走,同時(shí)還要用蜂鳴器播放音樂(lè),應(yīng)該怎么做呢?另外就是我的按鍵切換到了播放音樂(lè)這個(gè)功能也就是case4的時(shí)候,在按鍵的時(shí)候不能切換到case1,讓音樂(lè)立馬停止應(yīng)該怎么做呢?
- void wudao(void)
- {
- tingzhi();
- Delay1ms(150);
- qianjin();
- Delay1ms(2000);
- tingzhi();
- Delay1ms(150);
- youzhuan();
- Delay1ms(300);
- qianjin();
- Delay1ms(2000);
- zuozhuan();
- Delay1ms(300);
- qianjin();
- Delay1ms(2000);
- }
- void music(void)
- {
- // unsigned char t1;
- unsigned char p,m; //m為頻率常數(shù)變量
- unsigned char i=0;
- TMOD&=0x0f;
- TMOD|=0x01;
- TH0=0xd8;TL0=0xef;
- IE=0x82;
- wudao();
- play:
- while(1)
- {
- a: p=music_tab[i];
- if(p==0x00) { i=0, delay4(1000); goto play;} //如果碰到結(jié)束符,延時(shí)1秒,回到開(kāi)始再來(lái)一遍
- else if(p==0xff) { i=i+1;delay4(100),TR0=0; goto a;} //若碰到休止符,延時(shí)100ms,繼續(xù)取下一音符
- else {m=music_tab[i++], n=music_tab[i++];}//取頻率常數(shù) 和 節(jié)拍常數(shù)
- TR0=1; //開(kāi)定時(shí)器1
- while(n!=0) Beep=~Beep,delay3(m); //等待節(jié)拍完成, 通過(guò)P1口輸出音頻(可多聲道哦!)
- TR0=0; //關(guān)定時(shí)器1
- }
- }
- void main() //主程序入口
- {
- bit RunFlag=0; //定義小車運(yùn)行標(biāo)志位
- // LedFlash=3000; //對(duì)閃燈數(shù)據(jù)進(jìn)行初始化
- // EX1=1; //同意開(kāi)啟外部中斷1
- IT1=1; //設(shè)定外部中斷1為低邊緣觸發(fā)類型
- EA=1; //總中斷開(kāi)啟
- tingzhi();
- //初始化小車運(yùn)行狀態(tài)
-
- while(1) //程序主循環(huán)
- {
- if(P3_2 == 0)
- {
- delay_nms(10);
- if(P3_2 == 0)
- {
- temp++;
- while(!P3_2);
- }
- }
- // if(temp > 4)
- // {
- // temp = 1;
- // }
- switch(temp)
- {
- case 1:{Beep=1;tingzhi();TR0=0;break; }
-
- case 2:{Robot_Avoidance();EX1 = 0;break;}
- case 3:{EX1 = 1;break;}
- case 4:{tingzhi();music();EX1=0;break;}
- default :
- {
- temp=1; //恢復(fù)正常模式
- break;
- }
-
- }
- }
- }
復(fù)制代碼
|
|