📄 vs1011b.lis
字号:
009E 8ABB out 0x1a,R24
00A0 .dbline 90
00A0 ; DDRA &=~BIT(VS1011B_DREQ); //DREQ为输入
00A0 D298 cbi 0x1a,2
00A2 .dbline 91
00A2 ; PORTA|= BIT(VS1011B_DREQ); //DREQ=1
00A2 DA9A sbi 0x1b,2
00A4 .dbline 93
00A4 ;
00A4 ; VS1011B_XCS_H();
00A4 D99A sbi 0x1b,1
00A6 .dbline 94
00A6 ; VS1011B_XDCS_H();
00A6 D89A sbi 0x1b,0
00A8 .dbline 95
00A8 ; VS1011B_XRESET_L();
00A8 DE98 cbi 0x1b,6
00AA .dbline 96
00AA ; Delay(2);
00AA 02E0 ldi R16,2
00AC 10E0 ldi R17,0
00AE 0E940000 xcall _Delay
00B2 .dbline 97
00B2 ; VS1011B_XRESET_H();//使能芯片 //chip select
00B2 DE9A sbi 0x1b,6
00B4 .dbline 98
00B4 ; VS1011B_SPI_Low();//先以低频操作 //low speed
00B4 A5DF xcall _VS1011B_SPI_Low
00B6 .dbline 99
00B6 ; Delay(2);
00B6 02E0 ldi R16,2
00B8 10E0 ldi R17,0
00BA 0E940000 xcall _Delay
00BE .dbline 100
00BE ; Delay(2);
00BE 02E0 ldi R16,2
00C0 10E0 ldi R17,0
00C2 0E940000 xcall _Delay
00C6 .dbline 101
00C6 ; retry=0;
00C6 4427 clr R20
00C8 .dbline 103
00C8 ;
00C8 ; VS1011B_ReadCMD(0x03);
00C8 03E0 ldi R16,3
00CA BFDF xcall _VS1011B_ReadCMD
00CC 0CC0 xjmp L16
00CE L15:
00CE .dbline 105
00CE ; while(VS1011B_ReadCMD(0x03)!=CLOCK_REG)//写时钟寄存器 //set PLL register
00CE ; {
00CE .dbline 106
00CE ; VS1011B_WriteCMD(0x03,CLOCK_REG);
00CE 20E0 ldi R18,12288
00D0 30E3 ldi R19,48
00D2 03E0 ldi R16,3
00D4 A7DF xcall _VS1011B_WriteCMD
00D6 .dbline 107
00D6 ; if(retry++ >10 )return 1;
00D6 242E mov R2,R20
00D8 3324 clr R3
00DA 4F5F subi R20,255 ; addi 1
00DC 8AE0 ldi R24,10
00DE 8215 cp R24,R2
00E0 10F4 brsh L18
00E2 X2:
00E2 .dbline 107
00E2 01E0 ldi R16,1
00E4 65C0 xjmp L14
00E6 L18:
00E6 .dbline 108
00E6 ; }
00E6 L16:
00E6 .dbline 104
00E6 03E0 ldi R16,3
00E8 B0DF xcall _VS1011B_ReadCMD
00EA 0030 cpi R16,0
00EC E0E3 ldi R30,48
00EE 1E07 cpc R17,R30
00F0 71F7 brne L15
00F2 X3:
00F2 .dbline 110
00F2 ;
00F2 ; Delay(2);
00F2 02E0 ldi R16,2
00F4 10E0 ldi R17,0
00F6 0E940000 xcall _Delay
00FA .dbline 112
00FA ;
00FA ; VS1011B_WriteCMD(0x05,0xBB81);//0xBB81 AC45);
00FA 21E8 ldi R18,48001
00FC 3BEB ldi R19,187
00FE 05E0 ldi R16,5
0100 91DF xcall _VS1011B_WriteCMD
0102 .dbline 114
0102 ;
0102 ; retry=0;
0102 4427 clr R20
0104 .dbline 115
0104 ; Tmp=CurVol*256+CurVol;
0104 A0900000 lds R10,_CurVol
0108 2A2D mov R18,R10
010A 3327 clr R19
010C 00E0 ldi R16,256
010E 11E0 ldi R17,1
0110 0E940000 xcall empy16s
0114 1801 movw R2,R16
0116 4A2C mov R4,R10
0118 5524 clr R5
011A 240C add R2,R4
011C 351C adc R3,R5
011E 5101 movw R10,R2
0120 0BC0 xjmp L21
0122 L20:
0122 .dbline 117
0122 ; while(VS1011B_ReadCMD(0x0b) != Tmp)//设音量 //set Volume
0122 ; {
0122 .dbline 118
0122 ; VS1011B_WriteCMD(0x0b,Tmp);
0122 9501 movw R18,R10
0124 0BE0 ldi R16,11
0126 7EDF xcall _VS1011B_WriteCMD
0128 .dbline 119
0128 ; if(retry++ >10 )return 2;
0128 642F mov R22,R20
012A 7727 clr R23
012C 4F5F subi R20,255 ; addi 1
012E 8AE0 ldi R24,10
0130 8617 cp R24,R22
0132 10F4 brsh L23
0134 X4:
0134 .dbline 119
0134 02E0 ldi R16,2
0136 3CC0 xjmp L14
0138 L23:
0138 .dbline 120
0138 ; }
0138 L21:
0138 .dbline 116
0138 0BE0 ldi R16,11
013A 87DF xcall _VS1011B_ReadCMD
013C 6801 movw R12,R16
013E 0A15 cp R16,R10
0140 1B05 cpc R17,R11
0142 79F7 brne L20
0144 X5:
0144 .dbline 122
0144 ;
0144 ; retry=0;
0144 4427 clr R20
0146 .dbline 123
0146 ; Tmp=CurBass;
0146 A0900000 lds R10,_CurBass
014A BB24 clr R11
014C 0BC0 xjmp L26
014E L25:
014E .dbline 125
014E ; while(VS1011B_ReadCMD(0x02)!=Tmp)//写低音寄存器
014E ; {
014E .dbline 126
014E ; VS1011B_WriteCMD(0x02,Tmp);
014E 9501 movw R18,R10
0150 02E0 ldi R16,2
0152 68DF xcall _VS1011B_WriteCMD
0154 .dbline 127
0154 ; if(retry++ >10 )return 1;
0154 642F mov R22,R20
0156 7727 clr R23
0158 4F5F subi R20,255 ; addi 1
015A 8AE0 ldi R24,10
015C 8617 cp R24,R22
015E 10F4 brsh L28
0160 X6:
0160 .dbline 127
0160 01E0 ldi R16,1
0162 26C0 xjmp L14
0164 L28:
0164 .dbline 128
0164 ; }
0164 L26:
0164 .dbline 124
0164 02E0 ldi R16,2
0166 71DF xcall _VS1011B_ReadCMD
0168 6801 movw R12,R16
016A 0A15 cp R16,R10
016C 1B05 cpc R17,R11
016E 79F7 brne L25
0170 X7:
0170 .dbline 129
0170 ; Delay(2);
0170 02E0 ldi R16,2
0172 10E0 ldi R17,0
0174 0E940000 xcall _Delay
0178 .dbline 131
0178 ;
0178 ; retry=0;
0178 4427 clr R20
017A 0CC0 xjmp L31
017C L30:
017C .dbline 133
017C ; while(VS1011B_ReadCMD(0x00) != 0x0800)//0x0800)//写mode寄存器 //set mode register
017C ; {
017C .dbline 134
017C ; VS1011B_WriteCMD(0x00,0x0800);//0x0800);
017C 20E0 ldi R18,2048
017E 38E0 ldi R19,8
0180 0027 clr R16
0182 50DF xcall _VS1011B_WriteCMD
0184 .dbline 135
0184 ; if(retry++ >10 )return 3;//
0184 642F mov R22,R20
0186 7727 clr R23
0188 4F5F subi R20,255 ; addi 1
018A 8AE0 ldi R24,10
018C 8617 cp R24,R22
018E 10F4 brsh L33
0190 X8:
0190 .dbline 135
0190 03E0 ldi R16,3
0192 0EC0 xjmp L14
0194 L33:
0194 .dbline 136
0194 ; }
0194 L31:
0194 .dbline 132
0194 0027 clr R16
0196 59DF xcall _VS1011B_ReadCMD
0198 B801 movw R22,R16
019A 0030 cpi R16,0
019C E8E0 ldi R30,8
019E 1E07 cpc R17,R30
01A0 69F7 brne L30
01A2 X9:
01A2 .dbline 138
01A2 ;
01A2 ; Delay(2);
01A2 02E0 ldi R16,2
01A4 10E0 ldi R17,0
01A6 0E940000 xcall _Delay
01AA .dbline 140
01AA ;
01AA ; VS1011B_SoftReset();
01AA 04D0 xcall _VS1011B_SoftReset
01AC .dbline 141
01AC ; VS1011B_SPI_High();
01AC 2DDF xcall _VS1011B_SPI_High
01AE .dbline 142
01AE ; return 0;
01AE 0027 clr R16
01B0 .dbline -2
01B0 L14:
01B0 .dbline 0 ; func end
01B0 0C940000 xjmp pop_xgsetF03C
01B4 .dbsym r Tmp 10 i
01B4 .dbsym r retry 20 c
01B4 .dbend
01B4 .dbfunc e VS1011B_SoftReset _VS1011B_SoftReset fV
.even
01B4 _VS1011B_SoftReset::
01B4 .dbline -1
01B4 .dbline 147
01B4 ; }
01B4 ;
01B4 ; //VS1003软件复位 //VS1003 soft reset
01B4 ; void VS1011B_SoftReset(void)
01B4 ; {
01B4 .dbline 148
01B4 ; VS1011B_WriteCMD(0x00,0x0804);//写复位 //reset
01B4 24E0 ldi R18,2052
01B6 38E0 ldi R19,8
01B8 0027 clr R16
01BA 34DF xcall _VS1011B_WriteCMD
01BC .dbline 149
01BC ; Delay(2);//延时,至少1.35ms //wait at least 1.35ms
01BC 02E0 ldi R16,2
01BE 10E0 ldi R17,0
01C0 0E940000 xcall _Delay
01C4 .dbline 150
01C4 ; DDRA &=~BIT(VS1011B_DREQ); //DREQ为输入
01C4 D298 cbi 0x1a,2
01C6 .dbline 151
01C6 ; PORTA|= BIT(VS1011B_DREQ); //DREQ=1
01C6 DA9A sbi 0x1b,2
01C8 .dbline -2
01C8 L35:
01C8 .dbline 0 ; func end
01C8 0895 ret
01CA .dbend
01CA ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -