創作內容

0 GP

程式

作者:瑋│2007-11-21 12:08:49│巴幣:0│人氣:292
今天8051實習作了一個很有趣的程式
雖然我自己不太會做辣....
最後連燒程式都沒燒成功ˊˋ
不過可以任意改節拍感覺挺好玩的
希望之後能夠融會貫通~



/* 生日快樂歌實驗(happy.c) */
#include <reg51.h>
sbit speaker = P3^7; /*宣告輸出端*/
unsigned char i=0; /*宣告變數*/
unsigned char tone_H, tone_L; /*宣告計時量變數*/
void beat_125(unsigned char); /*宣告節拍函數*/
unsigned char song[]={ 5,3,3,4,2,2,1,2,3,4,5,5,5,15};//歌曲
unsigned char beat[]={ 8,8,16,8,8,16,8,8,8,8,8,8,8,16};//節拍
tone[]={ 1012, 956, 852, 759, 716, 638,
568, 506, 478, 426, 379 ,0};//音階定義
// ========主程式 ===============
main()
{
speaker=0; /*喇叭初始值*/
IE=0x82; //EA,ET0=1
TMOD=0x11; //Timer0-M0=1
// 初始設定

while(song[i]!=15) /*while迴圈開始*/
{
TH0=tone_H=(65536-tone[song[i]])/256;
TL0=tone_L=(65536-tone[song[i]])%256;
TR0=1;
// 設定 TH0,TL0 音階
// 放歌
beat_125(beat[i]); /*指定節拍*/
i++; /*下一個音*/
TR0=0; // 停止
} /*結束播放*/
} /*主程式結束*/
//====Timer 0中斷副程式==================
void tone_timer(void) interrupt 1 /* Timer 0中斷副程式開始*/
{ TH0=tone_H; /*填入計時量之高八位元*/
TL0=tone_L; /*填入計時量之低八位元*/
speaker=~speaker; /*喇叭反相輸出*/
} /*結束中斷副程式*/
//====節拍函數==================
void beat_125(unsigned char x) /*節拍函數開始*/
{ unsigned char i,j,k; /*宣告變數*/
for (i=0;i<x;i++) /*i迴圈*/
for (j=0;j<125;j++) /*j迴圈*/
for (k=0;k<120;k++); /*k迴圈*/





}
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=916663
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 2 篇留言

KO
大家都沒做出來= ="

11-21 23:01


嗯是阿ˊˋ
這段程式還是直接從佑齊的電腦上貼過來的= =
不過也謝謝你幫我留言~

11-26 21:24

我要留言提醒:您尚未登入,請先登入再留言

喜歡★jerryandhis 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:段考.模擬考.統測ˊˋ... 後一篇:幫巴哈想的一首打油詩~...

追蹤私訊切換新版閱覽

作品資料夾

rogerjian想找LINE貼圖的人
專為拼貼設計的新貼圖上架!看更多我要大聲說昨天22:09


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】