📄 12864.lst
字号:
03AA 90E4 LPM R14,0(Z)
(0269) if(uCol+j<64)
03AB 8189 LDD R24,Y+1
03AC 0D8C ADD R24,R12
03AD 3480 CPI R24,0x40
03AE F428 BCC 0x03B4
(0270) write_LCD(LEFT,DATA,ch_w);
03AF 82E8 STD Y+0,R14
03B0 E021 LDI R18,1
03B1 2700 CLR R16
03B2 DE84 RCALL _write_LCD
03B3 C004 RJMP 0x03B8
(0271) else
(0272) write_LCD(RIGHT,DATA,ch_w);
03B4 82E8 STD Y+0,R14
03B5 E021 LDI R18,1
03B6 E001 LDI R16,1
03B7 DE7F RCALL _write_LCD
03B8 94C3 INC R12
03B9 16C6 CP R12,R22
03BA F300 BCS 0x039B
(0273) }
(0274) SetPageCol(uPage+1,uCol);
03BB 8129 LDD R18,Y+1
03BC 810A LDD R16,Y+2
03BD 5F0F SUBI R16,0xFF
03BE DF59 RCALL _SetPageCol
(0275)
(0276) for(j=0;j<width;j++)
03BF 24CC CLR R12
03C0 C036 RJMP 0x03F7
(0277) {
(0278) SetPageCol(uPage+1,uCol+j);
03C1 8129 LDD R18,Y+1
03C2 0D2C ADD R18,R12
03C3 810A LDD R16,Y+2
03C4 5F0F SUBI R16,0xFF
03C5 DF52 RCALL _SetPageCol
(0279) if(uCol+j<64)
03C6 8189 LDD R24,Y+1
03C7 0D8C ADD R24,R12
03C8 3480 CPI R24,0x40
03C9 F420 BCC 0x03CE
(0280) ch_r=read_LCD(LEFT);
03CA 2700 CLR R16
03CB DE88 RCALL _read_LCD
03CC 2EA0 MOV R10,R16
03CD C003 RJMP 0x03D1
(0281) else
(0282) ch_r=read_LCD(RIGHT);
03CE E001 LDI R16,1
03CF DE84 RCALL _read_LCD
03D0 2EA0 MOV R10,R16
(0283) ch_r&=0xf0;
03D1 2D8A MOV R24,R10
03D2 7F80 ANDI R24,0xF0
03D3 2EA8 MOV R10,R24
(0284) ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j]&0x0f;
03D4 E181 LDI R24,0x11
03D5 9F84 MUL R24,R20
03D6 0110 MOVW R2,R0
03D7 E585 LDI R24,0x55
03D8 E090 LDI R25,0
03D9 0E28 ADD R2,R24
03DA 1E39 ADC R3,R25
03DB 2DEC MOV R30,R12
03DC 27FF CLR R31
03DD 9638 ADIW R30,0x8
03DE 0DE2 ADD R30,R2
03DF 1DF3 ADC R31,R3
03E0 91E4 LPM R30,0(Z)
03E1 70EF ANDI R30,0xF
03E2 2EEE MOV R14,R30
(0285) ch_w|=ch_r;
03E3 28EA OR R14,R10
(0286) SetPageCol(uPage+1,uCol+j);
03E4 8129 LDD R18,Y+1
03E5 0D2C ADD R18,R12
03E6 810A LDD R16,Y+2
03E7 5F0F SUBI R16,0xFF
03E8 DF2F RCALL _SetPageCol
(0287) if(uCol+j<64)
03E9 8189 LDD R24,Y+1
03EA 0D8C ADD R24,R12
03EB 3480 CPI R24,0x40
03EC F428 BCC 0x03F2
(0288) write_LCD(LEFT,DATA,ch_w);
03ED 82E8 STD Y+0,R14
03EE E021 LDI R18,1
03EF 2700 CLR R16
03F0 DE46 RCALL _write_LCD
03F1 C004 RJMP 0x03F6
(0289) else
(0290) write_LCD(RIGHT,DATA,ch_w);
03F2 82E8 STD Y+0,R14
03F3 E021 LDI R18,1
03F4 E001 LDI R16,1
03F5 DE41 RCALL _write_LCD
03F6 94C3 INC R12
03F7 16C6 CP R12,R22
03F8 F408 BCC 0x03FA
03F9 CFC7 RJMP 0x03C1
(0291) }
(0292) }
03FA C07D RJMP 0x0478
(0293) else //上半部是写半个字节
(0294) {
(0295) for(j=0;j<width;j++)
03FB 24CC CLR R12
03FC C035 RJMP 0x0432
(0296) {
(0297) SetPageCol(uPage,uCol+j);
03FD 8129 LDD R18,Y+1
03FE 0D2C ADD R18,R12
03FF 810A LDD R16,Y+2
0400 DF17 RCALL _SetPageCol
(0298) if(uCol+j<64)
0401 8189 LDD R24,Y+1
0402 0D8C ADD R24,R12
0403 3480 CPI R24,0x40
0404 F420 BCC 0x0409
(0299) ch_r=read_LCD(LEFT);
0405 2700 CLR R16
0406 DE4D RCALL _read_LCD
0407 2EA0 MOV R10,R16
0408 C003 RJMP 0x040C
(0300) else
(0301) ch_r=read_LCD(RIGHT);
0409 E001 LDI R16,1
040A DE49 RCALL _read_LCD
040B 2EA0 MOV R10,R16
(0302) ch_r&=0x0f;
040C 2D8A MOV R24,R10
040D 708F ANDI R24,0xF
040E 2EA8 MOV R10,R24
(0303) ch_w=ASC_16[k].Msk[j];
040F E181 LDI R24,0x11
0410 9F84 MUL R24,R20
0411 0110 MOVW R2,R0
0412 E585 LDI R24,0x55
0413 E090 LDI R25,0
0414 0E28 ADD R2,R24
0415 1E39 ADC R3,R25
0416 2DEC MOV R30,R12
0417 27FF CLR R31
0418 0DE2 ADD R30,R2
0419 1DF3 ADC R31,R3
041A 90E4 LPM R14,0(Z)
(0304) ch_w=ch_w<<4;
041B 2D8E MOV R24,R14
041C 708F ANDI R24,0xF
041D 9582 SWAP R24
041E 2EE8 MOV R14,R24
(0305) ch_w|=ch_r;
041F 28EA OR R14,R10
(0306) SetPageCol(uPage,uCol+j);
0420 8129 LDD R18,Y+1
0421 0D2C ADD R18,R12
0422 810A LDD R16,Y+2
0423 DEF4 RCALL _SetPageCol
(0307) if(uCol+j<64)
0424 8189 LDD R24,Y+1
0425 0D8C ADD R24,R12
0426 3480 CPI R24,0x40
0427 F428 BCC 0x042D
(0308) write_LCD(LEFT,DATA,ch_w);
0428 82E8 STD Y+0,R14
0429 E021 LDI R18,1
042A 2700 CLR R16
042B DE0B RCALL _write_LCD
042C C004 RJMP 0x0431
(0309) else
(0310) write_LCD(RIGHT,DATA,ch_w);
042D 82E8 STD Y+0,R14
042E E021 LDI R18,1
042F E001 LDI R16,1
0430 DE06 RCALL _write_LCD
0431 94C3 INC R12
0432 16C6 CP R12,R22
0433 F408 BCC 0x0435
0434 CFC8 RJMP 0x03FD
(0311) }
(0312) SetPageCol(uPage+1,uCol);
0435 8129 LDD R18,Y+1
0436 810A LDD R16,Y+2
0437 5F0F SUBI R16,0xFF
0438 DEDF RCALL _SetPageCol
(0313) for(j=0;j<width;j++)
0439 24CC CLR R12
043A C03A RJMP 0x0475
(0314) {
(0315) SetPageCol(uPage+1,uCol+j);
043B 8129 LDD R18,Y+1
043C 0D2C ADD R18,R12
043D 810A LDD R16,Y+2
043E 5F0F SUBI R16,0xFF
043F DED8 RCALL _SetPageCol
(0316)
(0317) ch_r=ASC_16[k].Msk[j];
0440 E181 LDI R24,0x11
0441 9F84 MUL R24,R20
0442 0110 MOVW R2,R0
0443 E585 LDI R24,0x55
0444 E090 LDI R25,0
0445 0E28 ADD R2,R24
0446 1E39 ADC R3,R25
0447 2DEC MOV R30,R12
0448 27FF CLR R31
0449 0DE2 ADD R30,R2
044A 1DF3 ADC R31,R3
044B 90A4 LPM R10,0(Z)
(0318) ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
044C E181 LDI R24,0x11
044D 9F84 MUL R24,R20
044E 0110 MOVW R2,R0
044F E585 LDI R24,0x55
0450 E090 LDI R25,0
0451 0E28 ADD R2,R24
0452 1E39 ADC R3,R25
0453 2DEC MOV R30,R12
0454 27FF CLR R31
0455 9638 ADIW R30,0x8
0456 0DE2 ADD R30,R2
0457 1DF3 ADC R31,R3
0458 90E4 LPM R14,0(Z)
(0319) ch_r=ch_r>>4;
0459 2D8A MOV R24,R10
045A 9582 SWAP R24
045B 708F ANDI R24,0xF
045C 2EA8 MOV R10,R24
(0320) ch_w=ch_w<<4;
045D 2D8E MOV R24,R14
045E 708F ANDI R24,0xF
045F 9582 SWAP R24
0460 2EE8 MOV R14,R24
(0321) ch_w|=ch_r;
0461 28EA OR R14,R10
(0322) SetPageCol(uPage+1,uCol+j);
0462 8129 LDD R18,Y+1
0463 0D2C ADD R18,R12
0464 810A LDD R16,Y+2
0465 5F0F SUBI R16,0xFF
0466 DEB1 RCALL _SetPageCol
(0323) if(uCol+j<64)
0467 8189 LDD R24,Y+1
0468 0D8C ADD R24,R12
0469 3480 CPI R24,0x40
046A F428 BCC 0x0470
(0324) write_LCD(LEFT,DATA,ch_w);
046B 82E8 STD Y+0,R14
046C E021 LDI R18,1
046D 2700 CLR R16
046E DDC8 RCALL _write_LCD
046F C004 RJMP 0x0474
(0325) else
(0326) write_LCD(RIGHT,DATA,ch_w);
0470 82E8 STD Y+0,R14
0471 E021 LDI R18,1
0472 E001 LDI R16,1
0473 DDC3 RCALL _write_LCD
0474 94C3 INC R12
0475 16C6 CP R12,R22
0476 F408 BCC 0x0478
0477 CFC3 RJMP 0x043B
(0327) }
(0328) }
(0329) }
(0330) SetPageCol(uPage,uCol+width);
0478 8129 LDD R18,Y+1
0479 0F26 ADD R18,R22
047A 810A LDD R16,Y+2
047B DE9C RCALL _SetPageCol
047C 9623 ADIW R28,3
047D 940E1809 CALL pop_gset5
047F 9508 RET
_disp_hz:
uPage --> Y+1
ch_r --> R22
k --> R10
uCol --> R12
ch_w --> R14
j --> R20
hz --> R20
0480 940E180C CALL push_gset5
0482 01A8 MOVW R20,R16
0483 9722 SBIW R28,2
(0331) }
(0332)
(0333)
(0334) //---------------汉字显示函数------------------
(0335) void disp_hz(unsigned char *hz)
(0336) {
(0337) unsigned char k,j,uPage,uCol,ch_r,ch_w;
(0338) uPage = GetPage();
0484 DE8D RCALL _GetPage
0485 8309 STD Y+1,R16
(0339) uCol = GetCol();
0486 DE8E RCALL _GetCol
0487 2EC0 MOV R12,R16
(0340) for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
0488 24AA CLR R10
0489 C019 RJMP 0x04A3
(0341) {
(0342) if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
048A E18A LDI R24,0x1A
048B 9D8A MUL R24,R10
048C 0110 MOVW R2,R0
048D E582 LDI R24,0x52
048E E092 LDI R25,2
048F 01F1 MOVW R30,R2
0490 0FE8 ADD R30,R24
0491 1FF9 ADC R31,R25
0492 91E4 LPM R30,0(Z)
0493 01DA MOVW R26,R20
0494 904C LD R4,0(X)
0495 164E CP R4,R30
0496 F459 BNE 0x04A2
0497 E583 LDI R24,0x53
0498 E092 LDI R25,2
0499 01F1 MOVW R30,R2
049A 0FE8 ADD R30,R24
049B 1FF9 ADC R31,R25
049C 91E4 LPM R30,0(Z)
049D 9611 ADIW R26,1
049E 902C LD R2,0(X)
049F 162E CP R2,R30
04A0 F409 BNE 0x04A2
(0343) break;
04A1 C004 RJMP 0x04A6
04A2 94A3 INC R10
04A3 2D8A MOV R24,R10
04A4 308C CPI R24,0xC
04A5 F320 BCS 0x048A
(0344) }
(0345)
(0346) if(CurOffset==1)
04A6 91800063 LDS R24,CurOffset
04A8 3081 CPI R24,1
04A9 F009 BEQ 0x04AB
04AA C064 RJMP 0x050F
(0347) {
(0348) for(j=0;j<ASC_HZ_WIDTH;j++)
04AB 2744 CLR R20
04AC C01E RJMP 0x04CB
(0349) {
(0350) SetPageCol(uPage,uCol+j);
04AD 2D2C MOV R18,R12
04AE 0F24 ADD R18,R20
04AF 8109 LDD R16,Y+1
04B0 DE67 RCALL _SetPageCol
(0351) ch_w=GB_16[k].Msk[j];
04B1 E18A LDI R24,0x1A
04B2 9D8A MUL R24,R10
04B3 0110 MOVW R2,R0
04B4 E584 LDI R24,0x54
04B5 E092 LDI R25,2
04B6 0E28 ADD R2,R24
04B7 1E39 ADC R3,R25
04B8 2FE4 MOV R30,R20
04B9 27FF CLR R31
04BA 0DE2 ADD R30,R2
04BB 1DF3 ADC R31,R3
04BC 90E4 LPM R14,0(Z)
(0352) if(uCol+j<64) write_LCD(LEFT,DATA,ch_w);
04BD 2D8C MOV R24,R12
04BE 0F84 ADD R24,R20
04BF 3480 CPI R24,0x40
04C0 F428 BCC 0x04C6
04C1 82E8 STD Y+0,R14
04C2 E021 LDI R18,1
04C3 2700 CLR R16
04C4 DD72 RCALL _write_LCD
04C5 C004 RJMP 0x04CA
(0353) else write_LCD(RIGHT,DATA,ch_w);
04C6 82E8 STD Y+0,R14
04C7 E021 LDI R18,1
04C8 E001 LDI R16,1
04C9 DD6D RCALL _write_LCD
04CA 9543 INC R20
04CB 304C CPI R20,0xC
04CC F300 BCS 0x04AD
(0354) }
(0355) SetPageCol(uPage+1,uCol);
04CD 2D2C MOV R18,R12
04CE 8109 LDD R16,Y+1
04CF 5F0F SUBI R16,0xFF
04D0 DE47 RCALL _SetPageCol
(0356)
(0357) for(j=0;j<ASC_HZ_WIDTH;j++)
04D1 2744 CLR R20
04D2 C034 RJMP 0x0507
(0358) {
(0359) SetPageCol(uPage+1,uCol+j);
04D3 2D2C MOV R18,R12
04D4 0F24 ADD R18,R20
04D5 8109 LDD R16,Y+1
04D6 5F0F SUBI R16,0xFF
04D7 DE40 RCALL _SetPageCol
(0360) if(uCol+j<64)
04D8 2D8C MOV R24,R12
04D9 0F84 ADD R24,R20
04DA 3480 CPI R24,0x40
04DB F420 BCC 0x04E0
(0361) ch_r=read_LCD(LEFT);
04DC 2700 CLR R16
04DD DD76 RCALL _read_LCD
04DE 2F60 MOV R22,R16
04DF C003 RJMP 0x04E3
(0362) else
(0363) ch_r=read_LCD(RIGHT);
04E0 E001 LDI R16,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -