📄 music.lis
字号:
.module music.c
.area eeprom(rom, con, rel)
0000 _sound::
0000 6627 .byte 'f,39
0002 6826 .byte 'h,38
0004 2828 .byte 40,40
0006 2726 .byte 39,38
0008 4743 .byte 'G,'C
000A 6728 .byte 'g,40
000C 6927 .byte 'i,39
000E 2929 .byte 41,41
0010 2827 .byte 40,39
0012 4646 .byte 'F,'F
0014 4A4D .byte 'J,'M
0016 4C2D .byte 'L,45
0018 2C2B .byte 44,43
001A 2B2A .byte 43,42
001C 294A .byte 41,'J
001E 4620 .byte 'F,32
0020 4B29 .byte 'K,41
0022 6A28 .byte 'j,40
0024 2723 .byte 39,35
0026 2827 .byte 40,39
0028 4646 .byte 'F,'F
002A 4A4D .byte 'J,'M
002C 4C2D .byte 'L,45
002E 2C2B .byte 44,43
0030 2B2A .byte 43,42
0032 294A .byte 41,'J
0034 4620 .byte 'F,32
0036 4B29 .byte 'K,41
0038 6A28 .byte 'j,40
003A 2723 .byte 39,35
003C 2827 .byte 40,39
003E 4646 .byte 'F,'F
0040 00 .byte 0
0041 .dbfile E:\icc\iccavr\mega8\mega8\music\music.c
0041 .dbsym e sound _sound A[65:65]c
.area data(ram, con, rel)
0000 .dbfile E:\icc\iccavr\mega8\mega8\music\music.c
.area lit(rom, con, rel)
0000 _TONETABLE::
0000 44FC .word 64580
0002 ACFC .word 64684
0004 09FD .word 64777
0006 34FD .word 64820
0008 82FD .word 64898
000A C8FD .word 64968
000C 06FE .word 65030
000E 22FE .word 65058
0010 56FE .word 65110
0012 85FE .word 65157
0014 9AFE .word 65178
0016 C1FE .word 65217
0018 E4FE .word 65252
001A 03FF .word 65283
001C 11FF .word 65297
001E .dbsym e TONETABLE _TONETABLE A[30:15]ki
.area text(rom, con, rel)
0000 .dbfile E:\icc\iccavr\mega8\mega8\music\music.c
0000 .dbfunc e delay_us _delay_us fV
0000 ; time -> R16,R17
.even
0000 _delay_us::
0000 .dbline -1
0000 .dbline 39
0000 ; /*******************************************/
0000 ; /* 广州天河双龙电子公司 */
0000 ; /* http://www.sl.com.cn */
0000 ; /* 电子音乐演示程序 */
0000 ; /* 作者:ntzwq@wx88.net */
0000 ; /* 2002年5月10日 */
0000 ; /* 目标MCU:MEGA8 晶振:外部(EXT) 8MHZ */
0000 ; /*******************************************/
0000 ; //使用说明:音乐输出端口:PORTC.0,音乐数据存放
0000 ; //于ATMEGA8的EEPROM存贮器中,可以使用music.exe
0000 ; //程序通过RS232通信口进行修改。
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include <eeprom.h>
0000 ; #include "music.h"
0000 ; extern void uart_init(void);
0000 ; //extern void isp(void);
0000 ; /* 音乐数据(卡秒莎) */
0000 ; /* 四分之一拍为0x10, 二分之一拍为0x20, 一拍为0x40*/
0000 ; /* 低1-1 2-2 3-3 4-4 5-5 6-6 7-7 */
0000 ; /* 中1-8 2-9 3-A 4-B 5-C 6-D 7-E */
0000 ; /* 高1-F*/
0000 ; #pragma data:eeprom
0000 ; unsigned char sound[]={0x66,0x27,0x68,0x26,0x28,0x28,0x27,0x26,0x47,0x43,
0000 ; 0x67,0x28,0x69,0x27,0x29,0x29,0x28,0x27,0x46,0x46,
0000 ; 0x4a,0x4d,0x4c,0x2d,0x2c,0x2b,0x2b,0x2a,0x29,0x4a,
0000 ; 0x46,0x20,0x4b,0x29,0x6a,0x28,0x27,0x23,0x28,0x27,
0000 ; 0x46,0x46,0x4a,0x4d,0x4c,0x2d,0x2c,0x2b,0x2b,0x2a,
0000 ; 0x29,0x4a,0x46,0x20,0x4b,0x29,0x6a,0x28,0x27,0x23,
0000 ; 0x28,0x27,0x46,0x46,0x00};
0000 ; #pragma data:data
0000 ; /* 音阶表 */
0000 ; const unsigned int TONETABLE[15]={DO,RE,MI,FA,SO,LA,TI,DO_H,
0000 ; RE_H,MI_H,FA_H,SO_H,LA_H,TI_H,DO_HH};
0000 ; /* 音阶重装常数 */
0000 ; unsigned int toneconst;
0000 ; /* 微秒级延时程序 */
0000 ; void delay_us(int time)
0000 ; {
0000 L2:
0000 .dbline 41
0000 ; do
0000 ; {
0000 .dbline 42
0000 ; time--;
0000 0150 subi R16,1
0002 1040 sbci R17,0
0004 .dbline 43
0004 ; }
0004 L3:
0004 .dbline 44
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 .dbline 45
000E ; }
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 00D0 rcall push_gset1
0012 A801 movw R20,R16
0014 .dbline -1
0014 .dbline 48
0014 ; /* 毫秒级延时程序 */
0014 ; void delay_ms(unsigned int time)
0014 ; {
0014 05C0 rjmp L7
0016 L6:
0016 .dbline 50
0016 .dbline 51
0016 08EE ldi R16,1000
0018 13E0 ldi R17,3
001A F2DF rcall _delay_us
001C .dbline 52
001C 4150 subi R20,1
001E 5040 sbci R21,0
0020 .dbline 53
0020 L7:
0020 .dbline 49
0020 ; while(time!=0)
0020 4030 cpi R20,0
0022 4507 cpc R20,R21
0024 C1F7 brne L6
0026 X0:
0026 .dbline -2
0026 .dbline 54
0026 ; {
0026 ; delay_us(1000);
0026 ; time--;
0026 ; }
0026 ; }
0026 L5:
0026 00D0 rcall pop_gset1
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbsym r time 20 i
002A .dbend
.area vector(rom, abs)
.org 16
0010 15C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
002A .dbfile E:\icc\iccavr\mega8\mega8\music\music.c
002A .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
002A _timer1_ovf_isr::
002A 2A92 st -y,R2
002C 3A92 st -y,R3
002E 8A93 st -y,R24
0030 2FB6 in R2,0x3f
0032 2A92 st -y,R2
0034 .dbline -1
0034 .dbline 57
0034 ; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
0034 ; void timer1_ovf_isr(void)
0034 ; {
0034 .dbline 58
0034 ; TCNT1=toneconst;
0034 20900000 lds R2,_toneconst
0038 30900100 lds R3,_toneconst+1
003C 3DBC out 0x2d,R3
003E 2CBC out 0x2c,R2
0040 .dbline 59
0040 ; PORTC^=1;
0040 81E0 ldi R24,1
0042 25B2 in R2,0x15
0044 2826 eor R2,R24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -