• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    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)閉
    主站蜘蛛池模板: 铜陵市| 和田县| 左云县| 东平县| 志丹县| 时尚| 鄂温| 平顶山市| 临海市| 察隅县| 巫溪县| 弥勒县| 绥芬河市| 增城市| 秦安县| 水城县| 凤阳县| 临沂市| 吉林省| 监利县| 什邡市| 富宁县| 永丰县| 庆元县| 清镇市| 云安县| 桑日县| 宜兰市| 浮梁县| 陆良县| 繁昌县| 定边县| 湛江市| 浦城县| 宁武县| 绥阳县| 新邵县| 开远市| 克拉玛依市| 根河市| 溧阳市|