📄 music.lst
字号:
A51 MACRO ASSEMBLER MUSIC 06/23/2007 09:49:24 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN music.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE music.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;-----------------------------------
2 ; 单片机演奏音乐实例
3 ;功能:演奏歌曲"祝你平安"
4 ;-----------------------------------
0080 5 BUZZER_PIN EQU P0.0
0030 6 TIME_COUNT DATA 30H
7
0000 8 ORG 0000H ;伪指令,指定程序从0000H开始存放
0000 02000E 9 LJMP MAIN ;跳转指令,程序跳转到MAIN处
000B 10 ORG 000BH ;伪指令,指定程序从T0入口地址000BH开始存放
000B 020065 11 LJMP T0_INT ;跳转指令,程序跳转到T0_INT处
12
000E 13 MAIN:
000E 758160 14 MOV SP,#60H ;给堆栈指针赋初值
0011 758CD8 15 MOV TH0,#0D8H ;设定定时器T0的初始值TH0
0014 758AEF 16 MOV TL0,#0EFH ;设定定时器T0的初始值TL0
0017 758901 17 MOV TMOD,#01H ;定时器T0工作在方式1
001A 75A882 18 MOV IE,#82H ;中断允许
001D 19 MUSIC0:
001D 900077 20 MOV DPTR,#MUSIC_TABLE ;表头地址传送到DPTR
0020 753000 21 MOV TIME_COUNT,#00H ;中断计数器清0
0023 75F000 22 MOV B,#00H ;表序号清0
0026 23 MUSIC1:
0026 E4 24 CLR A
0027 93 25 MOVC A,@A+DPTR ;查表取代码
0028 602F 26 JZ END0 ;是00H,则结束
002A B4FF03 27 CJNE A,#0FFH,MUSIC5
002D 02004A 28 LJMP MUSIC3
0030 29 MUSIC5:
0030 FE 30 MOV R6,A
0031 A3 31 INC DPTR
0032 E5F0 32 MOV A,B
0034 93 33 MOVC A,@A+DPTR ;取节拍代码送R7
0035 FF 34 MOV R7,A
0036 D28C 35 SETB TR0 ;启动计数
0038 36 MUSIC2:
0038 B280 37 CPL BUZZER_PIN ;
003A EE 38 MOV A,R6
003B FB 39 MOV R3,A
003C 12006E 40 LCALL DELAY
003F EF 41 MOV A,R7
0040 B530F5 42 CJNE A,TIME_COUNT,MUSIC2 ;中断计数器(20H)=R7否?
43 ;不相等,则继续循环
0043 753000 44 MOV TIME_COUNT,#00H ;等于,则取下一代码
0046 A3 45 INC DPTR
0047 020026 46 LJMP MUSIC1
004A 47 MUSIC3:
004A C28C 48 CLR TR0 ;休止100毫秒
004C 7A0D 49 MOV R2,#0DH
004E 50 MUSIC4:
004E 7BFF 51 MOV R3,#0FFH
0050 12006E 52 LCALL DELAY
0053 DAF9 53 DJNZ R2,MUSIC4
0055 A3 54 INC DPTR
0056 020026 55 LJMP MUSIC1
0059 56 END0:
0059 7A64 57 MOV R2,#64H ;歌曲结束,延时1秒后继续
005B 58 MUSIC6:
A51 MACRO ASSEMBLER MUSIC 06/23/2007 09:49:24 PAGE 2
005B 7B00 59 MOV R3,#00H
005D 12006E 60 LCALL DELAY
0060 DAF9 61 DJNZ R2,MUSIC6
0062 02001D 62 LJMP MUSIC0
63
0065 64 T0_INT:
65 ;---------------------------------
66 ; T0中断服务程序
67 ;12M晶振时,每10毫秒中断一次
68 ;---------------------------------
0065 0530 69 INC TIME_COUNT ;中断计数器加1
0067 758CD8 70 MOV TH0,#0D8H
006A 758AEF 71 MOV TL0,#0EFH
006D 32 72 RETI
73
006E 74 DELAY:
75 ;---------------------------------
76 ; 延时子程序
77 ;说明:延时时间通过R3传递,延时时间为(R3×20)uS
78 ;---------------------------------
006E 7C02 79 MOV R4,#02H
0070 80 DELAY1:
0070 00 81 NOP
0071 DCFD 82 DJNZ R4,DELAY1
0073 00 83 NOP
0074 DBF8 84 DJNZ R3,DELAY
0076 22 85 RET
86
0077 87 MUSIC_TABLE:
0077 26202020 88 DB 026H,020H,020H,020H,020H,020H,026H,010H,020H,010H,020H,080H,026H,020H,030H,020H
007B 20202610
007F 20102080
0083 26203020
0087 30203910 89 DB 030H,020H,039H,010H,030H,010H,030H,080H,026H,020H,020H,020H,020H,020H,01CH,020H
008B 30103080
008F 26202020
0093 20201C20
0097 20802B20 90 DB 020H,080H,02BH,020H,026H,020H,020H,020H,02BH,010H,026H,010H,02BH,080H,026H,020H
009B 26202020
009F 2B102610
00A3 2B802620
00A7 30203020 91 DB 030H,020H,030H,020H,039H,010H,026H,010H,026H,060H,040H,010H,039H,010H,026H,020H
00AB 39102610
00AF 26604010
00B3 39102620
00B7 30203020 92 DB 030H,020H,030H,020H,039H,010H,026H,010H,026H,080H,026H,020H,02BH,010H,02BH,010H
00BB 39102610
00BF 26802620
00C3 2B102B10
00C7 2B203010 93 DB 02BH,020H,030H,010H,039H,010H,026H,010H,02BH,010H,02BH,020H,02BH,040H,040H,020H
00CB 39102610
00CF 2B102B20
00D3 2B404020
00D7 20102010 94 DB 020H,010H,020H,010H,02BH,010H,026H,030H,030H,080H,018H,020H,018H,020H,026H,020H
00DB 2B102630
00DF 30801820
00E3 18202620
00E7 20202040 95 DB 020H,020H,020H,040H,026H,020H,02BH,020H,030H,020H,030H,020H,01CH,020H,020H,020H
00EB 26202B20
00EF 30203020
00F3 1C202020
00F7 20801C20 96 DB 020H,080H,01CH,020H,01CH,020H,01CH,020H,030H,020H,030H,060H,039H,010H,030H,010H
00FB 1C201C20
00FF 30203060
0103 39103010
0107 20202B10 97 DB 020H,020H,02BH,010H,026H,010H,02BH,010H,026H,010H,026H,010H,02BH,010H,02BH,080H
A51 MACRO ASSEMBLER MUSIC 06/23/2007 09:49:24 PAGE 3
010B 26102B10
010F 26102610
0113 2B102B80
0117 18201820 98 DB 018H,020H,018H,020H,026H,020H,020H,020H,020H,060H,026H,010H,02BH,020H,030H,020H
011B 26202020
011F 20602610
0123 2B203020
0127 30201C20 99 DB 030H,020H,01CH,020H,020H,020H,020H,080H,026H,020H,030H,010H,030H,010H,030H,020H
012B 20202080
012F 26203010
0133 30103020
0137 39202610 100 DB 039H,020H,026H,010H,02BH,010H,02BH,020H,02BH,040H,040H,010H,040H,010H,020H,010H
013B 2B102B20
013F 2B404010
0143 40102010
0147 20102B10 101 DB 020H,010H,02BH,010H,026H,030H,030H,080H,000H
014B 26303080
014F 00
102
103 END
A51 MACRO ASSEMBLER MUSIC 06/23/2007 09:49:24 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
B. . . . . . . . . D ADDR 00F0H A
BUZZER_PIN . . . . B ADDR 0080H.0 A
DELAY. . . . . . . C ADDR 006EH A
DELAY1 . . . . . . C ADDR 0070H A
END0 . . . . . . . C ADDR 0059H A
IE . . . . . . . . D ADDR 00A8H A
MAIN . . . . . . . C ADDR 000EH A
MUSIC0 . . . . . . C ADDR 001DH A
MUSIC1 . . . . . . C ADDR 0026H A
MUSIC2 . . . . . . C ADDR 0038H A
MUSIC3 . . . . . . C ADDR 004AH A
MUSIC4 . . . . . . C ADDR 004EH A
MUSIC5 . . . . . . C ADDR 0030H A
MUSIC6 . . . . . . C ADDR 005BH A
MUSIC_TABLE. . . . C ADDR 0077H A
P0 . . . . . . . . D ADDR 0080H A
SP . . . . . . . . D ADDR 0081H A
T0_INT . . . . . . C ADDR 0065H A
TH0. . . . . . . . D ADDR 008CH A
TIME_COUNT . . . . D ADDR 0030H A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -