📄 音乐.lis
字号:
0038 ; 0x1c,0x2a,0x2c,0xe9,0x69,0x2a,0x47,0x46,
0038 ; 0x65,0x26,0x48,0x49,0x43,0x48,0x36,0x15,
0038 ; 0x26,0x18,0xe5,0x6a,0x2c,0x47,0x49,0x26,
0038 ; 0x28,0x85,0x33,0x15,0x43,0x25,0x26,0x27,
0038 ; 0x29,0xc6,0x25,0x26,0x68,0x29,0x4c,0x4a,
0038 ; 0x49,0x2a,0x29,0x49,0x26,0x25,0x83,0x88,
0038 ; 0x26,0x28,0x26,0x25,0x23,0x25,0x26,0x28,
0038 ; 0xc5,0x04,0x04,
0038 ; /*************希望*****************/
0038 ; 0x49,0x4a,0x4a,0x6a,0x29,0x48,0x46,0x68,
0038 ; 0x29,0xc8,0x49,0x4a,0x4a,0x6a,0x2c,0x4a,
0038 ; 0x4a,0x49,0x4a,0xca,0x4c,0x4d,0x4d,0x6d,
0038 ; 0x2c,0x4a,0x4a,0x4c,0x4d,0xcc,0x49,0x4a,
0038 ; 0x4a,0x69,0x2a,0x4a,0x49,0x4a,0x46,
0038 ; 0x18,0xe6,0x29,0x29,0x29,0x28,0x46,
0038 ; 0x29,0x29,0x29,0x28,0x46,0x49,0x4a,
0038 ; 0x48,0x69,0x2a,0x4c,0x2d,0x2d,0x2d,
0038 ; 0x2c,0x4a,0x29,0x29,0x29,0x28,0x46,
0038 ; 0x46,0x45,0x46,0xe6,
0038 ; 0x00};
0038 ; /* 音阶表 */
0038 ; const unsigned int TONETABLE[15]={DO,RE,MI,FA,SO,LA,TI,DO_H,
0038 ; RE_H,MI_H,FA_H,SO_H,LA_H,TI_H,DO_HH};
0038 ;
0038 ; /* 音阶重装常数 */
0038 ; unsigned int toneconst;
0038 ; #pragma interrupt_handler timer1_ovf_isr:9
0038 ; void timer1_ovf_isr(void)
0038 ; {
0038 .dbline 85
0038 ; TCNT1=toneconst;
0038 20900000 lds R2,_toneconst
003C 30900100 lds R3,_toneconst+1
0040 3DBC out 0x2d,R3
0042 2CBC out 0x2c,R2
0044 .dbline 86
0044 ; PORTC^=1;
0044 81E0 ldi R24,1
0046 25B2 in R2,0x15
0048 2826 eor R2,R24
004A 25BA out 0x15,R2
004C .dbline -2
004C L9:
004C 2990 ld R2,y+
004E 2FBE out 0x3f,R2
0050 8991 ld R24,y+
0052 3990 ld R3,y+
0054 2990 ld R2,y+
0056 .dbline 0 ; func end
0056 1895 reti
0058 .dbend
0058 .dbfunc e music _music fV
0058 ; sound_add -> R20,R21
0058 ; temp1 -> R22
0058 ; temp -> R10
.even
0058 _music::
0058 0E940000 xcall push_gset3
005C .dbline -1
005C .dbline 89
005C ; }
005C ; void music(void)
005C ; {
005C .dbline 90
005C ; unsigned char temp=0,temp1=0;
005C AA24 clr R10
005E .dbline 90
005E 6627 clr R22
0060 .dbline 91
0060 ; unsigned int sound_add=0;
0060 4427 clr R20
0062 5527 clr R21
0064 .dbline 92
0064 ; TCCR1A = 0x00;
0064 2224 clr R2
0066 2FBC out 0x2f,R2
0068 .dbline 93
0068 ; TCCR1B =(1<<CS11);//8分频
0068 82E0 ldi R24,2
006A 8EBD out 0x2e,R24
006C .dbline 94
006C ; temp1=sound[sound_add];
006C 80E0 ldi R24,<_sound
006E 90E0 ldi R25,>_sound
0070 FA01 movw R30,R20
0072 E80F add R30,R24
0074 F91F adc R31,R25
0076 6491 lpm R22,Z
0078 30C0 xjmp L12
007A L11:
007A .dbline 97
007A ;
007A ; while(temp1!=0)
007A ; {
007A .dbline 98
007A ; temp=temp1;
007A A62E mov R10,R22
007C .dbline 99
007C ; temp&=0x0f;
007C 8A2D mov R24,R10
007E 8F70 andi R24,15
0080 A82E mov R10,R24
0082 .dbline 100
0082 ; if(temp!=0)
0082 8823 tst R24
0084 A9F0 breq L14
0086 .dbline 101
0086 ; {
0086 .dbline 102
0086 ; TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
0086 89B7 in R24,0x39
0088 8460 ori R24,4
008A 89BF out 0x39,R24
008C .dbline 103
008C ; temp--;
008C AA94 dec R10
008E .dbline 104
008E ; toneconst=TONETABLE[temp];
008E 82E0 ldi R24,2
0090 8A9D mul R24,R10
0092 F001 movw R30,R0
0094 80E0 ldi R24,<_TONETABLE
0096 90E0 ldi R25,>_TONETABLE
0098 E80F add R30,R24
009A F91F adc R31,R25
009C 0590 lpm R0,Z+
009E 1490 lpm R1,Z
00A0 F001 movw R30,R0
00A2 F0930100 sts _toneconst+1,R31
00A6 E0930000 sts _toneconst,R30
00AA .dbline 105
00AA ; TCNT1=toneconst;
00AA FDBD out 0x2d,R31
00AC ECBD out 0x2c,R30
00AE .dbline 106
00AE ; PORTA=toneconst;
00AE EBBB out 0x1b,R30
00B0 .dbline 107
00B0 ; }
00B0 L14:
00B0 .dbline 108
00B0 A62E mov R10,R22
00B2 .dbline 109
00B2 8A2D mov R24,R10
00B4 8295 swap R24
00B6 8F70 andi R24,#0x0F
00B8 .dbline 110
00B8 8F70 andi R24,15
00BA A82E mov R10,R24
00BC .dbline 111
00BC 81E8 ldi R24,129
00BE 8A9D mul R24,R10
00C0 8001 movw R16,R0
00C2 A6DF xcall _delay_ms
00C4 .dbline 112
00C4 89B7 in R24,0x39
00C6 8B7F andi R24,251
00C8 89BF out 0x39,R24
00CA .dbline 113
00CA 4F5F subi R20,255 ; offset = 1
00CC 5F4F sbci R21,255
00CE .dbline 114
00CE 80E0 ldi R24,<_sound
00D0 90E0 ldi R25,>_sound
00D2 FA01 movw R30,R20
00D4 E80F add R30,R24
00D6 F91F adc R31,R25
00D8 6491 lpm R22,Z
00DA .dbline 116
00DA L12:
00DA .dbline 96
00DA 6623 tst R22
00DC 71F6 brne L11
00DE .dbline 117
00DE ; temp=temp1;
00DE ; temp>>=4;
00DE ; temp&=0x0f;
00DE ; delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
00DE ; TIMSK&=~(1<<TOIE1);
00DE ; sound_add++;
00DE ; temp1=sound[sound_add];
00DE ;
00DE ; }
00DE ; PORTC = 0xFF;
00DE 8FEF ldi R24,255
00E0 85BB out 0x15,R24
00E2 .dbline -2
00E2 L10:
00E2 0E940000 xcall pop_gset3
00E6 .dbline 0 ; func end
00E6 0895 ret
00E8 .dbsym r sound_add 20 i
00E8 .dbsym r temp1 22 c
00E8 .dbsym r temp 10 c
00E8 .dbend
00E8 .dbfunc e main _main fV
.even
00E8 _main::
00E8 .dbline -1
00E8 .dbline 121
00E8 ; }
00E8 ; /* 主程序 */
00E8 ; void main(void)
00E8 ; {
00E8 .dbline 123
00E8 ;
00E8 ; DDRC=0x01;
00E8 81E0 ldi R24,1
00EA 84BB out 0x14,R24
00EC .dbline 124
00EC ; DDRD=0x80;
00EC 80E8 ldi R24,128
00EE 81BB out 0x11,R24
00F0 .dbline 125
00F0 ; DDRA=0x0f;
00F0 8FE0 ldi R24,15
00F2 8ABB out 0x1a,R24
00F4 .dbline 126
00F4 ; SREG=0x80;
00F4 80E8 ldi R24,128
00F6 8FBF out 0x3f,R24
00F8 01C0 xjmp L18
00FA L17:
00FA .dbline 128
00FA .dbline 129
00FA AEDF xcall _music
00FC .dbline 130
00FC L18:
00FC .dbline 127
00FC FECF xjmp L17
00FE X1:
00FE .dbline -2
00FE L16:
00FE .dbline 0 ; func end
00FE 0895 ret
0100 .dbend
.area bss(ram, con, rel)
0000 .dbfile 音乐.c
0000 _toneconst::
0000 .blkb 2
0002 .dbsym e toneconst _toneconst i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -