📄 music_hb.lst
字号:
A51 MACRO ASSEMBLER MUSIC_HB 11/27/2007 21:50:59 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN music_hb.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE music_hb.a51 SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 org 0000h
0000 0130 2 ajmp main
000B 3 org 000bh
000B 8063 4 jmp tim0
0030 5 org 0030h
0030 6 main: ;主程序
0030 758901 7 mov tmod,#01h ;设定时方式
0033 75A882 8 mov ie,#82h ;开中断
0036 9 start0:
0036 753000 10 mov 30h,#00h ;
0039 E530 11 next: mov a,30h
003B 9000AE 12 mov dptr,#table
003E 93 13 movc a,@a+dptr ;查表取音调和节拍
003F FA 14 mov r2,a
0040 602A 15 jz end0 ;为零,不进行处理.
0042 540F 16 anl a,#0fh
0044 FD 17 mov r5,a ;将节拍存入R5
0045 EA 18 mov a,r2
0046 C4 19 swap a
0047 540F 20 anl a,#0fh
0049 7004 21 jnz sing ;根据音调决定是否演奏.
004B C28C 22 clr tr0
004D 8017 23 jmp d1
004F 14 24 sing: dec a
0050 F522 25 mov 22h,a ;将音调存入22H.
0052 23 26 rl a
0053 900090 27 mov dptr,#table1
0056 93 28 movc a,@a+dptr ;根据音调决定定时器初值.
0057 F58C 29 mov th0,a ;放入TH0
0059 F521 30 mov 21h,a
005B E522 31 mov a,22h
005D 23 32 rl a
005E 04 33 inc a
005F 93 34 movc a,@a+dptr
0060 F58A 35 mov tl0,a ;放入TL0
0062 F520 36 mov 20h,a
0064 D28C 37 setb tr0 ;启动定时
0066 1181 38 d1: call delay
0068 0530 39 inc 30h
006A 80CD 40 jmp next
006C C28C 41 end0: clr tr0
006E 80C6 42 jmp start0
43
0070 44 tim0: ;定时器中断服务程序
0070 C0E0 45 push acc
0072 C0D0 46 push psw
0074 85208A 47 mov tl0,20h ;重赋初值.
0077 85218C 48 mov th0,21h
007A B2A4 49 cpl p2.4
007C D0D0 50 pop psw
007E D0E0 51 pop acc
0080 32 52 reti
53
0081 7F02 54 delay: mov r7,#02h ;延时子程序
0083 7CBB 55 d2: mov r4,#187
0085 7BF8 56 d3: mov r3,#248
0087 DBFE 57 djnz r3,$
0089 DCFA 58 djnz r4,d3
A51 MACRO ASSEMBLER MUSIC_HB 11/27/2007 21:50:59 PAGE 2
008B DFF6 59 djnz r7,d2
008D DDF2 60 djnz r5,delay
008F 22 61 ret
62
0090 63 table1: ;决定音调的定时初值.
0090 FB04 64 dw 64260,64400,64524,64580
0092 FB90
0094 FC0C
0096 FC44
0098 FCAC 65 dw 64684,64777,64820,64898
009A FD09
009C FD34
009E FD82
00A0 FDC8 66 dw 64968,65030,65058,65110
00A2 FE06
00A4 FE22
00A6 FE56
00A8 FE85 67 dw 65157,65178,65217
00AA FE9A
00AC FEC1
68
00AE 69 table: ;决定音调和节拍的表格,不同的歌曲只是此表不同
70 ;1
00AE 82018194 71 db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
00B2 84B4A404
00B6 82018194
00BA 84C4B404
72 ;2
00BE 820181F4 73 db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h
00C2 D4B4A494
00C6 E201E1D4
00CA B4C4B404
74 ;3
00CE 82018194 75 db 82h,01h,81h,94h,84h,0b4h,0a4h,04h,82h,01h,81h,94h,84h,0c4h,0b4h,04h
00D2 84B4A404
00D6 82018194
00DA 84C4B404
76 ;4
00DE 820181F4 77 db 82h,01h,81h,0f4h,0d4h,0b4h,0a4h,94h,0e2h,01h,0e1h,0d4h,0b4h,0c4h,0b4h,04h,00
00E2 D4B4A494
00E6 E201E1D4
00EA B4C4B404
00EE 00
78 end
A51 MACRO ASSEMBLER MUSIC_HB 11/27/2007 21:50:59 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
D1 . . . . . . . . C ADDR 0066H A
D2 . . . . . . . . C ADDR 0083H A
D3 . . . . . . . . C ADDR 0085H A
DELAY. . . . . . . C ADDR 0081H A
END0 . . . . . . . C ADDR 006CH A
IE . . . . . . . . D ADDR 00A8H A
MAIN . . . . . . . C ADDR 0030H A
NEXT . . . . . . . C ADDR 0039H A
P2 . . . . . . . . D ADDR 00A0H A
PSW. . . . . . . . D ADDR 00D0H A
SING . . . . . . . C ADDR 004FH A
START0 . . . . . . C ADDR 0036H A
TABLE. . . . . . . C ADDR 00AEH A
TABLE1 . . . . . . C ADDR 0090H A
TH0. . . . . . . . D ADDR 008CH A
TIM0 . . . . . . . C ADDR 0070H 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 + -