📄 diy0816_11.lis
字号:
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 vector(rom, abs)
.org 32
0020 0C941700 jmp _timer1_ovf_isr
.area text(rom, con, rel)
002E .dbfile D:\SL-DIY~1\diy0208_16_11\diy0816_11.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 111
0038 ; {
0038 ; delay_us(1000);
0038 ; time--;
0038 ; }
0038 ; }
0038 ;
0038 ; unsigned int toneconst;
0038 ; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
0038 ; void timer1_ovf_isr(void)
0038 ; {
0038 .dbline 112
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 113
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 116
005C ; }
005C ; void music(void)
005C ; {
005C .dbline 118
005C ; unsigned char temp,temp1;
005C ; unsigned int sound_add=0;
005C 4427 clr R20
005E 5527 clr R21
0060 .dbline 119
0060 ; TCCR1A = 0x00;
0060 2224 clr R2
0062 2FBC out 0x2f,R2
0064 .dbline 120
0064 ; TCCR1B =(1<<CS11);//8分频
0064 82E0 ldi R24,2
0066 8EBD out 0x2e,R24
0068 .dbline 121
0068 ; temp1 = sound[sound_add];
0068 80E0 ldi R24,<_sound
006A 90E0 ldi R25,>_sound
006C FA01 movw R30,R20
006E E80F add R30,R24
0070 F91F adc R31,R25
0072 6491 lpm R22,Z
0074 2FC0 xjmp L12
0076 L11:
0076 .dbline 123
0076 ; while(temp1!=0)
0076 ; {
0076 .dbline 124
0076 ; temp=temp1;
0076 A62E mov R10,R22
0078 .dbline 125
0078 ; temp&=0x0f;
0078 8A2D mov R24,R10
007A 8F70 andi R24,15
007C A82E mov R10,R24
007E .dbline 126
007E ; if(temp!=0)
007E 8823 tst R24
0080 A1F0 breq L14
0082 .dbline 127
0082 ; {
0082 .dbline 128
0082 ; TIMSK|=(1<<TOIE1);//根据SOUNDTABLE中数据的低四位选择音调频率
0082 89B7 in R24,0x39
0084 8460 ori R24,4
0086 89BF out 0x39,R24
0088 .dbline 129
0088 ; temp--;
0088 AA94 dec R10
008A .dbline 130
008A ; toneconst=TONETABLE[temp];
008A 82E0 ldi R24,2
008C 8A9D mul R24,R10
008E F001 movw R30,R0
0090 80E0 ldi R24,<_TONETABLE
0092 90E0 ldi R25,>_TONETABLE
0094 E80F add R30,R24
0096 F91F adc R31,R25
0098 0590 lpm R0,Z+
009A 1490 lpm R1,Z
009C F001 movw R30,R0
009E F0930100 sts _toneconst+1,R31
00A2 E0930000 sts _toneconst,R30
00A6 .dbline 131
00A6 ; TCNT1=toneconst;
00A6 FDBD out 0x2d,R31
00A8 ECBD out 0x2c,R30
00AA .dbline 132
00AA ; }
00AA L14:
00AA .dbline 133
00AA A62E mov R10,R22
00AC .dbline 134
00AC 8A2D mov R24,R10
00AE 8295 swap R24
00B0 8F70 andi R24,#0x0F
00B2 .dbline 135
00B2 8F70 andi R24,15
00B4 A82E mov R10,R24
00B6 .dbline 136
00B6 81E8 ldi R24,129
00B8 8A9D mul R24,R10
00BA 8001 movw R16,R0
00BC A9DF xcall _delay_ms
00BE .dbline 137
00BE 89B7 in R24,0x39
00C0 8B7F andi R24,251
00C2 89BF out 0x39,R24
00C4 .dbline 138
00C4 4F5F subi R20,255 ; offset = 1
00C6 5F4F sbci R21,255
00C8 .dbline 139
00C8 80E0 ldi R24,<_sound
00CA 90E0 ldi R25,>_sound
00CC FA01 movw R30,R20
00CE E80F add R30,R24
00D0 F91F adc R31,R25
00D2 6491 lpm R22,Z
00D4 .dbline 140
00D4 L12:
00D4 .dbline 122
00D4 6623 tst R22
00D6 79F6 brne L11
00D8 .dbline 141
00D8 ; temp=temp1;
00D8 ; temp>>=4;
00D8 ; temp&=0x0f;
00D8 ; delay_ms(temp*129);//根据SOUNDTABLE中数据的高四位*5后,为音调持续时间
00D8 ; TIMSK&=~(1<<TOIE1);
00D8 ; sound_add++;
00D8 ; temp1 = sound[sound_add];
00D8 ; }
00D8 ; delay_ms(1000);
00D8 08EE ldi R16,1000
00DA 13E0 ldi R17,3
00DC 99DF xcall _delay_ms
00DE .dbline -2
00DE L10:
00DE 0E940000 xcall pop_gset3
00E2 .dbline 0 ; func end
00E2 0895 ret
00E4 .dbsym r sound_add 20 i
00E4 .dbsym r temp1 22 c
00E4 .dbsym r temp 10 c
00E4 .dbend
00E4 .dbfunc e main _main fV
.even
00E4 _main::
00E4 .dbline -1
00E4 .dbline 145
00E4 ; }
00E4 ; /* 主程序 */
00E4 ; void main(void)
00E4 ; {
00E4 .dbline 146
00E4 ; DDRB=0x00;
00E4 2224 clr R2
00E6 27BA out 0x17,R2
00E8 .dbline 147
00E8 ; PORTB=0xff;
00E8 8FEF ldi R24,255
00EA 88BB out 0x18,R24
00EC .dbline 148
00EC ; DDRC=0x01;
00EC 81E0 ldi R24,1
00EE 84BB out 0x14,R24
00F0 .dbline 149
00F0 ; PORTC=0xff;
00F0 8FEF ldi R24,255
00F2 85BB out 0x15,R24
00F4 .dbline 150
00F4 ; SEI();
00F4 7894 sei
00F6 L17:
00F6 .dbline 152
00F6 L18:
00F6 .dbline 152
00F6 ;
00F6 ; while(PINB & 0x04);//等待声控(PB2)启动
00F6 B299 sbic 0x16,2
00F8 FECF rjmp L17
00FA 01C0 xjmp L21
00FC L20:
00FC .dbline 155
00FC .dbline 156
00FC ADDF xcall _music
00FE .dbline 157
00FE L21:
00FE .dbline 154
00FE FECF xjmp L20
0100 X1:
0100 .dbline -2
0100 L16:
0100 .dbline 0 ; func end
0100 0895 ret
0102 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\SL-DIY~1\diy0208_16_11\diy0816_11.c
0000 _toneconst::
0000 .blkb 2
0002 .dbsym e toneconst _toneconst i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -