📄 electronic organ.lst
字号:
A51 MACRO ASSEMBLER ELECTRONIC_ORGAN 08/02/2006 11:02:15 PAGE 1
MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN Electronic Organ.OBJ
ASSEMBLER INVOKED BY: e:\Program Files\Keil\C51\BIN\A51.EXE Electronic Organ.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0030 1 LINE EQU 30H
0031 2 ROW EQU 31H
0032 3 VAL EQU 32H
0000 4 ORG 00H
0000 800C 5 SJMP START
000B 6 ORG 0BH
000B 0200B7 7 LJMP INT_T0
000E 758000 8 START: MOV P0,#00H
0011 758901 9 MOV TMOD,#01H
10 ;******************************************
11 ;按键扫描程序
12 ;******************************************
0014 75B0F0 13 LSCAN: MOV P3,#0F0H
0017 30B00C 14 L1: JNB P3.0,L2
001A 1200CC 15 LCALL DELAY
001D 30B006 16 JNB P3.0,L2
0020 753000 17 MOV LINE,#00H
0023 020050 18 LJMP RSCAN
0026 30B10C 19 L2: JNB P3.1,L3
0029 1200CC 20 LCALL DELAY
002C 30B106 21 JNB P3.1,L3
002F 753001 22 MOV LINE,#01H
0032 020050 23 LJMP RSCAN
0035 30B20C 24 L3: JNB P3.2,L4
0038 1200CC 25 LCALL DELAY
003B 30B206 26 JNB P3.2,L4
003E 753002 27 MOV LINE,#02H
0041 020050 28 LJMP RSCAN
0044 30B3D0 29 L4: JNB P3.3,L1
0047 1200CC 30 LCALL DELAY
004A 30B3CA 31 JNB P3.3,L1
004D 753003 32 MOV LINE,#03H
33
0050 75B00F 34 RSCAN: MOV P3,#0FH
0053 30B406 35 C1: JNB P3.4,C2
0056 753100 36 MOV ROW,#00H
0059 020074 37 LJMP CALCU
005C 30B506 38 C2: JNB P3.5,C3
005F 753101 39 MOV ROW,#01H
0062 020074 40 LJMP CALCU
0065 30B606 41 C3: JNB P3.6,C4
0068 753102 42 MOV ROW,#02H
006B 020074 43 LJMP CALCU
006E 30B7E2 44 C4: JNB P3.7,C1
0071 753103 45 MOV ROW,#03H
46
0074 E530 47 CALCU: MOV A,LINE ;计算键号
0076 75F004 48 MOV B,#04H
0079 A4 49 MUL AB
007A 2531 50 ADD A,ROW
007C F532 51 MOV VAL,A
52 ;*******************************************
53 ;根据键号查表得到定时器的定时常数,
54 ;从而发出不同频率的声音
55 ;*******************************************
007E 9000E5 56 MOV DPTR,#TABLE2
0081 75F002 57 MOV B,#2
0084 A4 58 MUL AB
A51 MACRO ASSEMBLER ELECTRONIC_ORGAN 08/02/2006 11:02:15 PAGE 2
0085 F9 59 MOV R1,A
0086 93 60 MOVC A,@A+DPTR
0087 F58C 61 MOV TH0,A
0089 09 62 INC R1
008A E9 63 MOV A,R1
008B 93 64 MOVC A,@A+DPTR
008C F58A 65 MOV TL0,A
008E 75A882 66 MOV IE,#82H
0091 D28C 67 SETB TR0
68
0093 E532 69 MOV A,VAL ;显示键号
0095 9000D5 70 MOV DPTR,#TABLE1
0098 93 71 MOVC A,@A+DPTR
0099 F580 72 MOV P0,A
73 ;*******************************************
74 ;等待按键释放
75 ;*******************************************
009B E5B0 76 W0: MOV A,P3
009D B40F08 77 CJNE A,#0FH,W1
00A0 758000 78 MOV P0,#00H
00A3 C28C 79 CLR TR0
00A5 020014 80 LJMP LSCAN
00A8 E5B0 81 W1: MOV A,P3
00AA B4F008 82 CJNE A,#0F0H,W2
00AD 758000 83 MOV P0,#00H
00B0 C28C 84 CLR TR0
00B2 020014 85 LJMP LSCAN
00B5 80E4 86 W2: SJMP W0
87 ;****************************************
88 ;定时器0中断服务程序,输出特定频率的方波,
89 ;驱动扬声器发声
90 ;****************************************
00B7 9000E5 91 INT_T0: MOV DPTR,#TABLE2
00BA E532 92 MOV A,VAL
00BC 75F002 93 MOV B,#2
00BF A4 94 MUL AB
00C0 F9 95 MOV R1,A
00C1 93 96 MOVC A,@A+DPTR
00C2 F58C 97 MOV TH0,A
00C4 09 98 INC R1
00C5 E9 99 MOV A,R1
00C6 93 100 MOVC A,@A+DPTR
00C7 F58A 101 MOV TL0,A
00C9 B290 102 CPL P1.0
00CB 32 103 RETI
104
00CC 7E0A 105 DELAY: MOV R6,#10
00CE 7FFA 106 D1: MOV R7,#250
00D0 DFFE 107 DJNZ R7,$
00D2 DEFA 108 DJNZ R6,D1
00D4 22 109 RET
110
00D5 3F065B4F 111 TABLE1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
00D9 666D7D07
00DD 7F6F777C 112 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
00E1 395E7971
00E5 FA15 113 TABLE2: DW 64021,64103,64260,64400
00E7 FA67
00E9 FB04
00EB FB90
00ED FC0C 114 DW 64524,64580,64684,64777
00EF FC44
00F1 FCAC
00F3 FD09
00F5 FD34 115 DW 64820,64898,64968,65030
00F7 FD82
A51 MACRO ASSEMBLER ELECTRONIC_ORGAN 08/02/2006 11:02:15 PAGE 3
00F9 FDC8
00FB FE06
00FD FE22 116 DW 65058,65110,65157,65178
00FF FE56
0101 FE85
0103 FE9A
117 END
A51 MACRO ASSEMBLER ELECTRONIC_ORGAN 08/02/2006 11:02:15 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
B. . . . . . . . . D ADDR 00F0H A
C1 . . . . . . . . C ADDR 0053H A
C2 . . . . . . . . C ADDR 005CH A
C3 . . . . . . . . C ADDR 0065H A
C4 . . . . . . . . C ADDR 006EH A
CALCU. . . . . . . C ADDR 0074H A
D1 . . . . . . . . C ADDR 00CEH A
DELAY. . . . . . . C ADDR 00CCH A
IE . . . . . . . . D ADDR 00A8H A
INT_T0 . . . . . . C ADDR 00B7H A
L1 . . . . . . . . C ADDR 0017H A
L2 . . . . . . . . C ADDR 0026H A
L3 . . . . . . . . C ADDR 0035H A
L4 . . . . . . . . C ADDR 0044H A
LINE . . . . . . . N NUMB 0030H A
LSCAN. . . . . . . C ADDR 0014H A
P0 . . . . . . . . D ADDR 0080H A
P1 . . . . . . . . D ADDR 0090H A
P3 . . . . . . . . D ADDR 00B0H A
ROW. . . . . . . . N NUMB 0031H A
RSCAN. . . . . . . C ADDR 0050H A
START. . . . . . . C ADDR 000EH A
TABLE1 . . . . . . C ADDR 00D5H A
TABLE2 . . . . . . C ADDR 00E5H A
TH0. . . . . . . . D ADDR 008CH A
TL0. . . . . . . . D ADDR 008AH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
VAL. . . . . . . . N NUMB 0032H A
W0 . . . . . . . . C ADDR 009BH A
W1 . . . . . . . . C ADDR 00A8H A
W2 . . . . . . . . C ADDR 00B5H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -