?? music.lst
字號:
A51 MACRO ASSEMBLER MUSIC 03/21/2008 00:24:31 PAGE 1
MACRO ASSEMBLER A51 V7.07
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 ;All rights Reserved
3 ;voice.asm
4 ;單片機發聲程序,播放梁祝歌曲
5 ;用定時器中斷產生音調,用程序延時來產生節拍
6 ;***************************************************************
0090 7 SoundOut bit P1.0 ;定義輸出引腳
8
0000 9 ORG 0000H
0000 020020 10 LJMP START
001B 11 ORG 001BH
001B 0161 12 AJMP TIME1 ;中斷服務,中斷計數器加1
0020 13 ORG 20H
14
0020 758910 15 START: MOV TMOD,#10H ;用定時器1,方式1
0023 758150 16 MOV SP,#50H
0026 D2AF 17 SETB EA
0028 D2AB 18 SETB ET1
19
002A 900068 20 MOV DPTR,#TAB
21 ;判斷合適的數據,進行定時器初始值設置
002D E4 22 LOOP: CLR A
002E 93 23 MOVC A,@A+DPTR
002F F9 24 MOV R1,A ;保存第一個值
0030 A3 25 INC DPTR
0031 E4 26 CLR A
0032 93 27 MOVC A,@A+DPTR
0033 F8 28 MOV R0,A ;保存第二個值
29
0034 49 30 ORL A,R1 ;看相鄰兩個值是否相等
0035 600F 31 JZ XZF ;若acc等于0則跳轉
32
0037 E8 33 MOV A,R0
0038 59 34 ANL A,R1 ;兩個數是否都為ff是否為最后一個
0039 B4FF02 35 CJNE A,#0FFH,NEXT
003C 80E2 36 SJMP START
37
003E 898D 38 NEXT: MOV TH1,R1
0040 888B 39 MOV TL1,R0
0042 D28E 40 SETB TR1
0044 8002 41 SJMP NEXT1
42
0046 C28E 43 XZF: CLR TR1 ;關閉定時器
44
0048 E4 45 NEXT1: CLR A
0049 A3 46 INC DPTR
004A 93 47 MOVC A,@A+DPTR
48
004B FA 49 MOV R2,A
004C D28E 50 SETB TR1
51
004E 120056 52 LOOP1: LCALL D130 ;取節拍
0051 DAFB 53 DJNZ R2,LOOP1
0053 A3 54 INC DPTR
0054 012D 55 AJMP LOOP
56
0056 7DA0 57 D130: MOV R5,#160
0058 7CC8 58 D2: MOV R4,#200
A51 MACRO ASSEMBLER MUSIC 03/21/2008 00:24:31 PAGE 2
005A 00 59 D1: NOP
005B 00 60 NOP
005C DCFC 61 DJNZ R4,D1
005E DDF8 62 DJNZ R5,D2
0060 22 63 RET
64 ;定時中斷服務程序
0061 898D 65 TIME1: MOV TH1,R1
0063 888B 66 MOV TL1,R0
0065 B290 67 CPL SoundOut
0067 32 68 RETI
69
0068 FA1508 70 TAB: DB 0FAH,15H,08H
006B FB0506 71 DB 0FBH,05H,06H
006E FB8C02 72 DB 0FBH,8CH,02H
0071 FC4404 73 DB 0FCH,44H,04H
0074 FCAC02 74 DB 0FCH,0ACH,02H
0077 FB8C02 75 DB 0FBH,8CH,02H
007A FC4402 76 DB 0FCH,44H,02H
007D FB0504 77 DB 0FBH,05H,04H
0080 FD8204 78 DB 0FDH,82H,04H
0083 FE2204 79 DB 0FEH,22H,04H
0086 FDC802 80 DB 0FDH,0C8H,02H
0089 FD8202 81 DB 0FDH,82H,02H
008C FD0902 82 DB 0FDH,09H,02H
008F FD8202 83 DB 0FDH,82H,02H
0092 FCAC10 84 DB 0FCH,0ACH,10H
0095 FB8C01 85 DB 0FBH,8CH,01H
0098 FCAC06 86 DB 0FCH,0ACH,06H
009B FD0902 87 DB 0FDH,09H,02H
009E FC0C04 88 DB 0FCH,0CH,04H
00A1 FB8C04 89 DB 0FBH,08CH,04H
00A4 FB0504 90 DB 0FBH,05H,04H
00A7 FC8C02 91 DB 0FCH,8CH,02H
00AA FC4404 92 DB 0FCH,44H,04H
00AD FCAC04 93 DB 0FCH,0ACH,04H
00B0 FA1504 94 DB 0FAH,15H,04H
00B3 FC4404 95 DB 0FCH,44H,04H
00B6 FB8C02 96 DB 0FBH,8CH,02H
00B9 FB0502 97 DB 0FBH,05H,02H
00BC FB8C02 98 DB 0FBH,8CH,02H
00BF FC4402 99 DB 0FCH,44H,02H
00C2 FB0510 100 DB 0FBH,05H,10H
00C5 FFFF 101 DB 0FFH,0FFH
102 END
A51 MACRO ASSEMBLER MUSIC 03/21/2008 00:24:31 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
D1 . . . . . . . . C ADDR 005AH A
D130 . . . . . . . C ADDR 0056H A
D2 . . . . . . . . C ADDR 0058H A
EA . . . . . . . . B ADDR 00A8H.7 A
ET1. . . . . . . . B ADDR 00A8H.3 A
LOOP . . . . . . . C ADDR 002DH A
LOOP1. . . . . . . C ADDR 004EH A
NEXT . . . . . . . C ADDR 003EH A
NEXT1. . . . . . . C ADDR 0048H A
P1 . . . . . . . . D ADDR 0090H A
SOUNDOUT . . . . . B ADDR 0090H.0 A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0020H A
TAB. . . . . . . . C ADDR 0068H A
TH1. . . . . . . . D ADDR 008DH A
TIME1. . . . . . . C ADDR 0061H A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
XZF. . . . . . . . C ADDR 0046H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -