SOGO論壇
  登入   註冊   找回密碼
查看: 1318|回覆: 3
列印 上一主題 下一主題

[問題求助] 89S51 C語言 程式有問題 [複製連結]

Rank: 2

狀態︰ 離線
跳轉到指定樓層
1
發表於 2015-4-29 17:17:18 |只看該作者 |正序瀏覽
本帖最後由 grass0423 於 2015-4-30 09:54 編輯

各位大哥,可否幫我看一下這是89s51,C語言 有關音效的片段程式碼
其中聲音共四段,有三段沒問題,但是就 SND_FAIL 一直有問題
SND_FAIL 在最後發聲宣告程式中
就case SND_FAIL:這段程式一直編不過,語法和其他三段一樣其他三段都沒問題
就這段一直出現
2014-11-20.C(339): error C202: 'SND_FF': undefined identifier
各位大大可以幫忙一下嗎??


#define SND_RANDOM                1  //  隨機
#define SND_SUCCESS                2  //  成功
#define SND_FAIL                        3  //  失敗           (沒成功 再補錯)
#define SND_NORMAL                4  //  正常

unsigned char  code tone1[1][5] = {
        {57, 51, 45, 43, 38} };

unsigned char  code tone2[1][1] = {  
        {30} };
unsigned char  code tone3[1][3] = {       // SND_FAIL
        {115, 153, 153} };


unsigned char  code tone4[1][19] = {     // success
        {77, 77, 57, 57, 45, 45, 38, 38, 38, 38, 45, 45, 45, 38, 38, 38, 38, 38, 38} };


//=======發出 聲音===============
void playSound(int x) {                   // 宣告 發出 聲音(區域名稱 X)
        int idx, idy, idz;                // 可能是聲音原始碼
        switch(x) {                       // 開關(X)
        case SND_RANDOM:                              // 案件 (snd音效格式檔 隨機)
                for(idx = 0; idx < 1; idx++) {
                        for(idy = 0; idy < 1; idy++) {
                                for(idz = 0; idz < 50; idz++) {
                                        SPK = 0;                       // (蜂音器 = 按)
                                        delay8us(tone2[idx][idy]);
                                        SPK = 1;                       // (蜂音器 = 沒按)
                                        delay8us(tone2[idx][idy]);                                               
                                } } }
                break;                     // 跳出迴圈
        case SND_SUCCESS:                              // 案件 (snd音效格式檔 成功)
                for(idx = 0; idx < 1; idx++) {
                        for(idy = 0; idy < 19; idy++) {
                                for(idz = 0; idz < 50; idz++) {
                                        SPK = 0;                        // (蜂音器 = 按)
                                        delay8us(tone4[idx][idy]);
                                        SPK = 1;                        // (蜂音器 = 沒按)
                                        delay8us(tone4[idx][idy]);                                               
                                } } }
                break;  
        case SND_FAIL:                                 //音效 正常
                for(idx = 0; idx < 1; idx++) {
                        for(idy = 0; idy < 3; idy++) {
                                for(idz = 0; idz < 50; idz++) {
                                        SPK = 0;                         // (蜂音器 = 按)
                                        delay8us(tone3[idx][idy]);
                                        SPK = 1;                         // (蜂音器 = 沒按)
                                        delay8us(tone3[idx][idy]);                                               
                                } } }
                break;                                      // 跳出迴圈


        }}
喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

Rank: 4

狀態︰ 離線
4
發表於 2015-6-17 16:23:55 |只看該作者
大大
我用程式幫你跑了一下
加了include 89X51以及define SPK的定義
整個程式只有說少了delay8us副程式
test.c(29): warning C206: 'delay8us': missing function-prototype

這樣我就有個問題要問你了,請問你有把delay8us定義出來嗎?
如何寫的?
以上兩個問題
而且我有點錯亂
SND_FAIL他應該為音效錯誤的時候吧!!
另外SND_FAIL  3 應該有過才對吧

Rank: 2

狀態︰ 離線
3
發表於 2015-4-30 09:56:03 |只看該作者
#define SND_FAIL                        3  //  失敗           (沒成功 再補錯)
unsigned char  code tone3[1][3] = {       // SND_FAIL
        {115, 153, 153} };

case SND_FAIL:                                 //音效 正常
                for(idx = 0; idx < 1; idx++) {
                        for(idy = 0; idy < 3; idy++) {
                                for(idz = 0; idz < 50; idz++) {
                                        SPK = 0;                         // (蜂音器 = 按)
                                        delay8us(tone3[idx][idy]);
                                        SPK = 1;                         // (蜂音器 = 沒按)
                                        delay8us(tone3[idx][idy]);                                                
                                } } }
                break;                                      // 跳出迴圈

都修改過但是一樣  2014-11-20.C(255): error C202: 'SND_FAIL': undefined identifier

狀態︰ 離線
2
發表於 2015-4-29 23:37:16 |只看該作者
本帖最後由 a0932881 於 2015-4-29 23:41 編輯

你SND_FAIL 是 tone3?

unsigned char  code tone3[1][3] = {       // SND_FAIL
        {115, 115, 115} };

但你下面 case SND_FAIL:

用tone1?

delay8us(tone1[idx][idy]);
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-11-26 07:03

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部