📄 mp3_7210.lst
字号:
02F8 182C SUB R2,R12
02F9 E08E LDI R24,0xE
02FA 9D82 MUL R24,R2
02FB 1540 CP R20,R0
02FC 0551 CPC R21,R1
02FD F3A0 BCS 0x02F2
(0283) }
(0284) for (count=0;count<14;count++)
02FE 2744 CLR R20
02FF 2755 CLR R21
0300 C005 RJMP 0x0306
(0285) {
(0286) LCD_write(0,1);
0301 E021 LDI R18,1
0302 2700 CLR R16
0303 DE9F RCALL _LCD_write
0304 5F4F SUBI R20,0xFF
0305 4F5F SBCI R21,0xFF
0306 304E CPI R20,0xE
0307 E0E0 LDI R30,0
0308 075E CPC R21,R30
0309 F3B8 BCS 0x0301
(0287) }
(0288) LCD_write(LCD_CMD_MADCTL,0);
030A 2722 CLR R18
030B E306 LDI R16,0x36
030C DE96 RCALL _LCD_write
(0289) LCD_write(MADCTL_HORIZ,1);
030D E021 LDI R18,1
030E E408 LDI R16,0x48
030F DE93 RCALL _LCD_write
(0290) set_lcd_cs; //disable lcd
0310 9AC3 SBI 0x18,3
(0291) }
0311 9623 ADIW R28,3
0312 940E05FB CALL pop_gset5
0314 9508 RET
_lcd_ascii:
count --> R20
len --> R22
s --> R10
0315 940E0619 CALL push_gset3
0317 2F62 MOV R22,R18
0318 0158 MOVW R10,R16
0319 9723 SBIW R28,3
(0292) /**********显示一个8x8点ascii***********/
(0293) void lcd_ascii(char *s,unsigned char len)
(0294) {
(0295) unsigned int count;
(0296) lcd_window(lcd_x,lcd_y,lcd_x+len*16-1,lcd_y+15);
031A 91800162 LDS R24,_lcd_y
031C 5F81 SUBI R24,0xF1
031D 838A STD Y+2,R24
031E E180 LDI R24,0x10
031F 9F86 MUL R24,R22
0320 91800163 LDS R24,_lcd_x
0322 0D80 ADD R24,R0
0323 5081 SUBI R24,1
0324 8388 STD Y+0,R24
0325 91200162 LDS R18,_lcd_y
0327 91000163 LDS R16,_lcd_x
0329 DF3A RCALL _lcd_window
(0297) LCD_write(LCD_CMD_RAMWR,0);
032A 2722 CLR R18
032B E20C LDI R16,0x2C
032C DE76 RCALL _LCD_write
(0298) for (count=0;count<len*32;count++)
032D 2744 CLR R20
032E 2755 CLR R21
032F C07A RJMP 0x03AA
(0299) {
(0300) if (s[count]&0x1) LCD_write(lcd_text_color,1); //high 8 bit
0330 01FA MOVW R30,R20
0331 0DEA ADD R30,R10
0332 1DFB ADC R31,R11
0333 8020 LDD R2,Z+0
0334 FE20 SBRS R2,0
0335 C005 RJMP 0x033B
0336 E021 LDI R18,1
0337 91000164 LDS R16,_lcd_text_color
0339 DE69 RCALL _LCD_write
033A C004 RJMP 0x033F
(0301) else LCD_write(lcd_bkg_color,1);
033B E021 LDI R18,1
033C 91000165 LDS R16,_lcd_bkg_color
033E DE64 RCALL _LCD_write
(0302) if (s[count]&0x2) LCD_write(lcd_text_color,1);
033F 01FA MOVW R30,R20
0340 0DEA ADD R30,R10
0341 1DFB ADC R31,R11
0342 8020 LDD R2,Z+0
0343 FE21 SBRS R2,1
0344 C005 RJMP 0x034A
0345 E021 LDI R18,1
0346 91000164 LDS R16,_lcd_text_color
0348 DE5A RCALL _LCD_write
0349 C004 RJMP 0x034E
(0303) else LCD_write(lcd_bkg_color,1);
034A E021 LDI R18,1
034B 91000165 LDS R16,_lcd_bkg_color
034D DE55 RCALL _LCD_write
(0304) if (s[count]&0x4) LCD_write(lcd_text_color,1);
034E 01FA MOVW R30,R20
034F 0DEA ADD R30,R10
0350 1DFB ADC R31,R11
0351 8020 LDD R2,Z+0
0352 FE22 SBRS R2,2
0353 C005 RJMP 0x0359
0354 E021 LDI R18,1
0355 91000164 LDS R16,_lcd_text_color
0357 DE4B RCALL _LCD_write
0358 C004 RJMP 0x035D
(0305) else LCD_write(lcd_bkg_color,1);
0359 E021 LDI R18,1
035A 91000165 LDS R16,_lcd_bkg_color
035C DE46 RCALL _LCD_write
(0306) if (s[count]&0x8) LCD_write(lcd_text_color,1);
035D 01FA MOVW R30,R20
035E 0DEA ADD R30,R10
035F 1DFB ADC R31,R11
0360 8020 LDD R2,Z+0
0361 FE23 SBRS R2,3
0362 C005 RJMP 0x0368
0363 E021 LDI R18,1
0364 91000164 LDS R16,_lcd_text_color
0366 DE3C RCALL _LCD_write
0367 C004 RJMP 0x036C
(0307) else LCD_write(lcd_bkg_color,1);
0368 E021 LDI R18,1
0369 91000165 LDS R16,_lcd_bkg_color
036B DE37 RCALL _LCD_write
(0308) if (s[count]&0x10) LCD_write(lcd_text_color,1);
036C 01FA MOVW R30,R20
036D 0DEA ADD R30,R10
036E 1DFB ADC R31,R11
036F 8020 LDD R2,Z+0
0370 FE24 SBRS R2,4
0371 C005 RJMP 0x0377
0372 E021 LDI R18,1
0373 91000164 LDS R16,_lcd_text_color
0375 DE2D RCALL _LCD_write
0376 C004 RJMP 0x037B
(0309) else LCD_write(lcd_bkg_color,1);
0377 E021 LDI R18,1
0378 91000165 LDS R16,_lcd_bkg_color
037A DE28 RCALL _LCD_write
(0310) if (s[count]&0x20) LCD_write(lcd_text_color,1);
037B 01FA MOVW R30,R20
037C 0DEA ADD R30,R10
037D 1DFB ADC R31,R11
037E 8020 LDD R2,Z+0
037F FE25 SBRS R2,5
0380 C005 RJMP 0x0386
0381 E021 LDI R18,1
0382 91000164 LDS R16,_lcd_text_color
0384 DE1E RCALL _LCD_write
0385 C004 RJMP 0x038A
(0311) else LCD_write(lcd_bkg_color,1);
0386 E021 LDI R18,1
0387 91000165 LDS R16,_lcd_bkg_color
0389 DE19 RCALL _LCD_write
(0312) if (s[count]&0x40) LCD_write(lcd_text_color,1);
038A 01FA MOVW R30,R20
038B 0DEA ADD R30,R10
038C 1DFB ADC R31,R11
038D 8020 LDD R2,Z+0
038E FE26 SBRS R2,6
038F C005 RJMP 0x0395
0390 E021 LDI R18,1
0391 91000164 LDS R16,_lcd_text_color
0393 DE0F RCALL _LCD_write
0394 C004 RJMP 0x0399
(0313) else LCD_write(lcd_bkg_color,1);
0395 E021 LDI R18,1
0396 91000165 LDS R16,_lcd_bkg_color
0398 DE0A RCALL _LCD_write
(0314) if (s[count]&0x80) LCD_write(lcd_text_color,1);
0399 01FA MOVW R30,R20
039A 0DEA ADD R30,R10
039B 1DFB ADC R31,R11
039C 8020 LDD R2,Z+0
039D FE27 SBRS R2,7
039E C005 RJMP 0x03A4
039F E021 LDI R18,1
03A0 91000164 LDS R16,_lcd_text_color
03A2 DE00 RCALL _LCD_write
03A3 C004 RJMP 0x03A8
(0315) else LCD_write(lcd_bkg_color,1);
03A4 E021 LDI R18,1
03A5 91000165 LDS R16,_lcd_bkg_color
03A7 DDFB RCALL _LCD_write
03A8 5F4F SUBI R20,0xFF
03A9 4F5F SBCI R21,0xFF
03AA E280 LDI R24,0x20
03AB 9F86 MUL R24,R22
03AC 1540 CP R20,R0
03AD 0551 CPC R21,R1
03AE F408 BCC 0x03B0
03AF CF80 RJMP 0x0330
(0316) }
(0317) }
03B0 9623 ADIW R28,3
03B1 940E05F8 CALL pop_gset3
03B3 9508 RET
_lcd_ascii_5_7:
count --> R20
s --> R22
chr_ascii --> R20
03B4 940E0615 CALL push_gset2
03B6 2F40 MOV R20,R16
03B7 9723 SBIW R28,3
(0318) /**********显示一个5x7点ascii***********/
(0319) void lcd_ascii_5_7(unsigned char chr_ascii);
(0320) void lcd_ascii_5_7(unsigned char chr_ascii)
(0321) {
(0322) const unsigned char *s;
(0323) unsigned char count;
(0324) lcd_bkg_color=3;
03B8 E083 LDI R24,3
03B9 93800165 STS _lcd_bkg_color,R24
(0325) lcd_text_color=247;
03BB EF87 LDI R24,0xF7
03BC 93800164 STS _lcd_text_color,R24
(0326) clr_lcd_cs; //enable lcd
03BE 98C3 CBI 0x18,3
(0327) s=Bmp_ascii+chr_ascii*5;
03BF E085 LDI R24,5
03C0 9F84 MUL R24,R20
03C1 01B0 MOVW R22,R0
03C2 E584 LDI R24,0x54
03C3 E090 LDI R25,0
03C4 0F68 ADD R22,R24
03C5 1F79 ADC R23,R25
(0328) lcd_window(lcd_x,lcd_y,lcd_x+6,lcd_y+7);
03C6 91800162 LDS R24,_lcd_y
03C8 5F89 SUBI R24,0xF9
03C9 838A STD Y+2,R24
03CA 91800163 LDS R24,_lcd_x
03CC 5F8A SUBI R24,0xFA
03CD 8388 STD Y+0,R24
03CE 91200162 LDS R18,_lcd_y
03D0 91000163 LDS R16,_lcd_x
03D2 DE91 RCALL _lcd_window
(0329) LCD_write(LCD_CMD_MADCTL,0);
03D3 2722 CLR R18
03D4 E306 LDI R16,0x36
03D5 DDCD RCALL _LCD_write
(0330) LCD_write(MADCTL_VERT,1);
03D6 E021 LDI R18,1
03D7 E608 LDI R16,0x68
03D8 DDCA RCALL _LCD_write
(0331)
(0332) LCD_write(LCD_CMD_RAMWR,0);
03D9 2722 CLR R18
03DA E20C LDI R16,0x2C
03DB DDC7 RCALL _LCD_write
(0333) for (count=0;count<5;count++)
03DC 2744 CLR R20
03DD C06B RJMP 0x0449
(0334) {
(0335) if (*s&0x1) LCD_write(lcd_text_color,1); //high 8 bit
03DE 01FB MOVW R30,R22
03DF 91E4 LPM R30,0(Z)
03E0 FFE0 SBRS R30,0
03E1 C005 RJMP 0x03E7
03E2 E021 LDI R18,1
03E3 91000164 LDS R16,_lcd_text_color
03E5 DDBD RCALL _LCD_write
03E6 C004 RJMP 0x03EB
(0336) else LCD_write(lcd_bkg_color,1);
03E7 E021 LDI R18,1
03E8 91000165 LDS R16,_lcd_bkg_color
03EA DDB8 RCALL _LCD_write
(0337) if (*s&0x2) LCD_write(lcd_text_color,1);
03EB 01FB MOVW R30,R22
03EC 91E4 LPM R30,0(Z)
03ED FFE1 SBRS R30,1
03EE C005 RJMP 0x03F4
03EF E021 LDI R18,1
03F0 91000164 LDS R16,_lcd_text_color
03F2 DDB0 RCALL _LCD_write
03F3 C004 RJMP 0x03F8
(0338) else LCD_write(lcd_bkg_color,1);
03F4 E021 LDI R18,1
03F5 91000165 LDS R16,_lcd_bkg_color
03F7 DDAB RCALL _LCD_write
(0339) if (*s&0x4) LCD_write(lcd_text_color,1);
03F8 01FB MOVW R30,R22
03F9 91E4 LPM R30,0(Z)
03FA FFE2 SBRS R30,2
03FB C005 RJMP 0x0401
03FC E021 LDI R18,1
03FD 91000164 LDS R16,_lcd_text_color
03FF DDA3 RCALL _LCD_write
0400 C004 RJMP 0x0405
(0340) else LCD_write(lcd_bkg_color,1);
0401 E021 LDI R18,1
0402 91000165 LDS R16,_lcd_bkg_color
0404 DD9E RCALL _LCD_write
(0341) if (*s&0x8) LCD_write(lcd_text_color,1);
0405 01FB MOVW R30,R22
0406 91E4 LPM R30,0(Z)
0407 FFE3 SBRS R30,3
0408 C005 RJMP 0x040E
0409 E021 LDI R18,1
040A 91000164 LDS R16,_lcd_text_color
040C DD96 RCALL _LCD_write
040D C004 RJMP 0x0412
(0342) else LCD_write(lcd_bkg_color,1);
040E E021 LDI R18,1
040F 91000165 LDS R16,_lcd_bkg_color
0411 DD91 RCALL _LCD_write
(0343) if (*s&0x10) LCD_write(lcd_text_color,1);
0412 01FB MOVW R30,R22
0413 91E4 LPM R30,0(Z)
0414 FFE4 SBRS R30,4
0415 C005 RJMP 0x041B
0416 E021 LDI R18,1
0417 91000164 LDS R16,_lcd_text_color
0419 DD89 RCALL _LCD_write
041A C004 RJMP 0x041F
(0344) else LCD_write(lcd_bkg_color,1);
041B E021 LDI R18,1
041C 91000165 LDS R16,_lcd_bkg_color
041E DD84 RCALL _LCD_write
(0345) if (*s&0x20) LCD_write(lcd_text_color,1);
041F 01FB MOVW R30,R22
0420 91E4 LPM R30,0(Z)
0421 FFE5 SBRS R30,5
0422 C005 RJMP 0x0428
0423 E021 LDI R18,1
0424 91000164 LDS R16,_lcd_text_color
0426 DD7C RCALL _LCD_write
0427 C004 RJMP 0x042C
(0346) else LCD_write(lcd_bkg_color,1);
0428 E021 LDI R18,1
0429 91000165 LDS R16,_lcd_bkg_color
042B DD77 RCALL _LCD_write
(0347) if (*s&0x40) LCD_write(lcd_text_color,1);
042C 01FB MOVW R30,R22
042D 91E4 LPM R30,0(Z)
042E FFE6 SBRS R30,6
042F C005 RJMP 0x0435
0430 E021 LDI R18,1
0431 91000164 LDS R16,_lcd_text_color
0433 DD6F RCALL _LCD_write
0434 C004 RJMP 0x0439
(0348) else LCD_write(lcd_bkg_color,1);
0435 E021 LDI R18,1
0436 91000165 LDS R16,_lcd_bkg_color
0438 DD6A RCALL _LCD_write
(0349) if (*s&0x80) LCD_write(lcd_text_color,1);
0439 01FB MOVW R30,R22
043A 91E4 LPM R30,0(Z)
043B FFE7 SBRS R30,7
043C C005 RJMP 0x0442
043D E021 LDI R18,1
043E 91000164 LDS R16,_lcd_text_color
0440 DD62 RCALL _LCD_write
0441 C004 RJMP 0x0446
(0350) else LCD_write(lcd_bkg_color,1);
0442 E021 LDI R18,1
0443 91000165 LDS R16,_lcd_bkg_color
0445 DD5D RCALL _LCD_write
(0351)
(0352) s++;
0446 5F6F SUBI R22,0xFF
0447 4F7F SBCI R23,0xFF
0448 9543 INC R20
0449 3045 CPI R20,5
044A F408 BCC 0x044C
044B CF92 RJMP 0x03DE
(0353) }
(0354) LCD_write(lcd_bkg_color,1); //字体之间隔一竖行
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -