xl2002.lst
来自「用蜂鸣器唱歌」· LST 代码 · 共 164 行
LST
164 行
A51 MACRO ASSEMBLER XL2002 10/24/2008 15:06:31 PAGE 1
MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN XL2002.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE XL2002.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;/*******************************************************************************
2 ;********************************************************************************/
00B4 3 SPK BIT P3.4
4
0000 5 ORG 0000H
0000 02000E 6 LJMP MAIN
000B 7 ORG 000BH
000B 020046 8 LJMP TIMER0
9
000E 10 MAIN:
000E 758901 11 MOV TMOD,#01H ;置CT0定时工作方式1
0011 75A882 12 MOV IE,#82H ;CPU开中断,CT0开中断
0014 7D00 13 MOV R5,#00H
0016 ED 14 NEXT: MOV A,R5 ;R5存放取数的变地址
0017 90004D 15 MOV DPTR,#TABLE ;DPTR置音高节拍表首地址
001A 93 16 MOVC A,@A+DPTR ;从音高节拍表取中取音高高位参数
001B FC 17 MOV R4,A ;R4存放音高高位参数
001C 0D 18 INC R5
001D ED 19 MOV A,R5
001E 93 20 MOVC A,@A+DPTR ;从音高节拍表取中取音高低位参数
001F FB 21 MOV R3,A ;R3存放音高低位参数
0020 0D 22 INC R5
0021 ED 23 MOV A,R5
0022 93 24 MOVC A,@A+DPTR ;从音高节拍表取中取节拍参数
0023 7004 25 JNZ NEXT1
0025 7D00 26 MOV R5,#00H
0027 80ED 27 JMP NEXT ;唱完后循环(节拍参数为#00H表示歌曲结束)
0029 FA 28 NEXT1: MOV R2,A ;R2存放节拍参数
002A 120030 29 LCALL SONG ;调用音符播放程序
002D 0D 30 INC R5
002E 80E6 31 SJMP NEXT ;转入调用下一个音符
0030 32 SONG:
0030 8C8C 33 MOV TH0,R4
0032 8B8A 34 MOV TL0,R3
0034 D28C 35 SETB TR0 ;启动CT0(开始唱某一音符)
0036 7985 36 DELAY: MOV R1,#85H ;节拍延时(即某一音符唱多长时间)
0038 78FF 37 DEL1: MOV R0,#0FFH
003A 00 38 DEL0: NOP
003B 00 39 NOP
003C 00 40 NOP
003D D8FB 41 DJNZ R0,DEL0
003F D9F7 42 DJNZ R1,DEL1
0041 DAF3 43 DJNZ R2,DELAY
0043 C28C 44 CLR TR0 ;禁止CT0(某一音符唱完后停止)
0045 22 45 RET
0046 46 TIMER0: ;定时中断程序(用于决定某一音符唱多高)
0046 B2B4 47 CPL SPK
0048 8C8C 48 MOV TH0,R4
004A 8B8A 49 MOV TL0,R3
004C 32 50 RETI
004D 51 TABLE: ;音高节拍表,休止符用"FFH,FFH",结束用节拍为00H表示
004D FFFF01FD 52 DB 0FFH,0FFH,01H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH
, 08H,02H
0051 0802FD08
0055 02FD0802
0059 FD0802FD
005D 0802FD08
0061 02
A51 MACRO ASSEMBLER XL2002 10/24/2008 15:06:31 PAGE 2
0062 FD5B04FD 53 DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,02H,0FFH,0FFH,01H,0FCH
, 0BH,02H
0066 0802FCAB
006A 02FC0B02
006E FC0B02FF
0072 FF01FC0B
0076 02
0077 FCAB02FC 54 DB 0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH
,0ABH,02H
007B AB02FCAB
007F 02FCAB02
0083 FCAB04FC
0087 AB02FCAB
008B 02
008C FB8F02FC 55 DB 0FBH, 8FH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H,0FFH,0FFH,01H
0090 0B02FC0B
0094 04FFFF01
0098 FD0802FD 56 DB 0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,04H,0FDH, 08H,02H,0FDH, 08H,02H
009C 0802FD08
00A0 02FD0804
00A4 FD0802FD
00A8 0802
00AA FD5B04FD 57 DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,04H,0FDH, 08H,06H
00AE 0802FCAB
00B2 04FD0806
00B6 FB8F02FB 58 DB 0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH, 03H,02H,0FAH
, 14H,02H
00BA 8F02FB8F
00BE 02FB8F02
00C2 FB8F02FB
00C6 0302FA14
00CA 02
00CB FCAB04FC 59 DB 0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H
00CF AB02FCAB
00D3 02FCAB02
00D7 FC0B02FC
00DB 0B04
00DD FFFF01FD 60 DB 0FFH,0FFH,01H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH, 08H,02H,0FDH
, 08H,02H
00E1 0802FD08
00E5 02FD0802
00E9 FD0802FD
00ED 0802FD08
00F1 02
00F2 FD5B04FD 61 DB 0FDH, 5BH,04H,0FDH, 08H,02H,0FCH,0ABH,04H,0FDH, 08H,06H
00F6 0802FCAB
00FA 04FD0806
00FE FB8F02FB 62 DB 0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH,08FH,02H,0FBH, 03H,02H,0FAH
, 14H,02H
0102 8F02FB8F
0106 02FB8F02
010A FB8F02FB
010E 0302FA14
0112 02
0113 FCAB04FC 63 DB 0FCH,0ABH,04H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH,0ABH,02H,0FCH, 0BH,02H,0FCH, 0BH,04H, 00H
, 00H,00H
0117 AB02FCAB
011B 02FCAB02
011F FC0B02FC
0123 0B040000
0127 00
64
65 END
A51 MACRO ASSEMBLER XL2002 10/24/2008 15:06:31 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
DEL0 . . . . . . . C ADDR 003AH A
DEL1 . . . . . . . C ADDR 0038H A
DELAY. . . . . . . C ADDR 0036H A
IE . . . . . . . . D ADDR 00A8H A
MAIN . . . . . . . C ADDR 000EH A
NEXT . . . . . . . C ADDR 0016H A
NEXT1. . . . . . . C ADDR 0029H A
P3 . . . . . . . . D ADDR 00B0H A
SONG . . . . . . . C ADDR 0030H A
SPK. . . . . . . . B ADDR 00B0H.4 A
TABLE. . . . . . . C ADDR 004DH A
TH0. . . . . . . . D ADDR 008CH A
TIMER0 . . . . . . C ADDR 0046H 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 + =
减小字号Ctrl + -
显示快捷键?