📄 音乐.lis
字号:
.module _音乐.c
.area text(rom, con, rel)
0000 .dbfile 音乐.c
0000 .dbfunc e delay_us _delay_us fV
0000 ; time -> R16,R17
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 32
0000 ; /*******************************************************************
0000 ; 实验名称:音乐合成演示实验
0000 ; 作者:王晓波
0000 ; 晶振:内部 8M
0000 ; 接线方法:
0000 ; 1.PC0和PD7分别接扬声器的两个输入端子。
0000 ; 2.PA0-PA3分别接I/O输出的O0-O3。
0000 ; 使用说明:
0000 ; 1.音乐数据存放于芯片的flash存贮器中。
0000 ; 2.PA口显示不同的音阶变化。
0000 ; 3.音乐数据的低四位选择音调频率,
0000 ; 高四位*5后,为音调持续时间。
0000 ; ********************************************************************/
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; #define DO 63622 //523
0000 ; #define RE 63831 //587
0000 ; #define MI 64017 //659
0000 ; #define FA 64102 //698
0000 ; #define SO 64259 //784
0000 ; #define LA 64398 //880
0000 ; #define TI 64522 //988
0000 ; #define DO_H 64578 //1046
0000 ; #define RE_H 64683 //1174
0000 ; #define MI_H 64776 //1318
0000 ; #define FA_H 64819 //1397
0000 ; #define SO_H 64897 //1568
0000 ; #define LA_H 64966 //1760
0000 ; #define TI_H 65028 //1976
0000 ; #define DO_HH 65057 //2093
0000 ; void delay_us(int time)
0000 ; {//微秒级延时程序
0000 L2:
0000 .dbline 34
0000 ; do
0000 ; {
0000 .dbline 35
0000 ; time--;
0000 0150 subi R16,1
0002 1040 sbci R17,0
0004 .dbline 36
0004 ; }
0004 L3:
0004 .dbline 37
0004 ; while (time>1);
0004 81E0 ldi R24,1
0006 90E0 ldi R25,0
0008 8017 cp R24,R16
000A 9107 cpc R25,R17
000C CCF3 brlt L2
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r time 16 I
0010 .dbend
0010 .dbfunc e delay_ms _delay_ms fV
0010 ; time -> R20,R21
.even
0010 _delay_ms::
0010 0E940000 xcall push_gset1
0014 A801 movw R20,R16
0016 .dbline -1
0016 .dbline 40
0016 ; }
0016 ; void delay_ms(unsigned int time)
0016 ; {//毫秒级延时程序
0016 05C0 xjmp L7
0018 L6:
0018 .dbline 42
0018 .dbline 43
0018 08EE ldi R16,1000
001A 13E0 ldi R17,3
001C F1DF xcall _delay_us
001E .dbline 44
001E 4150 subi R20,1
0020 5040 sbci R21,0
0022 .dbline 45
0022 L7:
0022 .dbline 41
0022 ; while (time!=0)
0022 4030 cpi R20,0
0024 4507 cpc R20,R21
0026 C1F7 brne L6
0028 X0:
0028 .dbline -2
0028 L5:
0028 0E940000 xcall pop_gset1
002C .dbline 0 ; func end
002C 0895 ret
002E .dbsym r time 20 i
002E .dbend
.area lit(rom, con, rel)
0000 _sound::
0000 404C .byte 64,'L
0002 4A49 .byte 'J,'I
0004 C849 .byte 200,'I
0006 4746 .byte 'G,'F
0008 E54E .byte 229,'N
000A 4D4E .byte 'M,'N
000C 6C2D .byte 'l,45
000E 4E4D .byte 'N,'M
0010 2C2D .byte 44,45
0012 2E2D .byte 46,45
0014 6F2D .byte 'o,45
0016 2C2D .byte 44,45
0018 2C29 .byte 44,41
001A 2A2B .byte 42,43
001C 2A29 .byte 42,41
001E C84C .byte 200,'L
0020 4E49 .byte 'N,'I
0022 4648 .byte 'F,'H
0024 C526 .byte 197,38
0026 28E5 .byte 40,229
0028 8365 .byte 131,'e
002A 2668 .byte 38,'h
002C 2926 .byte 41,38
002E 2845 .byte 40,'E
0030 6C2F .byte 'l,47
0032 3D1C .byte 61,28
0034 2A2C .byte 42,44
0036 E969 .byte 233,'i
0038 2A47 .byte 42,'G
003A 4665 .byte 'F,'e
003C 2648 .byte 38,'H
003E 4943 .byte 'I,'C
0040 4836 .byte 'H,54
0042 1526 .byte 21,38
0044 18E5 .byte 24,229
0046 6A2C .byte 'j,44
0048 4749 .byte 'G,'I
004A 2628 .byte 38,40
004C 8533 .byte 133,51
004E 1543 .byte 21,'C
0050 2526 .byte 37,38
0052 2729 .byte 39,41
0054 C625 .byte 198,37
0056 2668 .byte 38,'h
0058 294C .byte 41,'L
005A 4A49 .byte 'J,'I
005C 2A29 .byte 42,41
005E 4926 .byte 'I,38
0060 2583 .byte 37,131
0062 8826 .byte 136,38
0064 2826 .byte 40,38
0066 2523 .byte 37,35
0068 2526 .byte 37,38
006A 28C5 .byte 40,197
006C 0404 .byte 4,4
006E 494A .byte 'I,'J
0070 4A6A .byte 'J,'j
0072 2948 .byte 41,'H
0074 4668 .byte 'F,'h
0076 29C8 .byte 41,200
0078 494A .byte 'I,'J
007A 4A6A .byte 'J,'j
007C 2C4A .byte 44,'J
007E 4A49 .byte 'J,'I
0080 4ACA .byte 'J,202
0082 4C4D .byte 'L,'M
0084 4D6D .byte 'M,'m
0086 2C4A .byte 44,'J
0088 4A4C .byte 'J,'L
008A 4DCC .byte 'M,204
008C 494A .byte 'I,'J
008E 4A69 .byte 'J,'i
0090 2A4A .byte 42,'J
0092 494A .byte 'I,'J
0094 4618 .byte 'F,24
0096 E629 .byte 230,41
0098 2929 .byte 41,41
009A 2846 .byte 40,'F
009C 2929 .byte 41,41
009E 2928 .byte 41,40
00A0 4649 .byte 'F,'I
00A2 4A48 .byte 'J,'H
00A4 692A .byte 'i,42
00A6 4C2D .byte 'L,45
00A8 2D2D .byte 45,45
00AA 2C4A .byte 44,'J
00AC 2929 .byte 41,41
00AE 2928 .byte 41,40
00B0 4646 .byte 'F,'F
00B2 4546 .byte 'E,'F
00B4 E600 .byte 230,0
00B6 .dbsym e sound _sound A[182:182]kc
00B6 _TONETABLE::
00B6 86F8 .word 63622
00B8 57F9 .word 63831
00BA 11FA .word 64017
00BC 66FA .word 64102
00BE 03FB .word 64259
00C0 8EFB .word 64398
00C2 0AFC .word 64522
00C4 42FC .word 64578
00C6 ABFC .word 64683
00C8 08FD .word 64776
00CA 33FD .word 64819
00CC 81FD .word 64897
00CE C6FD .word 64966
00D0 04FE .word 65028
00D2 21FE .word 65057
00D4 .dbsym e TONETABLE _TONETABLE A[30:15]ki
.area vector(rom, abs)
.org 32
0020 0C941700 jmp _timer1_ovf_isr
.area lit(rom, con, rel)
.area text(rom, con, rel)
002E .dbfile 音乐.c
002E .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
002E _timer1_ovf_isr::
002E 2A92 st -y,R2
0030 3A92 st -y,R3
0032 8A93 st -y,R24
0034 2FB6 in R2,0x3f
0036 2A92 st -y,R2
0038 .dbline -1
0038 .dbline 84
0038 ; {
0038 ; delay_us(1000);
0038 ; time--;
0038 ; }
0038 ; }
0038 ; const unsigned char sound[]={ //乐曲数据表
0038 ; /*************梁祝****************/
0038 ; 0x40,0x4c,0x4a,0x49,0xc8,0x49,0x47,0x46,
0038 ; 0xe5,0x4e,0x4d,0x4e,0x6c,0x2d,0x4e,
0038 ; 0x4d,0x2c,0x2d,0x2e,0x2d,0x6f,0x2d,
0038 ; 0x2c,0x2d,0x2c,0x29,0x2a,0x2b,
0038 ; 0x2a,0x29,0xc8,0x4c,0x4e,0x49,0x46,0x48,
0038 ; 0xc5,0x26,0x28,0xe5,0x83,0x65,0x26,
0038 ; 0x68,0x29,0x26,0x28,0x45,0x6c,0x2f,0x3d,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -