色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時間: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)閉