久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 787|回復: 3
打印 上一主題 下一主題
收起左側

有人可以幫改一下這個程序嗎?不知道怎么改

[復制鏈接]
跳轉到指定樓層
樓主
ID:1137966 發表于 2024-11-28 20:03 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
sbit SPK = P1 ^ 2;    //定義喇叭接口
sbit KEY = P3 ^ 3;    //設置獨立按鍵INT1,按下按鍵時切換歌曲
sbit LED = P1 ^ 7;    //用于切換歌曲的顯示,當LED = 1時播放鈴兒響叮當,否則播放Spider Dance
int Timer0_H, Timer0_L, Time; //定義定時器變量和時間變量

code unsigned char MUSIC1[] = { //歌曲“鈴兒響叮當”的樂譜,每個音由3個變量構成,前兩個變量用來確定音樂頻率,第三個變量確定持續時間
    3,2,2,3,2,2,  3,2,4,  3,2,2,3,2,2,  3,2,4,
    3,2,2,5,2,2,  1,2,3,2,2,1,  3,2,8,
    4,2,2,4,2,2,  4,2,2,4,2,2,  4,2,2,3,2,2,  3,2,2,3,2,2,
    5,2,2,5,2,2,  4,2,2,2,2,2,  1,2,4,  1,3,4, 0,0,0
};
code unsigned char MUSIC2[] = { //歌曲“Spider Dance”的樂譜,如果前兩個變量為(0,0)時則為空拍
    6,3,4,   3,3,4,   1,3,4,   6,2,4,
        0,0,2,   2,3,2,          2,3,2,   0,0,4,   2,3,2,   1,3,2,   5,2,2,   6,2,2,
        0,0,2,   3,3,2,   2,3,2,   1,3,2,   2,3,2,   3,3,2,   5,2,2,   6,2,2,
        1,3,2,   6,2,2,   5,2,2,   6,3,2,   0,0,2,   5,3,2,   3,3,1,   2,3,1,   1,3,2,
        6,2,4,   4,2,4,   7,2,4,   4,2,4,
        1,3,4,   4,2,4,   2,3,8,
        3,3,4,   2,3,4,   6,3,4,   3,3,4,
        5,3,4,   4,3,4,   3,3,4,   0,0,4,
        6,3,2,         3,4,2,          2,4,2,   3,4,2,   6,3,2,         3,4,2,          2,4,2,   3,4,2,
        3,3,2,         2,4,2,          2,4,2,   2,4,2,        3,3,2,         3,4,2,          7,3,2,   2,4,2,
        6,3,2,         3,4,2,          2,4,2,   3,4,2,   7,3,2,         3,4,2,          2,4,2,   3,4,2,
        1,4,2,         3,4,2,          2,4,2,   3,4,2,        2,4,2,         4,4,2,          3,4,2,   4,4,2,
        4,3,2,         1,4,2,          7,3,2,   1,4,2,        4,3,2,         2,4,2,          1,4,2,   2,4,2,
        4,3,2,         3,4,2,          2,4,2,   3,4,2,        4,3,2,         4,4,2,          3,4,2,   4,4,2, 0,0,0


};

code unsigned char FREQH[]= { //頻率表前八位,第0行頻率為低兩個8度的音,第1行頻率為低一個8度的音,第2行為正常音,第3行為高8度的音
                                //(抱歉,樂理基礎沒學好,音的標準說法忘了咋說了,懂意思就好)
                                // 比如說正常音la,持續時間為2,那就是(6,2,2)
    0xF2,0XF3,0xF5,0xF5,0XF6,0XF7,0XF8,
    0xF9,0XF9,0XFA,0XFA,0XFB,0XFB,0XFC,0XFC,
    0xFC,0XFD,0XFD,0XFD,0XFD,0XFE,
    0xFE,0XFE,0XFE,0XFE,0XFE,0XFE,0XFF
};

code unsigned char  FREQL[]= { //頻率表后八位
    0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
    0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F,
    0xEE,0x44,0x6B,0xB4,0xF4,0x2D,
    0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16
};

void DelayUs2x(unsigned char t)  //延遲函數
{
    while (--t)
    {

    }
}
void DelayMs(unsigned char t) //延遲時間函數,略微修改,時間不準
{
    while (--t)
    {
        DelayUs2x(245);
    }
}
void delay(unsigned char t)  //延遲時間函數
{
    unsigned char i;
    for (i = 0; i < t; i++)
        DelayMs(125);
    TR0 = 0;
}

void Init_Timer0(void) //定時器初始化函數
{
    TMOD |= 0x01; //模式1,16位定時器/計數器
    EA = 1; //總中斷打開
    ET0 = 1; //定時器中斷打開
}
void TIM0_ISR() interrupt 1  //定時器中斷函數,用于讀取音符頻率值,產生對應的音符
{
    TR0 = 0; //定時器暫停
    SPK = !SPK; //喇叭反轉
    TH0 = Timer0_H; //重置定時
    TL0 = Timer0_L;
    TR0 = 1; //定時器開始
}

void Song()
{
    if (Timer0_H == -1 && Timer0_L == -1) //空拍判斷,喇叭不發聲
    {
        delay(Time);
    }
    else
    {
        TH0 = Timer0_H;  //重置定時
        TL0 = Timer0_L;
        TR0 = 1;  
        delay(Time);
    }
}

void main(void)
{
    unsigned char k, i;
    Init_Timer0();
    KEY = 1;
    LED = 1;
    while (1)
    {
        i = 0;
        if (LED) //播放“鈴兒響叮當”
        {
            while (i < 76) //這個數字是MUSIC數組里的變量數
            {
                k = MUSIC1[i] + 7 * MUSIC1[i + 1] - 1;//頻率位置,用兩個變量進行判斷
                Timer0_H = FREQH[k];// 獲取頻率高八位
                Timer0_L = FREQL[k];// 獲取頻率低八位
                Time = MUSIC1[i + 2];// 獲取持續時間
                i += 3;
                Song();
                if (!KEY) //判斷獨立按鍵按下
                {
                    while (!KEY) //判斷按鍵釋放
                    { }
                    LED = !LED; //切歌
                    break;
                }
            }
        }
        else
        {
            while (i < 280) //播放“Spider Dance”
            {
                k = MUSIC2[i] + 7 * MUSIC2[i + 1] - 1;
                Timer0_H = FREQH[k];
                Timer0_L = FREQL[k];
                Time = MUSIC2[i + 2];
                i += 3;
                Song();
                if (!KEY)
                {
                    while (!KEY)
                    { }
                    LED = !LED;
                    break;
                }
            }
        }
    }
}


錯誤: Build target 'Target 1'
compiling aaaaa.c...
AAAAA.C(33): error C141: syntax error near ';'
AAAAA.C(34): error C141: syntax error near ';'
Target not created
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:878061 發表于 2024-11-29 08:11 | 只看該作者
我幫你試過了,程序編譯沒有問題,編譯直接通過

1.png (142 KB, 下載次數: 0)

1.png
回復

使用道具 舉報

板凳
ID:136485 發表于 2024-11-29 08:43 | 只看該作者
我編譯是可以通過啊,你要改成什么樣都不說明,別人怎么幫你改
回復

使用道具 舉報

地板
ID:584814 發表于 2024-11-29 14:41 | 只看該作者
編譯正常通過,蛔蟲知道答案
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久久 | 成人无遮挡毛片免费看 | 在线观看免费av网 | 涩涩视频在线观看免费 | 久久大陆| 亚洲精品久久 | 鲁视频| 国产精品视频不卡 | 久久久高清| 密室大逃脱第六季大神版在线观看 | 在线免费看毛片 | a级网站| 精品不卡| 久久亚洲综合 | 亚洲精品日韩综合观看成人91 | 国产精品99久久久久久宅男 | 色婷婷亚洲国产女人的天堂 | 午夜影视大全 | 精品自拍视频在线观看 | 久久国产一区二区 | 国产美女在线免费观看 | 欧美福利 | www国产亚洲精品 | 91综合在线观看 | 国产精品高清一区二区三区 | 久久久婷 | 一级毛片中国 | 亚洲一区二区三区免费 | 97精品超碰一区二区三区 | 欧美专区在线视频 | av中文字幕在线播放 | 欧美精品一区二区三区视频 | 天天久久 | 99精彩视频 | 久久久毛片 | 免费看国产片在线观看 | 国产第二页 | 欧美黄色一区 | 久久精品在线播放 | 欧美一级黄色片免费观看 | 欧日韩在线 |