📄 lvdaoqu.lst
字号:
A51 MACRO ASSEMBLER LVDAOQU 03/02/2007 22:16:15 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN lvdaoqu.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE lvdaoqu.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
0000 2 ORG 00H ;主程序起始地址
0000 800B 3 JMP START ;跳至主程序
000B 4 ORG 0BH ;TIMER0中断起始地址
000B 8040 5 JMP TIM0 ;跳至TIMER0中断子程序
000D 758901 6 START: MOV TMOD,#00000001B ;设TIMER0在MODEL
0010 75A882 7 MOV IE,#10000010B ;中断使能
0013 753000 8 START0: MOV 30H,#00 ;取简谱码谱指针
0016 E530 9 NEXT: MOV A,30H ;简谱码指针载入A
0018 90008B 10 MOV DPTR,#TABLE ;至TABLE取简谱码
001B 93 11 MOVC A,@A+DPTR
001C FA 12 MOV R2,A ;取到的简谱码暂存于R2
001D 602A 13 JZ END0 ;是否取到OO(结束码)?
001F 540F 14 ANL A,#0FH ;不是,则取低4位(节拍码)
0021 FD 15 MOV R5,A ;将节拍码存入R5
0022 EA 16 MOV A,R2 ;将取到的简谱码再载入A
0023 C4 17 SWAP A ;高低4位交换
0024 540F 18 ANL A,#0FH ;取低4位(音符码)
0026 7004 19 JNZ SING ;取到的音符码是否为O?
0028 C28C 20 CLR TR0 ;是,则不发音
002A 8017 21 JMP D1 ;跳至DI
002C 14 22 SING: DEC A ;取到的音符码减1(不含O)
002D F522 23 MOV 22H,A ;存入(22H)
002F 23 24 RL A ;乘2
0030 90006D 25 MOV DPTR,#TABLEL ;至TABLEI取相对的高位字节计手
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -