📄 music.lst
字号:
A51 MACRO ASSEMBLER MUSIC 10/19/2002 16:13:33 PAGE 1
MACRO ASSEMBLER A51 V7.01
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
0030 1 TEMPLOW EQU 30H
0031 2 TEMPHIGH EQU 31H
0032 3 SOUNDPOINTER EQU 32H
4 ;-----------------------------------------
0000 5 S equ 65536
0240 6 TEMP equ 12000000/12
0120 7 T equ TEMP/2
8 ;-----------------------------------------
FC44 9 DO equ 64580 ;S-T/523
FCAC 10 RE equ 64684 ;S-T/587
FD09 11 MI equ 64777 ;S-T/659
FD34 12 FA equ 64820 ;S-T/698
FD82 13 SO equ 64898 ;S-T/784
FDC8 14 LA equ 64968 ;S-T/880
FE06 15 TI_L equ 65030 ;S-T/988
16 ;-----------------------------------------
FE22 17 DO_H equ 65058 ;S-T/1046
FE56 18 RE_H equ 65110 ;S-T/1174
FE85 19 MI_H equ 65157 ;S-T/1318
FE9A 20 FA_H equ 65178 ;S-T/1397
FEC1 21 SO_H equ 65217 ;S-T/1568
FEE4 22 LA_H equ 65252 ;S-T/1760
FF03 23 TI_H equ 65283 ;S-T/1976
FF11 24 DO_HH equ 65297 ;S-T/2093
25 ;=========================================
26 ; 主程序
27 ;=========================================
0000 28 ORG 00H
0000 800B 29 JMP MAIN
000B 30 ORG 0BH
000B 8036 31 JMP TIMER_INT
32 ;=========================================
33 ; 音乐演示子程序
34 ;=========================================
000D 35 MAIN:
000D 8000 36 JMP RESET
000F 37 RESET:
000F D2AF 38 SETB EA
0011 D2A9 39 SETB ET0
0013 758901 40 MOV TMOD,#00000001B ;TIMER0 MODE 1
0016 41 MAINLOOP:
0016 753201 42 MOV SOUNDPOINTER,#1
0019 43 SOUNDLOOP:
0019 E532 44 MOV A,SOUNDPOINTER
001B 1150 45 CALL GETSOUND
001D 601E 46 JZ SOUNDEND
001F C0E0 47 PUSH ACC
0021 540F 48 ANL A,#0FH
0023 6006 49 JZ NOTONE
0025 D28C 50 SETB TR0
0027 14 51 DEC A
0028 FC 52 MOV R4,A ;根据SOUNDTABLE中数据的低四位选择音调频率
0029 1193 53 CALL GETTONE
002B 54 NOTONE:
002B D0E0 55 POP ACC
002D C4 56 SWAP A
002E 540F 57 ANL A,#0FH
0030 75F005 58 MOV B,#5
A51 MACRO ASSEMBLER MUSIC 10/19/2002 16:13:33 PAGE 2
0033 A4 59 MUL AB
0034 FD 60 MOV R5,A
0035 11C4 61 CALL DELAY ;根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
0037 C28C 62 CLR TR0
0039 0532 63 INC SOUNDPOINTER
003B 80DC 64 JMP SOUNDLOOP
003D 65 SOUNDEND:
003D 7D14 66 MOV R5,#20
003F 11C4 67 CALL DELAY
0041 80D3 68 JMP MAINLOOP
0043 69 TIMER_INT:
0043 C0E0 70 PUSH ACC
0045 85308A 71 MOV TL0,TEMPLOW
0048 85318C 72 MOV TH0,TEMPHIGH
004B B2A0 73 CPL P2.0
004D D0E0 74 POP ACC
004F 32 75 RETI
0000 76 ENDSOUND EQU 00H
0050 77 GETSOUND:
0050 83 78 MOVC A,@A+PC
0051 22 79 RET
80 ;ORG 00DBH
81
82
83
84
85
86
87
88
89
90
91
92
0052 93 SOUNDTABLE:
0052 66276826 94 db 0x66,0x27,0x68,0x26,0x28,0x28,0x27,0x26,0x47,0x43
0056 28282726
005A 4743
005C 67286927 95 db 0x67,0x28,0x69,0x27,0x29,0x29,0x28,0x27,0x46,0x46
0060 29292827
0064 4646
0066 4A4D4C2D 96 db 0x4a,0x4d,0x4c,0x2d,0x2c,0x2b,0x2b,0x2a,0x29,0x4a
006A 2C2B2B2A
006E 294A
0070 46204B29 97 db 0x46,0x20,0x4b,0x29,0x6a,0x28,0x27,0x23,0x28,0x27
0074 6A282723
0078 2827
007A 46464A4D 98 db 0x46,0x46,0x4a,0x4d,0x4c,0x2d,0x2c,0x2b,0x2b,0x2a
007E 4C2D2C2B
0082 2B2A
0084 294A4620 99 db 0x29,0x4a,0x46,0x20,0x4b,0x29,0x6a,0x28,0x27,0x23
0088 4B296A28
008C 2723
008E 28274646 100 db 0x28,0x27,0x46,0x46
0092 00 101 db ENDSOUND
102 ;-----------------------------------
103 ; 选择音调频率
104 ;-----------------------------------
0093 105 GETTONE:
0093 9000A6 106 MOV DPTR,#TONETABLE
0096 EC 107 MOV A,R4
0097 23 108 RL A
0098 93 109 MOVC A,@A+DPTR
0099 F58C 110 MOV TH0,A
009B F531 111 MOV TEMPHIGH,A
009D EC 112 MOV A,R4
A51 MACRO ASSEMBLER MUSIC 10/19/2002 16:13:33 PAGE 3
009E 23 113 RL A
009F 04 114 INC A
00A0 93 115 MOVC A,@A+DPTR
00A1 F58A 116 MOV TL0,A
00A3 F530 117 MOV TEMPLOW,A
00A5 22 118 RET
00A6 119 TONETABLE:
00A6 FC44 120 DW DO ,RE ,MI ,FA ,SO ,LA ,TI_L
00A8 FCAC
00AA FD09
00AC FD34
00AE FD82
00B0 FDC8
00B2 FE06
00B4 FE22 121 DW DO_H,RE_H,MI_H,FA_H,SO_H,LA_H,TI_H
00B6 FE56
00B8 FE85
00BA FE9A
00BC FEC1
00BE FEE4
00C0 FF03
00C2 FF11 122 DW DO_HH
123 ;=========================================
124 ; 延时子程序
125 ;=========================================
126
00C4 127 DELAY:
00C4 128 DELAY1:
00C4 7E64 129 MOV R6,#100;50ms
00C6 7FF9 130 DEL: MOV R7,#249
00C8 DFFE 131 DJNZ R7,$
00CA DEFA 132 DJNZ R6,DEL
00CC DDF6 133 DJNZ R5,DELAY1
00CE 22 134 RET
135 END
A51 MACRO ASSEMBLER MUSIC 10/19/2002 16:13:33 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
DEL. . . . . . . . C ADDR 00C6H A
DELAY. . . . . . . C ADDR 00C4H A
DELAY1 . . . . . . C ADDR 00C4H A
DO . . . . . . . . N NUMB FC44H A
DO_H . . . . . . . N NUMB FE22H A
DO_HH. . . . . . . N NUMB FF11H A
EA . . . . . . . . B ADDR 00A8H.7 A
ENDSOUND . . . . . N NUMB 0000H A
ET0. . . . . . . . B ADDR 00A8H.1 A
FA . . . . . . . . N NUMB FD34H A
FA_H . . . . . . . N NUMB FE9AH A
GETSOUND . . . . . C ADDR 0050H A
GETTONE. . . . . . C ADDR 0093H A
LA . . . . . . . . N NUMB FDC8H A
LA_H . . . . . . . N NUMB FEE4H A
MAIN . . . . . . . C ADDR 000DH A
MAINLOOP . . . . . C ADDR 0016H A
MI . . . . . . . . N NUMB FD09H A
MI_H . . . . . . . N NUMB FE85H A
NOTONE . . . . . . C ADDR 002BH A
P2 . . . . . . . . D ADDR 00A0H A
RE . . . . . . . . N NUMB FCACH A
RESET. . . . . . . C ADDR 000FH A
RE_H . . . . . . . N NUMB FE56H A
S. . . . . . . . . N NUMB 0000H A
SO . . . . . . . . N NUMB FD82H A
SOUNDEND . . . . . C ADDR 003DH A
SOUNDLOOP. . . . . C ADDR 0019H A
SOUNDPOINTER . . . N NUMB 0032H A
SOUNDTABLE . . . . C ADDR 0052H A
SO_H . . . . . . . N NUMB FEC1H A
T. . . . . . . . . N NUMB 0120H A
TEMP . . . . . . . N NUMB 0240H A
TEMPHIGH . . . . . N NUMB 0031H A
TEMPLOW. . . . . . N NUMB 0030H A
TH0. . . . . . . . D ADDR 008CH A
TIMER_INT. . . . . C ADDR 0043H A
TI_H . . . . . . . N NUMB FF03H A
TI_L . . . . . . . N NUMB FE06H A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TONETABLE. . . . . C ADDR 00A6H 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 + -