?? 單片機唱歌.lst
字號:
A51 MACRO ASSEMBLER 礯芲籣砡竉 05/04/2008 21:20:49 PAGE 1
MACRO ASSEMBLER A51 V7.07
OBJECT MODULE PLACED IN 單片機唱歌.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE 單片機唱歌.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
0000 1 ORG 0000H
0000 02001E 2 LJMP START
001B 3 ORG 001BH
001B 020067 4 LJMP TIME1
001E 758910 5 START: MOV TMOD,#10H ;T1工作在方式1
0021 75A888 6 MOV IE,#88H ;中斷使能
0024 754000 7 MAIN: MOV 40H,#00H ;設簡譜碼指針初始值
0027 E540 8 NEXT: MOV A,40H ;簡譜碼指針暫存累加器A
0029 900099 9 MOV DPTR,#TABLE ;取簡譜碼
002C 93 10 MOVC A,@A+DPTR
002D B40003 11 CJNE A,#00H,PLAY ;取到的簡譜碼不是結束碼,轉
0030 020062 12 LJMP STOP ;是結束碼,退出
0033 F9 13 PLAY: MOV R1,A ;R1暫存簡譜碼
0034 540F 14 ANL A,#0FH ;取節拍碼
0036 FA 15 MOV R2,A ;節拍碼暫存R2
0037 E9 16 MOV A,R1
0038 54F0 17 ANL A,#0F0H ;取音符碼
003A B40005 18 CJNE A,#00H,MUSIC ;音符碼為不為0,調發音子程序
003D C28E 19 CLR TR1 ;音符碼為0,不發音
003F 02005A 20 LJMP DEL
0042 C4 21 MUSIC:SWAP A
0043 14 22 DEC A
0044 F522 23 MOV 22H,A
0046 2522 24 ADD A,22H
0048 FB 25 MOV R3,A
0049 900087 26 MOV DPTR,#TABLE1 ;取相應計數值
004C 93 27 MOVC A,@A+DPTR
004D F58D 28 MOV TH1,A ;暫存高位字節
004F F521 29 MOV 21H,A
0051 EB 30 MOV A,R3
0052 04 31 INC A
0053 93 32 MOVC A,@A+DPTR ;取相應計數值的低位字節
0054 F58B 33 MOV TL1,A ;暫存低位字節
0056 F520 34 MOV 20H,A
0058 D28E 35 SETB TR1 ;啟動定時器
005A 120078 36 DEL: LCALL DELAY
005D 0540 37 INC 40H ;指向下一個簡譜碼
005F 020027 38 LJMP NEXT
0062 C28E 39 STOP: CLR TR1 ;停止定時器
0064 020024 40 LJMP MAIN
0067 C0E0 41 TIME1:PUSH ACC ;現場保護
0069 C0D0 42 PUSH PSW
006B B297 43 CPL P1.7 ;P1.7反相輸出,演奏音樂
006D 85208B 44 MOV TL1,20H ;重設計數值
0070 85218D 45 MOV TH1,21H
0073 D0D0 46 POP PSW
0075 D0E0 47 POP ACC
0077 32 48 RETI
0078 7F02 49 DELAY:MOV R7,#02H ;4/4曲調,延時125ms子程序
007A 7E7D 50 DELA1:MOV R6,#125
007C 7DF8 51 DELA2:MOV R5,#248
007E DDFE 52 DJNZ R5,$
0080 DEFA 53 DJNZ R6,DELA2
0082 DFF6 54 DJNZ R7,DELA1
0084 DAF2 55 DJNZ R2,DELAY
0086 22 56 RET
0087 FC0C 57 TABLE1:DW 64524,64580,64684,64777 ;簡碼值: ,1,2,3
0089 FC44
A51 MACRO ASSEMBLER 礯芲籣砡竉 05/04/2008 21:20:49 PAGE 2
008B FCAC
008D FD09
008F FD34 58 DW 64820,64898,64968,65030,65058 ;簡碼值:4,5,6,7,
0091 FD82
0093 FDC8
0095 FE06
0097 FE22
0099 59 TABLE:;第1行曲子
0099 64426298 60 DB 64H,42H,62H,98H
009D 74927268 61 DB 74H,92H,72H,68H
00A1 64223244 62 DB 64H,22H,32H,44H,32H,22H
00A5 3222
00A7 3C 63 DB 3CH
64 ;第2行曲子
00A8 64426294 65 DB 64H,42H,62H,94H,04H,82H
00AC 0482
00AE 749468 66 DB 74H,94H,68H
00B1 64324254 67 DB 64H,32H,42H,54H,04H,12H
00B5 0412
00B7 2C 68 DB 2CH
69 ;第3行曲子
00B8 749498 70 DB 74H,94H,98H
00BB 84728298 71 DB 84H,72H,82H,98H
00BF 72829272 72 DB 72H,82H,92H,72H,72H,62H,42H,22H
00C3 72624222
00C7 3C 73 DB 3CH
74 ;第4行曲子
00C8 64426294 75 DB 64H,42H,62H,94H,04H,82H
00CC 0482
00CE 749468 76 DB 74H,94H,68H
00D1 64324254 77 DB 64H,32H,42H,54H,04H,12H
00D5 0412
00D7 2C 78 DB 2CH
79 ;結束碼
00D8 00 80 DB 00H
81 END
A51 MACRO ASSEMBLER 礯芲籣砡竉 05/04/2008 21:20:49 PAGE 3
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
DEL. . . . . . . . C ADDR 005AH A
DELA1. . . . . . . C ADDR 007AH A
DELA2. . . . . . . C ADDR 007CH A
DELAY. . . . . . . C ADDR 0078H A
IE . . . . . . . . D ADDR 00A8H A
MAIN . . . . . . . C ADDR 0024H A
MUSIC. . . . . . . C ADDR 0042H A
NEXT . . . . . . . C ADDR 0027H A
P1 . . . . . . . . D ADDR 0090H A
PLAY . . . . . . . C ADDR 0033H A
PSW. . . . . . . . D ADDR 00D0H A
START. . . . . . . C ADDR 001EH A
STOP . . . . . . . C ADDR 0062H A
TABLE. . . . . . . C ADDR 0099H A
TABLE1 . . . . . . C ADDR 0087H A
TH1. . . . . . . . D ADDR 008DH A
TIME1. . . . . . . C ADDR 0067H A
TL1. . . . . . . . D ADDR 008BH A
TMOD . . . . . . . D ADDR 0089H A
TR1. . . . . . . . B ADDR 0088H.6 A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -