⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lis

📁 采用Mega16+VS1011B+SD卡制作的Mp3
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0262 371C              adc R3,R7
 0264 481C              adc R4,R8
 0266 591C              adc R5,R9
 0268 8101              movw R16,R2
 026A 9201              movw R18,R4
 026C 0E940000          xcall _MMC_SD_ReadSingleBlock
 0270                   .dbline 142
 0270           ;       //flgover = fat_read_file(FONT_ClusterVar,buffp,Blk,&Dir_Attrib);                                               
 0270           ;       //返回汉字字型信息指针:
 0270           ;       return (buffp+InOffset);
 0270 8601              movw R16,R12
 0272 0A0D              add R16,R10
 0274 1B1D              adc R17,R11
 0276                   .dbline -2
 0276           L12:
 0276                   .dbline 0 ; func end
 0276 2E96              adiw R28,14
 0278 0C940000          xjmp pop_xgsetF0FC
 027C                   .dbsym l flgover 3 c
 027C                   .dbsym l FntStartBlk 10 l
 027C                   .dbsym r Dir_Attrib 14 c
 027C                   .dbsym r HzNmL 12 c
 027C                   .dbsym r HzNmH 14 c
 027C                   .dbsym l Blk 6 l
 027C                   .dbsym r InOffset 12 i
 027C                   .dbsym l Hzpt 2 l
 027C                   .dbsym r HzChr 12 pc
 027C                   .dbsym r buffp 10 pc
 027C                   .dbend
 027C                   .dbfunc e PrintHZ16 _PrintHZ16 fV
 027C           ;           HzPt -> R12,R13
 027C           ;              x -> R10
 027C           ;              y -> R20
 027C           ;              i -> R22
 027C           ;           Lens -> y+21
 027C           ;             y0 -> y+19
 027C           ;             x0 -> y+17
 027C           ;          buffp -> R14,R15
 027C           ;             Hz -> y+13
                        .even
 027C           _PrintHZ16::
 027C 0E940000          xcall push_arg4
 0280 0E940000          xcall push_xgsetF0FC
 0284 7901              movw R14,R18
 0286 2397              sbiw R28,3
 0288                   .dbline -1
 0288                   .dbline 149
 0288           ; }
 0288           ; 
 0288           ; //在指定位置,打印指定长度的16*16汉字字符串
 0288           ; //Hz:汉字字符串指针(常指针),buffp:用于存放汉字字型信息的Buf,
 0288           ; //(x0,y0):字符串在LCD上的起始位置,Lens:字符串长度
 0288           ; void PrintHZ16(unsigned char *Hz,unsigned char *buffp,unsigned char x0,unsigned char y0,unsigned char Lens)
 0288           ; {
 0288                   .dbline 152
 0288           ;       unsigned char i,*HzPt;
 0288           ;       unsigned char x,y;
 0288           ;       x=x0;y=y0;
 0288 A988              ldd R10,y+17
 028A                   .dbline 152
 028A 4B89              ldd R20,y+19
 028C                   .dbline 153
 028C           ;       for(i=0;i<Lens;i+=2)
 028C 6627              clr R22
 028E 43C0              xjmp L17
 0290           L14:
 0290                   .dbline 154
 0290           ;       {
 0290                   .dbline 158
 0290           ;               //测试使用,显示内码:
 0290           ;               //DisplayLong(Hz[i]*65536+Hz[i+1],3);
 0290           ;           //Delay(500);
 0290           ;           if(Hz[i]>127 && Hz[i+1]>127)                  //均是汉字
 0290 262E              mov R2,R22
 0292 3324              clr R3
 0294 0D84              ldd R0,y+13
 0296 1E84              ldd R1,y+14
 0298 200C              add R2,R0
 029A 311C              adc R3,R1
 029C 2101              movw R4,R2
 029E 8FE7              ldi R24,127
 02A0 F101              movw R30,R2
 02A2 2080              ldd R2,z+0
 02A4 8215              cp R24,R2
 02A6 90F4              brsh L18
 02A8           X4:
 02A8 2180              ldd R2,z+1
 02AA 8215              cp R24,R2
 02AC 78F4              brsh L18
 02AE           X5:
 02AE                   .dbline 159
 02AE           ;               {
 02AE                   .dbline 160
 02AE           ;                       HzPt=MMCFntHZ(buffp,Hz+i);
 02AE 262F              mov R18,R22
 02B0 3327              clr R19
 02B2 200D              add R18,R0
 02B4 311D              adc R19,R1
 02B6 8701              movw R16,R14
 02B8 47DF              xcall _MMCFntHZ
 02BA 6801              movw R12,R16
 02BC                   .dbline 161
 02BC           ;                       PrintOneHZ(x,y,HzPt);
 02BC D982              std y+1,R13
 02BE C882              std y+0,R12
 02C0 242F              mov R18,R20
 02C2 0A2D              mov R16,R10
 02C4 0E940000          xcall _PrintOneHZ
 02C8                   .dbline 162
 02C8           ;                       y+=16;
 02C8 405F              subi R20,240    ; addi 16
 02CA                   .dbline 163
 02CA           ;               }else if(Hz[i]<128 && Hz[i+1]<128)        //有英文字符在里面
 02CA 1AC0              xjmp L19
 02CC           L18:
 02CC                   .dbline 163
 02CC C62E              mov R12,R22
 02CE DD24              clr R13
 02D0 0D84              ldd R0,y+13
 02D2 1E84              ldd R1,y+14
 02D4 C00C              add R12,R0
 02D6 D11C              adc R13,R1
 02D8 F601              movw R30,R12
 02DA 8081              ldd R24,z+0
 02DC 8038              cpi R24,128
 02DE 80F4              brsh L20
 02E0           X6:
 02E0 8181              ldd R24,z+1
 02E2 8038              cpi R24,128
 02E4 68F4              brsh L20
 02E6           X7:
 02E6                   .dbline 164
 02E6           ;               {
 02E6                   .dbline 165
 02E6           ;                   PrintAscStr(x,y,Hz+i,2);
 02E6 82E0              ldi R24,2
 02E8 8A83              std y+2,R24
 02EA 262E              mov R2,R22
 02EC 3324              clr R3
 02EE 200C              add R2,R0
 02F0 311C              adc R3,R1
 02F2 3982              std y+1,R3
 02F4 2882              std y+0,R2
 02F6 242F              mov R18,R20
 02F8 0A2D              mov R16,R10
 02FA 0E940000          xcall _PrintAscStr
 02FE                   .dbline 166
 02FE           ;                       y+=16;
 02FE 405F              subi R20,240    ; addi 16
 0300                   .dbline 167
 0300           ;               }
 0300           L20:
 0300           L19:
 0300                   .dbline 168
 0300           ;               if(y>=128) {y=0;x+=2;}
 0300 4038              cpi R20,128
 0302 20F0              brlo L22
 0304           X8:
 0304                   .dbline 168
 0304                   .dbline 168
 0304 4427              clr R20
 0306                   .dbline 168
 0306 8A2D              mov R24,R10
 0308 8E5F              subi R24,254    ; addi 2
 030A A82E              mov R10,R24
 030C                   .dbline 168
 030C           L22:
 030C                   .dbline 169
 030C           ;               if(x>7){x=0;}
 030C 87E0              ldi R24,7
 030E 8A15              cp R24,R10
 0310 08F4              brsh L24
 0312           X9:
 0312                   .dbline 169
 0312                   .dbline 169
 0312 AA24              clr R10
 0314                   .dbline 169
 0314           L24:
 0314                   .dbline 170
 0314           ;       }
 0314           L15:
 0314                   .dbline 153
 0314 6E5F              subi R22,254    ; addi 2
 0316           L17:
 0316                   .dbline 153
 0316 0D88              ldd R0,y+21
 0318 6015              cp R22,R0
 031A 08F4              brsh X11
 031C B9CF              xjmp L14
 031E           X11:
 031E           X10:
 031E                   .dbline -2
 031E           L13:
 031E                   .dbline 0 ; func end
 031E 2396              adiw R28,3
 0320 0E940000          xcall pop_xgsetF0FC
 0324 2496              adiw R28,4
 0326 0895              ret
 0328                   .dbsym r HzPt 12 pc
 0328                   .dbsym r x 10 c
 0328                   .dbsym r y 20 c
 0328                   .dbsym r i 22 c
 0328                   .dbsym l Lens 21 c
 0328                   .dbsym l y0 19 c
 0328                   .dbsym l x0 17 c
 0328                   .dbsym r buffp 14 pc
 0328                   .dbsym l Hz 13 pc
 0328                   .dbend
 0328                   .dbfunc e ChangeVS1011Vol _ChangeVS1011Vol fV
 0328           ;          retry -> R20
 0328           ;            Tmp -> R10,R11
 0328           ;            Vol -> R10,R11
                        .even
 0328           _ChangeVS1011Vol::
 0328 0E940000          xcall push_xgsetF03C
 032C 5801              movw R10,R16
 032E 2397              sbiw R28,3
 0330                   .dbline -1
 0330                   .dbline 174
 0330           ; }
 0330           ; 
 0330           ; void ChangeVS1011Vol(uchar *Vol)         //调整播放音量
 0330           ; {
 0330                   .dbline 177
 0330           ;   unsigned char retry;
 0330           ;   unsigned int Tmp;
 0330           ;   PrintConstAscStr(0,0,ScreenStr12[11],16);
 0330 80E1              ldi R24,16
 0332 8A83              std y+2,R24
 0334 80E0              ldi R24,<_ScreenStr12+176
 0336 90E0              ldi R25,>_ScreenStr12+176
 0338 9983              std y+1,R25
 033A 8883              std y+0,R24
 033C 2227              clr R18
 033E 0027              clr R16
 0340 0E940000          xcall _PrintConstAscStr
 0344                   .dbline 178
 0344           ;   PrintConstAscStr(2,0,ScreenStr12[12],16);
 0344 80E1              ldi R24,16
 0346 8A83              std y+2,R24
 0348 80E0              ldi R24,<_ScreenStr12+192
 034A 90E0              ldi R25,>_ScreenStr12+192
 034C 9983              std y+1,R25
 034E 8883              std y+0,R24
 0350 2227              clr R18
 0352 02E0              ldi R16,2
 0354 0E940000          xcall _PrintConstAscStr
 0358                   .dbline 179
 0358           ;   PrintConstAscStr(3,0,ScreenStr12[13],16);
 0358 80E1              ldi R24,16
 035A 8A83              std y+2,R24
 035C 80E0              ldi R24,<_ScreenStr12+208
 035E 90E0              ldi R25,>_ScreenStr12+208
 0360 9983              std y+1,R25
 0362 8883              std y+0,R24
 0364 2227              clr R18
 0366 03E0              ldi R16,3
 0368 0E940000          xcall _PrintConstAscStr
 036C                   .dbline 180
 036C           ;   PrintConstAscStr(6,0,ScreenStr12[14],16);
 036C 80E1              ldi R24,16
 036E 8A83              std y+2,R24
 0370 80E0              ldi R24,<_ScreenStr12+224
 0372 90E0              ldi R25,>_ScreenStr12+224
 0374 9983              std y+1,R25
 0376 8883              std y+0,R24
 0378 2227              clr R18
 037A 06E0              ldi R16,6
 037C 0E940000          xcall _PrintConstAscStr
 0380                   .dbline 181
 0380           ;   KeyIni();KeyInput();
 0380 88B3              in R24,0x18
 0382 8F60              ori R24,15
 0384 88BB              out 0x18,R24
 0386                   .dbline 181
 0386 87B3              in R24,0x17
 0388 807F              andi R24,240
 038A 87BB              out 0x17,R24
 038C 84C0              xjmp L32
 038E           L31:
 038E                   .dbline 183
 038E           ;   while(1)
 038E           ;   {
 038E                   .dbline 184
 038E           ;   if(KeySt02==0)        //Volume++,减小音量
 038E 86B3              in R24,0x16
 0390 8270              andi R24,2
 0392 86BB              out 0x16,R24
 0394 8823              tst R24
 0396 C1F4              brne L34
 0398           X12:
 0398                   .dbline 185
 0398           ;   {
 0398                   .dbline 187
 0398           ;       //等待该键释放
 0398           ;       Delay(200);
 0398 08EC              ldi R16,200
 039A 10E0              ldi R17,0
 039C 0E940000          xcall _Delay
 03A0 04C0              xjmp L37
 03A2           L36:
 03A2                   .dbline 188
 03A2           ;       while(KeySt02==0) Delay(200);     
 03A2 08EC              ldi R16,200
 03A4 10E0              ldi R17,0
 03A6 0E940000          xcall _Delay
 03AA           L37:
 03AA                   .dbline 188
 03AA 86B3              in R24,0x16
 03AC 8270              andi R24,2
 03AE 86BB              out 0x16,R24
 03B0 8823              tst R24
 03B2 B9F3              breq L36
 03B4           X13:
 03B4                   .dbline 189
 03B4           ;       (*Vol)++;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -