新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 邊顯示滾動漢字邊播放音樂的匯編程序

        邊顯示滾動漢字邊播放音樂的匯編程序

        作者: 時間:2012-08-18 來源:網(wǎng)絡(luò) 收藏
        //------------------------------------------
        //51hei-5開發(fā)板測試程序.ASM
        // 音樂播放器>>
        //硬件說明:12M晶振/MCU:89C51
        //編寫人:李春起
        //編定日期:2009.11.24
        //修改日志:2010.01.05
        // 2010.01.11 加暫停功能
        // 2010.01.16 加第三首歌曲
        // 2010.01.17 加第四首歌曲
        // 2010.01.18 加第五首歌曲
        // 2010.02.19 去除休止時雜聲
        // 2010.03.02 定時器T1中斷顯示
        //------------------------------------------
        //已用寄存器:
        //R0 R1 R2 R4 R5 R6 R7
        //-------------------------------------------
        YY EQU P3.1 ;音樂輸出口
        ORG 0000H
        LJMP MAIN ;跳到主函數(shù)
        ORG 000BH ;定時器入口
        LJMP T00 ;跳到定時器中斷服務(wù)子程序
        ORG 001BH
        LJMP T11
        ORG 0020H ;程序存放起始
        MAIN:
        MOV TMOD,#11H
        MOV IP,#08H
        // MOV IE,#08AH
        MOV TH0,R0
        MOV TL0,R1
        MOV TH1,#15H
        MOV TL1,#0A0H
        SETB ET0
        CLR TR0
        CLR TR1
        SETB ET1
        SETB EA
        SETB YY
        MOV R7,#00H ;歌曲選擇
        MOV 30H,#00H
        MOV 31H,#24
        MOV 32H,#00H ;顯示掃描數(shù)
        MOV 40H,#40
        MOV R3,#00H

        //========笑臉====================
        MAKK: ACALL DELAY1
        MAIN0:
        MOV A,R7
        CJNE A,#00H,LMA1
        CLR TR0
        XIAN00:
        MOV A,30H
        MOV DPTR,#TAB10
        MOVC A,@A+DPTR
        MOV P0,A
        MOV A,30H
        MOV DPTR,#TAB11
        MOVC A,@A+DPTR
        MOV P1,A
        MOV A,30H
        MOV DPTR,#TAB12
        MOVC A,@A+DPTR
        MOV P2,A
        MA0D:MOV 54H,#20
        JB P3.2,MA0D1
        ACALL WDELAY
        INC R7
        CJNE R7,#04H,LMA0
        MOV R7,#00H
        LJMP LMA0
        MA0D1:DJNZ 54H,MA0D1
        MOV P0,#0FFH
        MOV P1,#0FH
        MOV P2,#00H
        DJNZ 31H,XIAN00
        MOV 31H,#24
        INC 30H
        MOV A,30H
        CJNE A,#13,XIAN01
        DJNZ 41H,XIA01
        MOV 41H,#20
        LJMP XIAN01
        XIA01:MOV 30H,#0
        LJMP XIAN00
        XIAN01:
        CJNE A,#25, ENDD0
        MOV 41H,#40
        MOV 30H,#0
        ENDD0:LJMP XIAN00
        LMA1:LJMP MAIN1
        LMA0:LJMP MAIN0

        //========第一首===========================
        MAIN1:SETB TR1
        MOV P0,#0FFH
        MOV P1,#0FH
        MOV P2,#00H
        MOV 30H,#00H //奏第一首循環(huán)
        MOV A,R7
        CJNE A,#01H,MAIN2;下一首
        LOOP:SETB TR0
        MOV A,30H
        MOV DPTR,#TAB1
        MOVC A,@A+DPTR ;取定時器高八位數(shù)據(jù)
        JZ RERT
        LOO1: MOV R0,A
        MOV A,30H
        MOV DPTR,#TAB2
        MOVC A,@A+DPTR ;取定時器低八位數(shù)據(jù)
        MOV R1,A
        MOV TH0,R0
        MOV TL0,R1
        ANL A,R0
        CJNE A,#0FFH,NCA ;遇0FFH歌曲結(jié)束
        LJMP ENDD
        NCA: MOV A,30H
        MOV DPTR,#TAB3
        MOVC A,@A+DPTR ;取節(jié)拍時值
        MOV R2,A
        DELA:ACALL DELAY100
        DEL1:DJNZ R2,DELA
        INC 30H
        LJMP LOOP

        RERT:CLR TR0 ;休止
        SETB YY
        LJMP LOO1

        ENDD:CLR TR0
        ACALL DELAY1000
        LJMP MAIN1 ;奏完返回

        //========第二首===========================
        MAIN2:
        MOV P0,#0FFH
        MOV P1,#0FH
        MOV P2,#00H
        MOV 30H,#00H //奏第二首循環(huán)
        MOV A,R7
        CJNE A,#02H,LMAIN0
        LOOOP:SETB TR0
        MOV A,30H
        MOV DPTR,#TAB4
        MOVC A,@A+DPTR ;取定時器高八位數(shù)據(jù)
        JZ RERT1
        LOOO1: MOV R0,A
        MOV A,30H
        MOV DPTR,#TAB5
        MOVC A,@A+DPTR ;取定時器低八位數(shù)據(jù)
        MOV R1,A
        MOV TH0,R0
        MOV TL0,R1
        ANL A,R0
        CJNE A,#0FFH,NCA1 ;遇0FFH歌曲結(jié)束
        LJMP ENDD1
        NCA1: MOV A,30H
        MOV DPTR,#TAB6
        MOVC A,@A+DPTR ;取節(jié)拍時值
        MOV R2,A
        DELA1:ACALL DELAY100
        DEL11:DJNZ R2,DELA1
        INC 30H
        LJMP LOOOP

        RERT1:CLR TR0 ;休止
        SETB YY
        LJMP LOOO1

        ENDD1:CLR TR0
        ACALL DELAY1000
        LJMP MAIN1 ;奏完返回
        LMAIN0:LJMP MAIN4

        //=======第三首==================================
        MAIN4:MOV P0,#0FFH
        MOV P1,#0FH
        MOV P2,#00H
        MOV 30H,#00H //奏第三首循環(huán)
        MOV A,R7
        CJNE A,#03H,LMAIN4
        LOO1P:SETB TR0
        MOV A,30H
        MOV DPTR,#TAB13
        MOVC A,@A+DPTR ;取定時器高八位數(shù)據(jù)
        JZ RERT2
        LOO11: MOV R0,A
        MOV A,30H
        MOV DPTR,#TAB14
        MOVC A,@A+DPTR ;取定時器低八位數(shù)據(jù)
        MOV R1,A
        MOV TH0,R0
        MOV TL0,R1
        ANL A,R0
        CJNE A,#0FFH,NCA4 ;遇0FFH歌曲結(jié)束
        LJMP ENDD4
        NCA4: MOV A,30H
        MOV DPTR,#TAB15
        MOVC A,@A+DPTR ;取節(jié)拍時值
        MOV R2,A
        DELA31:ACALL DELAY100
        DEL31:DJNZ R2,DELA31
        INC 30H
        LJMP LOO1P

        RERT2:CLR TR0 ;休止
        SETB YY
        LJMP LOO11

        ENDD4:CLR TR0
        ACALL DELAY1000
        LJMP MAIN4 ;奏完返回
        LMAIN4:LJMP MAIN5

        上一頁 1 2 3 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 海安县| 朝阳区| 交城县| 天水市| 伊吾县| 开封市| 天峨县| 安新县| 琼海市| 那曲县| 绥德县| 法库县| 于都县| 汉阴县| 富源县| 大兴区| 读书| 天津市| 民和| 秦安县| 富源县| 乳山市| 白山市| 北辰区| 息烽县| 无为县| 仙居县| 金塔县| 石城县| 岑巩县| 额尔古纳市| 富阳市| 鄱阳县| 出国| 连云港市| 屯昌县| 洪雅县| 台南市| 三门县| 友谊县| 醴陵市|