📄 music.lst
字号:
A51 MACRO ASSEMBLER MUSIC 05/24/2008 16:47:25 PAGE 1
MACRO ASSEMBLER A51 V8.00
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 ;先闪烁8下
2 ;唱歌两次
3 ;跑马闪烁
4 ;再来一遍
5
6
7
8
0000 9 ORG 0000H
0000 0130 10 AJMP START
000B 11 ORG 000BH
000B 8069 12 JMP TIM0
0030 13 ORG 0030H
0030 120113 14 START: LCALL SD ;闪灯程序
0033 759000 15 MOV P1,#00H ;演奏时保持灯全亮
0036 16 MAIN: ;唱歌主程序
0036 758901 17 MOV TMOD,#01H ;设定时方式
0039 75A882 18 MOV IE,#82H ;开中断
19
003C 20 START0:
003C 753000 21 MOV 30H,#00H ;
003F E530 22 NEXT:MOV A,30H
0041 9000B4 23 MOV DPTR,#TABLE
0044 93 24 MOVC A,@A+DPTR ;查表取音调和节拍
0045 FA 25 MOV R2,A
0046 602A 26 JZ END0 ;为零,不进行处理.
0048 540F 27 ANL A,#0FH
004A FD 28 MOV R5,A ;将节拍存入R5
004B EA 29 MOV A,R2
004C C4 30 SWAP A
004D 540F 31 ANL A,#0FH
004F 7004 32 JNZ SING ;根据音调决定是否演奏.
0051 C28C 33 CLR TR0
0053 8017 34 JMP D1
0055 14 35 SING:DEC A
0056 F522 36 MOV 22H,A ;将音调存入22H.
0058 23 37 RL A
38
0059 900096 39 MOV DPTR,#TABLE1
005C 93 40 MOVC A,@A+DPTR ;根据音调决定定时器初值.
005D F58C 41 MOV TH0,A ;放入TH0
005F F521 42 MOV 21H,A
0061 E522 43 MOV A,22H
0063 23 44 RL A
0064 04 45 INC A
0065 93 46 MOVC A,@A+DPTR
0066 F58A 47 MOV TL0,A ;放入TL0
0068 F520 48 MOV 20H,A
006A D28C 49 SETB TR0 ;启动定时
50
006C 1187 51 D1: CALL DELAY
006E 0530 52 INC 30H
0070 80CD 53 JMP NEXT
0072 C28C 54 END0:CLR TR0
0074 807F 55 JMP TT ;决定是否重新演奏音乐,即音乐的次
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -