SOGO論壇

標題: 89S51 C語言 程式有問題 [列印本頁]

作者: grass0423    時間: 2015-4-29 17:17:18     標題: 89S51 C語言 程式有問題

本帖最後由 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;                                      // 跳出迴圈


        }}
作者: a0932881    時間: 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]);

作者: grass0423    時間: 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
作者: 乂羽人乂    時間: 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 應該有過才對吧




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM