線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:881
推到 Plurk!
推到 Facebook!

請問有人可以幫我看89S51的程式碼嗎?

尚未結案
lop56123
一般會員


發表:1
回覆:0
積分:0
註冊:2016-06-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2016-06-15 15:17:45 IP:61.227.xxx.xxx 訂閱
大家好,本人不才,因為學校期末要做89S51成品的小專題,所以參考網上別人的作品,是一個音樂盒,可以播雨夜花的旋律,但程式碼有錯不知道怎麼辦,我們課程也才剛上完,還有很多不懂的,我用的軟體是Keil uVision4,想請別人幫忙看看,有人可以幫我看看嗎,謝謝
一直出現error C216: subscript on non-array or too many dimensions


這是程式碼:
#include
sbit buzzer = P3^7; // 宣告輸出端
unsigned char i=0; // 宣告變數
unsigned char tone_H, tone_L; // 宣告計時量變數
void beat_125(unsigned char); // 宣告節拍函數
unsigned char code song4[]={2,2,3,5, 6,5,6,7,9,7,7,6,5, 6,
7,9,9,7,9, 5,6,6, 2,7,6,5, 5,
6,6,7,6,5, 3,2,3,5, 3,5,6,7, 9,
9,9,10,9,7, 7,6,5,3, 2,7,7,6,5, 5, 15};
unsigned char code beat4[]={12,4,8,8, 8,4,4,16, 12,4,4,8, 32,
12,4,8,4,4, 12,4,16, 12,4,8,4,4, 32,
12,4,8,4,4, 8,4,4,16, 12,8,8,8, 32,
12,4,8,4,4, 8,4,4,16, 12,4,8,4,4, 32,};
// ========主程式 ===============
main()
{ buzzer=1; // 蜂鳴器初始值
IE=0x82; // 啟用Timer 0
TMOD=0x01; // 設定MODE1
while(song4[i]!=15) // while迴圈開始
{ TH0=tone_H=(65536-tone_H[song4[i]])/256; //填入音階計數量之高八位元
TL0= tone_L=(65536-tone_L[song4[i]]) % 256;//填入音階計數量之低八位元
TR0=1; // 啟動Timer 0
beat_125(beat4[i]); // 指定節拍
i ; // 下一個音
TR0=0; // 關閉T0停止播放
buzzer=1; // 蜂鳴器不動作
} // 結束播放
} // 主程式結束
//====Timer 0中斷副程式==================
void tone_timer(void) interrupt 1 // Timer 0中斷副程式開始
{ TH0=tone_H; // 填入計時量之高八位元
TL0=tone_L; // 填入計時量之低八位元
buzzer=~buzzer; // 蜂鳴器反相輸出
} // 結束中斷副程式
//====節拍函數==================
void beat_125(unsigned char x) // 節拍函數開始
{ unsigned char i,j,k; // 宣告變數
for (i=0;i for (j=0;j<125;j ) // j迴圈
for (k=0;k<120;k ); // k迴圈
} // 結束節拍函數
系統時間:2018-01-20 9:07:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!