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 + -
显示快捷键?