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

📄 12864.lst

📁 ICCAVR编写128*64液晶程序测试已经通过
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -