📄 main.lis
字号:
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 + -