在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)電子琴電路圖及源程序代碼

            單片機(jī)電子琴電路圖及源程序代碼

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏

            實(shí)驗(yàn)仿真圖

            本文引用地址:http://www.biyoush.com/article/201611/321258.htm

            源程序代碼:(彈奏部分代碼暫時(shí)去掉,見諒,需要的留言,轉(zhuǎn)載請(qǐng)注明出處,謝謝!)

            DUAN EQU 0c000H
            WEI EQU 0a000H
            LED0 EQU 8000H
            ORG 0000H ;復(fù)位地址
            LJMP MAIN ;跳轉(zhuǎn)到主程序
            ORG 0003H ;外部中斷0入口地址
            LJMP INT00 ;跳轉(zhuǎn)到外部中斷0服務(wù)程序
            ORG 000BH ;T0中斷入口
            LJMP TIM0 ;跳轉(zhuǎn)到T0中斷服務(wù)程序


            ORG 0030H ;主程序入口地址
            MAIN:

            MOV DPTR,#LED0
            MOV A,#00H
            MOVX @DPTR,A


            MOV TMOD,#01H ;寫入T0控制字, 16位定時(shí)方式
            SETB IT0 ;外部中斷為下降沿觸發(fā)
            MOV IE,#83H ;開中斷
            MOV 30H,#00H ;取簡(jiǎn)譜碼指針
            MOV R6,#0FFH ;選擇音樂(lè)節(jié)奏燈循環(huán)次數(shù)
            CLR 23H ;功能選擇標(biāo)志 00:鍵盤 01:音樂(lè)

            NEXT: CLR TR0
            JNB 23H,KEYPLAY ;若標(biāo)志位是0則轉(zhuǎn)到鍵盤程序
            SETB P2.2
            MOV A,30H ;簡(jiǎn)譜碼指針裝入A
            JNB P0.1,START1 ;否則查詢播放哪一首歌曲
            JNB P0.2,START2
            JNB P0.3,START3
            LJMP NEXT

            ;確定不同歌曲的基地址
            START1:

            MOV DPTR,#TABLE ;從TABLE處取簡(jiǎn)譜碼
            MOV 60H,DPH
            MOV 61H,DPL
            MOV A,#00H
            LJMP NEXT1
            START2:

            MOV DPTR,#TABLE2 ;從TABLE2處取簡(jiǎn)譜碼
            MOV 60H,DPH
            MOV 61H,DPL
            MOV A,#01H
            LJMP NEXT1
            START3:

            MOV DPTR,#TABLE3 ;從TABLE處取簡(jiǎn)譜碼
            MOV 60H,DPH
            MOV 61H,DPL
            MOV A,#02H
            LJMP NEXT1

            ;鍵盤彈奏程序入口
            KEYPLAY: ;鍵盤程序入口
            SETB P2.1
            CLR P2.2
            JNB P0.4,LOWTONE ;查詢是高音還是其他的音
            JNB P0.5,MIDDLETONE
            JNB P0.6,HIGHTONE
            LJMP NEXT ;沒有選擇高中低音則重新查詢


            ;確定高中低音基地址
            LOWTONE:
            MOV DPTR,#LOWTABLE ;賦基地址值
            MOV 50H,DPH
            MOV 51H,DPL
            LJMP KEY ;跳轉(zhuǎn)到按鍵查詢程序

            MIDDLETONE:
            MOV DPTR,#MIDDLETABLE
            MOV 50H,DPH
            MOV 51H,DPL
            LJMP KEY

            HIGHTONE:
            MOV DPTR,#HIGHTABLE
            MOV 50H,DPH
            MOV 51H,DPL
            LJMP KEY


            ;歌曲播放程序
            NEXT1: MOV DPTR,#SEG7
            MOVC A,@A+DPTR
            MOV DPTR,#DUAN
            MOVX @DPTR,A
            MOV DPTR,#WEI
            MOV A,#000BH
            MOVX @DPTR,A
            MOV DPH,60H
            MOV DPL,61H
            MOV A,30H
            MOVC A,@A+DPTR
            MOV R2,A ;取得的簡(jiǎn)譜碼暫存于R2
            JZ END0 ;是否取到結(jié)束碼00H
            ANL A,#0FH ;不是,則取節(jié)拍碼
            MOV R5,A ;節(jié)拍碼存于R5
            MOV A,R2 ;將簡(jiǎn)譜碼裝入A
            SWAP A ;高、低4位交換
            ANL A,#0FH ;取音符碼
            JNZ SING ;取得的音符碼是否為0?
            CLR TR0 ;是則不發(fā)音
            lJMP D1 ;跳轉(zhuǎn)到D1

            SING: DEC A ;取得的音符碼減1(不含0)
            MOV 22H,A ;存入22H單元
            RL A ;乘2
            MOV DPTR,#TABLE1 ;到TABLE1中取相對(duì)的高位字節(jié)值
            MOVC A,@A+DPTR
            MOV TH0,A ;取得的高位字節(jié)裝入TH0和21H單元
            MOV 21H,A
            MOV A,22H ;再裝入取得的音符碼
            Rl A ;乘2
            INC A ;加1
            MOVC A,@A+DPTR ;到TABLE1中取相對(duì)的低位字節(jié)值
            MOV TL0,A ;取得的高位字節(jié)裝入TL0和20H單元
            MOV 20H,A
            SETB TR0 ;啟動(dòng)T0
            D1: LCALL DELAY ;基本單位時(shí)間1/4拍,延時(shí)187毫秒
            INC 30H ;取簡(jiǎn)譜碼指針加1
            LJMP NEXT ;取下一個(gè)碼
            END0: CLR TR0 ;停止T0
            CLR 30H ;清零簡(jiǎn)樸指針
            LJMP NEXT ;重復(fù)循環(huán)


            上一頁(yè) 1 2 下一頁(yè)

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉