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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求大神幫忙看一下程序 音樂噴泉控制 能達到目的嗎

[復制鏈接]
跳轉到指定樓層
樓主
ID:356578 發表于 2018-6-27 13:18 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
               ORG    0000H                    ;主程序起始地址
               LJMP   KONGZHI               ;跳至控制程序
               ORG    000BH                    ;TIMER0中斷起始地址
               LJMP   TIM0                  ;跳至TIMER0中斷子程

KONGZHI:       MOV    P1,#0FFH              ;P1口初始化(低四位為輸入、高四位輸出口)
               JNB    P1.0,MUSIC1           ;P1.0口為0放第一曲
               JNB    P1.1,MUSIC2           ;P1.1口為0放第二曲
               JNB    P1.2,MUSIC3           ;P1.2口為0放第三曲
               JNB    P1.3,XUNHUAN          ;P1.3口為0執行循環
               MOV    5CH,#00H              ;P1.3口為1順序執行一次結束
               AJMP   START                 ;放第一首歌曲
MUSIC1:        MOV    5CH,#00H              ;取第一首歌的簡譜指針
               MOV    20H,P1                ;將P1.0口的值暫存于20H單元
               SETB   P1.0                  ;恢復P1.0的初值
               AJMP   START                 ;執行循環
MUSIC2:        MOV    5CH,#01H              ;取第二首歌的簡譜指針
               MOV    20H,P1                ;將P1.1口的值暫存于20H單元
               SETB   P1.1                  ;恢復P1.1的初值
               AJMP   START                 ;執行循環
MUSIC3:        MOV    5CH,#02H              ;取第三首歌的簡譜指針
               MOV    20H,P1                ;將P1.2口的值暫存于20H單元
               SETB   P1.2                  ;恢復P1.2的初值
               AJMP   START                 ;執行循環
XUNHUAN:       MOV    5CH,#00H
               MOV    21H,P1                ;將P1.3口的值暫存于21H單元
               SETB   P1.3                  ;恢復P1.3的初值
               AJMP   START                 ;跳至主程序

START:         MOV    TMOD,#01H                    ;設TIMER0在MODE1
               MOV    IE,#82H               ;中斷使能
START0:        MOV    30H,#00H              ;取簡譜碼指針
NEXT:                MOV    A,30H                 ;簡譜碼指針載入A
                      MOV    DPTR,#TABLE           ;至TABLE取簡譜碼
               MOVC   A,@A+DPTR      
               MOV    R2,A                  ;取到的簡譜碼暫存于R2
               JZ     END0                  ;是否取到00(結束碼)?
               ANL    A,#0FH                ;不是,則取低4位(節拍碼)
               MOV    90H,A                 ;為調速保存數據
               MOV    R5,A                  ;將節拍碼存入R5
               MOV    A,R2                  ;將取到的簡譜碼再載入A
               SWAP   A                     ;高低4位交換
               ANL    A,#0FH                ;取低4位(音符碼)
               MOV    90H,A                 ;保存音符碼,為調速做準備
               JNZ    SING                  ;取到的音符碼是否為0?
               CLR    TR0                   ;是,則不發音
               JMP    D1                    ;跳至D1
SING:                DEC    A                     ;取到的音符碼減1(不含0)
               MOV    22H,A                    ;存入(22H)
               RL     A                     ;乘2
               MOV    DPTR,#TABLE1          ;至TABLE1取相對的高位字節計數值
               MOVC   A,@A+DPTR      
               MOV    TH0,A                 ;取到的高位字節存入TH0
               MOV    21H,A                 ;取到的高位字節存入(21H)
               MOV    A,22H                    ;再載入取到的音符碼
               RL     A                     ;乘2
               INC    A                     ;加1
               MOVC   A,@A+DPTR             ;至TABLE1取相對的低位字節計數值
               MOV    TL0,A                 ;取到的低位字節存入TL0
               MOV    20H,A                 ;取到的低位字節存入(20H)
               SETB   TR0                   ;啟動TIMER0
D1:                LCALL  TIAOSU                ;調用以1/4拍為基本單位時間的調速子程序
               INC    30H                   ;取簡譜碼指針加1
               JMP    NEXT                  ;取下一個碼
END0:                CLR    TR0                   ;停止TIMER0
                     JMP    START0                ;重復循環
                     
TIM0:          PUSH   ACC                   ;將A的值暫存于堆棧
                    PUSH   PSW                   ;將PSW的值暫存于堆棧
               MOV    TL0,20H               ;重設計數值
                   MOV    TH0,21H
               CPL    P1.0                  ;將P1.0位反相
               POP    PSW                   ;至堆棧取回PSW的值
               POP    ACC                   ;至堆棧取回A的值
               RETI                         ;返回主程序
TABLE1:
               DW         63625,63833,64019,64104,64260,64400,64524 ;低音區:1 2 3 4 5 6 7
               DW          64580,64685,64778,64820,64898,64968,65030 ;中音區:1 2 3 4 5 6 7
               DW         65058,65110,65157,65178,65217,65252,65283 ;高音區:1 2 3 4 5 6 7
               DW         65297                                     ;超高音:1


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:74784 發表于 2018-6-27 22:53 | 只看該作者
控制音樂噴泉還要有配套的硬件
光是代碼不行啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久国产a级 欧美日本韩国一区二区 | 看羞羞视频免费 | 欧美乱大交xxxxx另类电影 | 国产精品1 | 国产视频二区在线观看 | 夜夜久久 | 亚洲国产精品自拍 | 四虎av电影 | 成人深夜福利 | 鸳鸯谱在线观看高清 | 国产亚洲精品久久久优势 | 亚洲精品www | 噜久寡妇噜噜久久寡妇 | 日韩在线视频免费观看 | 久久久久国产精品一区二区 | 一区二区久久 | 亚洲精品视频免费观看 | www.日韩系列| 狠狠干网站 | 成人一区二区三区 | 亚洲最色视频 | 亚洲精品一 | 国产乱码精品一区二区三区五月婷 | 91精品综合久久久久久五月天 | 久久精品久久久 | 日本不卡一区二区三区 | 日日天天| 蜜臀久久99精品久久久久野外 | 夜夜av | 亚洲国产成人在线 | 激情一区二区三区 | 日韩一区二区av | 久久精品国产99国产精品亚洲 | 亚洲色欲色欲www | 欧美在线观看一区二区 | 国产激情91久久精品导航 | 久久69精品久久久久久国产越南 | 精品乱码一区二区 | 国产欧美日韩一区 | 久久aⅴ乱码一区二区三区 91综合网 | 日本又色又爽又黄的大片 |