📄 8.lis
字号:
0024 C1F7 brne L6
0026 X0:
0026 .dbline -2
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 26
001A 15C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
002A .dbfile D:\xij\demo\demo_diy02-8a\1\C语言\02-8A-8\8.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 112
0034 ; {
0034 ; delay_us(1000);
0034 ; time--;
0034 ; }
0034 ; }
0034 ;
0034 ; unsigned int toneconst;
0034 ; #pragma interrupt_handler timer1_ovf_isr:14
0034 ; //iv_TIMER1_OVF
0034 ; void timer1_ovf_isr(void)
0034 ; {
0034 .dbline 113
0034 ; TCNT1=toneconst;
0034 20900000 lds R2,_toneconst
0038 30900100 lds R3,_toneconst+1
003C 30928500 sts 132+1,R3
0040 20928400 sts 132,R2
0044 .dbline 114
0044 ; PORTD^=0x08;
0044 88E0 ldi R24,8
0046 2BB0 in R2,0xb
0048 2826 eor R2,R24
004A 2BB8 out 0xb,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 00D0 rcall push_gset3
005A .dbline -1
005A .dbline 117
005A ; }
005A ; void music(void)
005A ; {
005A .dbline 119
005A ; unsigned char temp,temp1;
005A ; unsigned int sound_add=0;
005A 4427 clr R20
005C 5527 clr R21
005E .dbline 120
005E ; TCCR1A = 0x00;
005E 2224 clr R2
0060 20928000 sts 128,R2
0064 .dbline 121
0064 ; TCCR1B =(1<<CS11);//8分频
0064 82E0 ldi R24,2
0066 80938100 sts 129,R24
006A .dbline 122
006A ; temp1 = sound[sound_add];
006A 80E0 ldi R24,<_sound
006C 90E0 ldi R25,>_sound
006E FA01 movw R30,R20
0070 E80F add R30,R24
0072 F91F adc R31,R25
0074 6491 lpm R22,Z
0076 36C0 rjmp L12
0078 L11:
0078 .dbline 124
0078 ; while(temp1!=0)
0078 ; {
0078 .dbline 125
0078 ; temp=temp1;
0078 A62E mov R10,R22
007A .dbline 126
007A ; temp&=0x0f;
007A 8A2D mov R24,R10
007C 8F70 andi R24,15
007E A82E mov R10,R24
0080 .dbline 127
0080 ; if(temp!=0)
0080 8823 tst R24
0082 C9F0 breq L14
0084 .dbline 128
0084 ; {
0084 .dbline 129
0084 ; TIMSK1|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
0084 80916F00 lds R24,111
0088 8160 ori R24,1
008A 80936F00 sts 111,R24
008E .dbline 130
008E ; temp--;
008E AA94 dec R10
0090 .dbline 131
0090 ; toneconst=TONETABLE[temp];
0090 82E0 ldi R24,2
0092 8A9D mul R24,R10
0094 F001 movw R30,R0
0096 80E0 ldi R24,<_TONETABLE
0098 90E0 ldi R25,>_TONETABLE
009A E80F add R30,R24
009C F91F adc R31,R25
009E 0590 lpm R0,Z+
00A0 1490 lpm R1,Z
00A2 F001 movw R30,R0
00A4 F0930100 sts _toneconst+1,R31
00A8 E0930000 sts _toneconst,R30
00AC .dbline 132
00AC ; TCNT1=toneconst;
00AC 1F01 movw R2,R30
00AE 30928500 sts 132+1,R3
00B2 20928400 sts 132,R2
00B6 .dbline 133
00B6 ; }
00B6 L14:
00B6 .dbline 134
00B6 A62E mov R10,R22
00B8 .dbline 135
00B8 8A2D mov R24,R10
00BA 8295 swap R24
00BC 8F70 andi R24,#0x0F
00BE .dbline 136
00BE 8F70 andi R24,15
00C0 A82E mov R10,R24
00C2 .dbline 137
00C2 81E8 ldi R24,129
00C4 8A9D mul R24,R10
00C6 8001 movw R16,R0
00C8 A3DF rcall _delay_ms
00CA .dbline 138
00CA 80916F00 lds R24,111
00CE 8E7F andi R24,254
00D0 80936F00 sts 111,R24
00D4 .dbline 139
00D4 4F5F subi R20,255 ; offset = 1
00D6 5F4F sbci R21,255
00D8 .dbline 140
00D8 80E0 ldi R24,<_sound
00DA 90E0 ldi R25,>_sound
00DC FA01 movw R30,R20
00DE E80F add R30,R24
00E0 F91F adc R31,R25
00E2 6491 lpm R22,Z
00E4 .dbline 141
00E4 L12:
00E4 .dbline 123
00E4 6623 tst R22
00E6 09F0 breq X1
00E8 C7CF rjmp L11
00EA X1:
00EA .dbline 142
00EA ; temp=temp1;
00EA ; temp>>=4;
00EA ; temp&=0x0f;
00EA ; delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
00EA ; TIMSK1&=~(1<<TOIE1);
00EA ; sound_add++;
00EA ; temp1 = sound[sound_add];
00EA ; }
00EA ; delay_ms(1000);
00EA 08EE ldi R16,1000
00EC 13E0 ldi R17,3
00EE 90DF rcall _delay_ms
00F0 .dbline -2
00F0 L10:
00F0 00D0 rcall pop_gset3
00F2 .dbline 0 ; func end
00F2 0895 ret
00F4 .dbsym r sound_add 20 i
00F4 .dbsym r temp1 22 c
00F4 .dbsym r temp 10 c
00F4 .dbend
00F4 .dbfunc e main _main fV
.even
00F4 _main::
00F4 .dbline -1
00F4 .dbline 146
00F4 ; }
00F4 ; /* 主程序 */
00F4 ; void main(void)
00F4 ; {
00F4 .dbline 147
00F4 ; DDRD=0xFB;
00F4 8BEF ldi R24,251
00F6 8AB9 out 0xa,R24
00F8 .dbline 148
00F8 ; PORTD=0xff;
00F8 8FEF ldi R24,255
00FA 8BB9 out 0xb,R24
00FC .dbline 151
00FC ; // DDRC=0x01;
00FC ; //PORTC=0xff;
00FC ; SEI();
00FC 7894 sei
00FE L17:
00FE .dbline 153
00FE L18:
00FE .dbline 153
00FE ;
00FE ; while(PIND & 0x04);//等待PD2按键按下
00FE 4A99 sbic 0x9,2
0100 FECF rjmp L17
0102 01C0 rjmp L21
0104 L20:
0104 .dbline 156
0104 .dbline 157
0104 A9DF rcall _music
0106 .dbline 158
0106 L21:
0106 .dbline 155
0106 FECF rjmp L20
0108 X2:
0108 .dbline -2
0108 L16:
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\xij\demo\demo_diy02-8a\1\C语言\02-8A-8\8.c
0000 _toneconst::
0000 .blkb 2
0002 .dbsym e toneconst _toneconst i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -