📄 vs1001.lis
字号:
021E 00E0 ldi R16,256
0220 11E0 ldi R17,1
0222 9A01 movw R18,R20
0224 0E940000 xcall empy16s
0228 1801 movw R2,R16
022A 240E add R2,R20
022C 351E adc R3,R21
022E 4A80 ldd R4,y+2
0230 5B80 ldd R5,y+3
0232 4214 cp R4,R2
0234 5304 cpc R5,R3
0236 11F0 breq L38
0238 .dbline 129
0238 0027 clr R16
023A 07C0 xjmp L33
023C L38:
023C .dbline 130
023C L35:
023C .dbline 123
023C 4F5F subi R20,255 ; offset = 1
023E 5F4F sbci R21,255
0240 L37:
0240 .dbline 123
0240 4431 cpi R20,20
0242 E0E0 ldi R30,0
0244 5E07 cpc R21,R30
0246 68F2 brlo L34
0248 .dbline 131
0248 ; }
0248 ; return 1;
0248 01E0 ldi R16,1
024A .dbline -2
024A L33:
024A AA96 adiw R28,42
024C 0E940000 xcall pop_gset1
0250 .dbline 0 ; func end
0250 0895 ret
0252 .dbsym l buf 2 A[40:20]i
0252 .dbsym r j 20 i
0252 .dbend
0252 .dbfunc e Sine_On _Sine_On fV
0252 ; i -> <dead>
0252 ; buf -> y+0
0252 ; Freq -> R20
.even
0252 _Sine_On::
0252 0E940000 xcall push_gset1
0256 402F mov R20,R16
0258 2497 sbiw R28,4
025A .dbline -1
025A .dbline 138
025A ; }
025A ;
025A ; //*************************************
025A ; // void Sine_On(unsigned char Freq)
025A ; //*************************************
025A ; void Sine_On(unsigned char Freq)
025A ; {
025A .dbline 141
025A ; unsigned char i,buf[4];
025A ;
025A ; buf[0] = 0x53;
025A 83E5 ldi R24,83
025C 8883 std y+0,R24
025E .dbline 142
025E ; buf[1] = 0xef;
025E 8FEE ldi R24,239
0260 8983 std y+1,R24
0262 .dbline 143
0262 ; buf[2] = 0x6e;
0262 8EE6 ldi R24,110
0264 8A83 std y+2,R24
0266 .dbline 144
0266 ; buf[3] = Freq;
0266 4B83 std y+3,R20
0268 .dbline 145
0268 ; VS1001_Stream(&buf[0],4);
0268 24E0 ldi R18,4
026A 8E01 movw R16,R28
026C 27DF xcall _VS1001_Stream
026E .dbline 147
026E ;
026E ; buf[0] = 0x00;
026E 2224 clr R2
0270 2882 std y+0,R2
0272 .dbline 148
0272 ; buf[1] = 0x00;
0272 2982 std y+1,R2
0274 .dbline 149
0274 ; buf[2] = 0x00;
0274 2A82 std y+2,R2
0276 .dbline 150
0276 ; buf[3] = 0x00;
0276 2B82 std y+3,R2
0278 .dbline 151
0278 ; VS1001_Stream(&buf[0],4);
0278 24E0 ldi R18,4
027A 8E01 movw R16,R28
027C 1FDF xcall _VS1001_Stream
027E .dbline -2
027E L40:
027E 2496 adiw R28,4
0280 0E940000 xcall pop_gset1
0284 .dbline 0 ; func end
0284 0895 ret
0286 .dbsym l i 1 c
0286 .dbsym l buf 0 A[4:4]c
0286 .dbsym r Freq 20 c
0286 .dbend
0286 .dbfunc e Sine_Off _Sine_Off fV
0286 ; i -> <dead>
0286 ; buf -> y+0
.even
0286 _Sine_Off::
0286 2497 sbiw R28,4
0288 .dbline -1
0288 .dbline 158
0288 ; }
0288 ;
0288 ; //*************************************
0288 ; // void Sine_Off(void)
0288 ; //*************************************
0288 ; void Sine_Off(void)
0288 ; {
0288 .dbline 161
0288 ; unsigned char i,buf[4];
0288 ;
0288 ; buf[0] = 0x45;
0288 85E4 ldi R24,69
028A 8883 std y+0,R24
028C .dbline 162
028C ; buf[1] = 0x78;
028C 88E7 ldi R24,120
028E 8983 std y+1,R24
0290 .dbline 163
0290 ; buf[2] = 0x69;
0290 89E6 ldi R24,105
0292 8A83 std y+2,R24
0294 .dbline 164
0294 ; buf[3] = 0x74;
0294 84E7 ldi R24,116
0296 8B83 std y+3,R24
0298 .dbline 165
0298 ; VS1001_Stream(&buf[0],4);
0298 24E0 ldi R18,4
029A 8E01 movw R16,R28
029C 0FDF xcall _VS1001_Stream
029E .dbline 167
029E ;
029E ; buf[0] = 0x00;
029E 2224 clr R2
02A0 2882 std y+0,R2
02A2 .dbline 168
02A2 ; buf[1] = 0x00;
02A2 2982 std y+1,R2
02A4 .dbline 169
02A4 ; buf[2] = 0x00;
02A4 2A82 std y+2,R2
02A6 .dbline 170
02A6 ; buf[3] = 0x00;
02A6 2B82 std y+3,R2
02A8 .dbline 171
02A8 ; VS1001_Stream(&buf[0],4);
02A8 24E0 ldi R18,4
02AA 8E01 movw R16,R28
02AC 07DF xcall _VS1001_Stream
02AE .dbline -2
02AE L47:
02AE 2496 adiw R28,4
02B0 .dbline 0 ; func end
02B0 0895 ret
02B2 .dbsym l i 1 c
02B2 .dbsym l buf 0 A[4:4]c
02B2 .dbend
02B2 .dbfunc e Sine_Sweep _Sine_Sweep fV
02B2 ; i -> R20
.even
02B2 _Sine_Sweep::
02B2 0E940000 xcall push_gset1
02B6 .dbline -1
02B6 .dbline 178
02B6 ; }
02B6 ;
02B6 ; //*************************************
02B6 ; // void Sine_Sweep(void)
02B6 ; //*************************************
02B6 ; void Sine_Sweep(void)
02B6 ; {
02B6 .dbline 181
02B6 ; unsigned char i;
02B6 ;
02B6 ; for (i=48;i<119;i++)
02B6 40E3 ldi R20,48
02B8 08C0 xjmp L58
02BA L55:
02BA .dbline 182
02BA .dbline 183
02BA E5DF xcall _Sine_Off
02BC .dbline 184
02BC 042F mov R16,R20
02BE C9DF xcall _Sine_On
02C0 .dbline 185
02C0 09E1 ldi R16,25
02C2 10E0 ldi R17,0
02C4 0E940000 xcall _delay_ms
02C8 .dbline 186
02C8 L56:
02C8 .dbline 181
02C8 4395 inc R20
02CA L58:
02CA .dbline 181
02CA 4737 cpi R20,119
02CC B0F3 brlo L55
02CE .dbline 187
02CE ; {
02CE ; Sine_Off();
02CE ; Sine_On(i);
02CE ; delay_ms(25);
02CE ; }
02CE ; Sine_Off();
02CE DBDF xcall _Sine_Off
02D0 .dbline -2
02D0 L54:
02D0 0E940000 xcall pop_gset1
02D4 .dbline 0 ; func end
02D4 0895 ret
02D6 .dbsym r i 20 c
02D6 .dbend
02D6 .dbfunc e VS1001_SetVolume _VS1001_SetVolume fV
02D6 ; buf -> y+2
02D6 ; Right -> R20
02D6 ; Left -> R22
.even
02D6 _VS1001_SetVolume::
02D6 0E940000 xcall push_gset2
02DA 422F mov R20,R18
02DC 602F mov R22,R16
02DE 2697 sbiw R28,6
02E0 .dbline -1
02E0 .dbline 194
02E0 ; }
02E0 ;
02E0 ; //*************************************
02E0 ; // void VS1001_SetVolume(unsigned char Left,unsigned char Right)
02E0 ; //*************************************
02E0 ; void VS1001_SetVolume(unsigned char Left,unsigned char Right)
02E0 ; {
02E0 .dbline 197
02E0 ; unsigned int buf[2];
02E0 ;
02E0 ; buf[0] = (((unsigned int)Left) << 8) | ((unsigned int)Right);
02E0 362E mov R3,R22
02E2 242E mov R2,R20
02E4 3B82 std y+3,R3
02E6 2A82 std y+2,R2
02E8 .dbline 198
02E8 ; VS1001_Write(11,1,buf);
02E8 CE01 movw R24,R28
02EA 0296 adiw R24,2
02EC 9983 std y+1,R25
02EE 8883 std y+0,R24
02F0 21E0 ldi R18,1
02F2 30E0 ldi R19,0
02F4 0BE0 ldi R16,11
02F6 BEDE xcall _VS1001_Write
02F8 .dbline -2
02F8 L59:
02F8 2696 adiw R28,6
02FA 0E940000 xcall pop_gset2
02FE .dbline 0 ; func end
02FE 0895 ret
0300 .dbsym l buf 2 A[4:2]i
0300 .dbsym r Right 20 c
0300 .dbsym r Left 22 c
0300 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -