欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 求大神幫忙看一下程序 音樂噴泉控制 能達(dá)到目的嗎 [打印本頁]

作者: 假裝舍不得我吧    時(shí)間: 2018-6-27 13:18
標(biāo)題: 求大神幫忙看一下程序 音樂噴泉控制 能達(dá)到目的嗎
               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執(zhí)行循環(huán)
               MOV    5CH,#00H              ;P1.3口為1順序執(zhí)行一次結(jié)束
               AJMP   START                 ;放第一首歌曲
MUSIC1:        MOV    5CH,#00H              ;取第一首歌的簡譜指針
               MOV    20H,P1                ;將P1.0口的值暫存于20H單元
               SETB   P1.0                  ;恢復(fù)P1.0的初值
               AJMP   START                 ;執(zhí)行循環(huán)
MUSIC2:        MOV    5CH,#01H              ;取第二首歌的簡譜指針
               MOV    20H,P1                ;將P1.1口的值暫存于20H單元
               SETB   P1.1                  ;恢復(fù)P1.1的初值
               AJMP   START                 ;執(zhí)行循環(huán)
MUSIC3:        MOV    5CH,#02H              ;取第三首歌的簡譜指針
               MOV    20H,P1                ;將P1.2口的值暫存于20H單元
               SETB   P1.2                  ;恢復(fù)P1.2的初值
               AJMP   START                 ;執(zhí)行循環(huán)
XUNHUAN:       MOV    5CH,#00H
               MOV    21H,P1                ;將P1.3口的值暫存于21H單元
               SETB   P1.3                  ;恢復(fù)P1.3的初值
               AJMP   START                 ;跳至主程序

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



作者: lxa0    時(shí)間: 2018-6-27 22:53
控制音樂噴泉還要有配套的硬件
光是代碼不行啊




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1