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

📄 disp.lst

📁 可以测试位图文件
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0159) {
(0160) unsigned char i;
(0161) unsigned int chr_m;
(0162) chr_m=chrx;
    05E2 8548      LDD	R20,Y+8
    05E3 2755      CLR	R21
(0163) chr_m=chr_m*16;
    05E4 E100      LDI	R16,0x10
    05E5 E010      LDI	R17,0
    05E6 019A      MOVW	R18,R20
    05E7 940E07B0  CALL	empy16s
    05E9 01A8      MOVW	R20,R16
(0164) if(y >= 8)
    05EA 2D8A      MOV	R24,R10
    05EB 3088      CPI	R24,0x8
    05EC F408      BCC	0x05EE
    05ED C035      RJMP	0x0623
(0165) {
(0166)         y=y-8;
    05EE 5088      SUBI	R24,0x8
    05EF 2EA8      MOV	R10,R24
(0167)         LCD_Write_ComR(0xb8|x);   	//行坐标确定页地址
    05F0 2D0C      MOV	R16,R12
    05F1 6B08      ORI	R16,0xB8
    05F2 DF9C      RCALL	_LCD_Write_ComR
(0168) 	LCD_Write_ComR(0x40|y<<3); 	//列坐标确定列地址
    05F3 2D0A      MOV	R16,R10
    05F4 0F00      LSL	R16
    05F5 0F00      LSL	R16
    05F6 0F00      LSL	R16
    05F7 6400      ORI	R16,0x40
    05F8 DF96      RCALL	_LCD_Write_ComR
(0169)   	for(i=0;i<8;i++)
    05F9 2766      CLR	R22
    05FA C00C      RJMP	0x0607
(0170)   	{
(0171)     		LCD_Write_DatR(Ezk[chr_m+i]);
    05FB 2E26      MOV	R2,R22
    05FC 2433      CLR	R3
    05FD 01FA      MOVW	R30,R20
    05FE 0DE2      ADD	R30,R2
    05FF 1DF3      ADC	R31,R3
    0600 EA8C      LDI	R24,0xAC
    0601 E098      LDI	R25,0x8
    0602 0FE8      ADD	R30,R24
    0603 1FF9      ADC	R31,R25
    0604 9104      LPM	R16,0(Z)
    0605 DF9B      RCALL	_LCD_Write_DatR
    0606 9563      INC	R22
    0607 3068      CPI	R22,0x8
    0608 F390      BCS	0x05FB
(0172)   	}
(0173)   	LCD_Write_ComR(0xb9|x);
    0609 2D0C      MOV	R16,R12
    060A 6B09      ORI	R16,0xB9
    060B DF83      RCALL	_LCD_Write_ComR
(0174)   	LCD_Write_ComR(0x40|y<<3);
    060C 2D0A      MOV	R16,R10
    060D 0F00      LSL	R16
    060E 0F00      LSL	R16
    060F 0F00      LSL	R16
    0610 6400      ORI	R16,0x40
    0611 DF7D      RCALL	_LCD_Write_ComR
(0175)   	for(i=8;i<16;i++)
    0612 E068      LDI	R22,0x8
    0613 C00C      RJMP	0x0620
(0176)   	{
(0177)     		LCD_Write_DatR(Ezk[chr_m+i]);
    0614 2E26      MOV	R2,R22
    0615 2433      CLR	R3
    0616 01FA      MOVW	R30,R20
    0617 0DE2      ADD	R30,R2
    0618 1DF3      ADC	R31,R3
    0619 EA8C      LDI	R24,0xAC
    061A E098      LDI	R25,0x8
    061B 0FE8      ADD	R30,R24
    061C 1FF9      ADC	R31,R25
    061D 9104      LPM	R16,0(Z)
    061E DF82      RCALL	_LCD_Write_DatR
    061F 9563      INC	R22
    0620 3160      CPI	R22,0x10
    0621 F390      BCS	0x0614
(0178)   	}
(0179) }
    0622 C032      RJMP	0x0655
(0180) else
(0181) {
(0182) 	LCD_Write_ComL(0xb8|x);
    0623 2D0C      MOV	R16,R12
    0624 6B08      ORI	R16,0xB8
    0625 DF44      RCALL	_LCD_Write_ComL
(0183)   	LCD_Write_ComL(0x40|y<<3);
    0626 2D0A      MOV	R16,R10
    0627 0F00      LSL	R16
    0628 0F00      LSL	R16
    0629 0F00      LSL	R16
    062A 6400      ORI	R16,0x40
    062B DF3E      RCALL	_LCD_Write_ComL
(0184)   	for(i=0;i<8;i++)
    062C 2766      CLR	R22
    062D C00C      RJMP	0x063A
(0185)   	{
(0186)     		LCD_Write_DatL(Ezk[chr_m+i]);
    062E 2E26      MOV	R2,R22
    062F 2433      CLR	R3
    0630 01FA      MOVW	R30,R20
    0631 0DE2      ADD	R30,R2
    0632 1DF3      ADC	R31,R3
    0633 EA8C      LDI	R24,0xAC
    0634 E098      LDI	R25,0x8
    0635 0FE8      ADD	R30,R24
    0636 1FF9      ADC	R31,R25
    0637 9104      LPM	R16,0(Z)
    0638 DF43      RCALL	_LCD_Write_DatL
    0639 9563      INC	R22
    063A 3068      CPI	R22,0x8
    063B F390      BCS	0x062E
(0187)   	}
(0188)   	LCD_Write_ComL(0xb9|x);
    063C 2D0C      MOV	R16,R12
    063D 6B09      ORI	R16,0xB9
    063E DF2B      RCALL	_LCD_Write_ComL
(0189)   	LCD_Write_ComL(0x40|y<<3);
    063F 2D0A      MOV	R16,R10
    0640 0F00      LSL	R16
    0641 0F00      LSL	R16
    0642 0F00      LSL	R16
    0643 6400      ORI	R16,0x40
    0644 DF25      RCALL	_LCD_Write_ComL
(0190)   	for(i=8;i<16;i++)
    0645 E068      LDI	R22,0x8
    0646 C00C      RJMP	0x0653
(0191)   	{
(0192)     		LCD_Write_DatL(Ezk[chr_m+i]);
    0647 2E26      MOV	R2,R22
    0648 2433      CLR	R3
    0649 01FA      MOVW	R30,R20
    064A 0DE2      ADD	R30,R2
    064B 1DF3      ADC	R31,R3
    064C EA8C      LDI	R24,0xAC
    064D E098      LDI	R25,0x8
    064E 0FE8      ADD	R30,R24
    064F 1FF9      ADC	R31,R25
    0650 9104      LPM	R16,0(Z)
    0651 DF2A      RCALL	_LCD_Write_DatL
    0652 9563      INC	R22
    0653 3160      CPI	R22,0x10
    0654 F390      BCS	0x0647
(0193)   	}
(0194) }
    0655 940E07C3  CALL	pop_gset4
    0657 9508      RET
_LCD_WrCHr16x16:
  chr_m                --> R20
  i                    --> R22
  chrx                 --> Y+8
  y                    --> R10
  x                    --> R12
    0658 940E07C8  CALL	push_gset4
    065A 2EA2      MOV	R10,R18
    065B 2EC0      MOV	R12,R16
(0195) }
(0196) 
(0197) //======================================================
(0198) //显示16x16字符,位置按8x8一个点来定
(0199) // x:行坐标(0-3)  y:列坐标(0-15)  chrx:显示字符(字符在字库中的索引)
(0200) //======================================================
(0201) void LCD_WrCHr16x16(unsigned char x,unsigned char y,unsigned char chrx)
(0202) {
(0203) unsigned char i;
(0204) unsigned int chr_m;
(0205) chr_m=chrx;
    065C 8548      LDD	R20,Y+8
    065D 2755      CLR	R21
(0206) chr_m=chr_m*32;
    065E E200      LDI	R16,0x20
    065F E010      LDI	R17,0
    0660 019A      MOVW	R18,R20
    0661 940E07B0  CALL	empy16s
    0663 01A8      MOVW	R20,R16
(0207) if(y>=8)   //y以字节计算,在右半屏显示,y以字节单位
    0664 2D8A      MOV	R24,R10
    0665 3088      CPI	R24,0x8
    0666 F408      BCC	0x0668
    0667 C067      RJMP	0x06CF
(0208) {
(0209) 	y=y-8;
    0668 5088      SUBI	R24,0x8
    0669 2EA8      MOV	R10,R24
(0210) 	LCD_Write_ComR(0xb8|x);  	//确定显示行位置
    066A 2D0C      MOV	R16,R12
    066B 6B08      ORI	R16,0xB8
    066C DF22      RCALL	_LCD_Write_ComR
(0211)   	LCD_Write_ComR(0x40|y<<3);	//确定显示列位置
    066D 2D0A      MOV	R16,R10
    066E 0F00      LSL	R16
    066F 0F00      LSL	R16
    0670 0F00      LSL	R16
    0671 6400      ORI	R16,0x40
    0672 DF1C      RCALL	_LCD_Write_ComR
(0212)   	for(i=0;i<8;i++)
    0673 2766      CLR	R22
    0674 C00C      RJMP	0x0681
(0213)   	{
(0214)     		LCD_Write_DatR(Hzk[chr_m+i]);
    0675 2E26      MOV	R2,R22
    0676 2433      CLR	R3
    0677 01FA      MOVW	R30,R20
    0678 0DE2      ADD	R30,R2
    0679 1DF3      ADC	R31,R3
    067A E88C      LDI	R24,0x8C
    067B E090      LDI	R25,0
    067C 0FE8      ADD	R30,R24
    067D 1FF9      ADC	R31,R25
    067E 9104      LPM	R16,0(Z)
    067F DF21      RCALL	_LCD_Write_DatR
    0680 9563      INC	R22
    0681 3068      CPI	R22,0x8
    0682 F390      BCS	0x0675
(0215)   	}
(0216) 
(0217) 	LCD_Write_ComR(0xb8|x);
    0683 2D0C      MOV	R16,R12
    0684 6B08      ORI	R16,0xB8
    0685 DF09      RCALL	_LCD_Write_ComR
(0218)   	LCD_Write_ComR(0x48|y<<3);
    0686 2D0A      MOV	R16,R10
    0687 0F00      LSL	R16
    0688 0F00      LSL	R16
    0689 0F00      LSL	R16
    068A 6408      ORI	R16,0x48
    068B DF03      RCALL	_LCD_Write_ComR
(0219)   	for(i=8;i<16;i++)
    068C E068      LDI	R22,0x8
    068D C00C      RJMP	0x069A
(0220)   	{
(0221)     		LCD_Write_DatR(Hzk[chr_m+i]);
    068E 2E26      MOV	R2,R22
    068F 2433      CLR	R3
    0690 01FA      MOVW	R30,R20
    0691 0DE2      ADD	R30,R2
    0692 1DF3      ADC	R31,R3
    0693 E88C      LDI	R24,0x8C
    0694 E090      LDI	R25,0
    0695 0FE8      ADD	R30,R24
    0696 1FF9      ADC	R31,R25
    0697 9104      LPM	R16,0(Z)
    0698 DF08      RCALL	_LCD_Write_DatR
    0699 9563      INC	R22
    069A 3160      CPI	R22,0x10
    069B F390      BCS	0x068E
(0222)   	}
(0223) 
(0224)   	LCD_Write_ComR(0xb9|x);
    069C 2D0C      MOV	R16,R12
    069D 6B09      ORI	R16,0xB9
    069E DEF0      RCALL	_LCD_Write_ComR
(0225)   	LCD_Write_ComR(0x40|y<<3);
    069F 2D0A      MOV	R16,R10
    06A0 0F00      LSL	R16
    06A1 0F00      LSL	R16
    06A2 0F00      LSL	R16
    06A3 6400      ORI	R16,0x40
    06A4 DEEA      RCALL	_LCD_Write_ComR
(0226)   	for(i=16;i<24;i++)
    06A5 E160      LDI	R22,0x10
    06A6 C00C      RJMP	0x06B3
(0227)   	{
(0228)     		LCD_Write_DatR(Hzk[chr_m+i]);
    06A7 2E26      MOV	R2,R22
    06A8 2433      CLR	R3
    06A9 01FA      MOVW	R30,R20
    06AA 0DE2      ADD	R30,R2
    06AB 1DF3      ADC	R31,R3
    06AC E88C      LDI	R24,0x8C
    06AD E090      LDI	R25,0
    06AE 0FE8      ADD	R30,R24
    06AF 1FF9      ADC	R31,R25
    06B0 9104      LPM	R16,0(Z)
    06B1 DEEF      RCALL	_LCD_Write_DatR
    06B2 9563      INC	R22
    06B3 3168      CPI	R22,0x18
    06B4 F390      BCS	0x06A7
(0229)   	}
(0230)   	LCD_Write_ComR(0xb9|x);
    06B5 2D0C      MOV	R16,R12
    06B6 6B09      ORI	R16,0xB9
    06B7 DED7      RCALL	_LCD_Write_ComR
(0231)   	LCD_Write_ComR(0x48|y<<3);
    06B8 2D0A      MOV	R16,R10
    06B9 0F00      LSL	R16
    06BA 0F00      LSL	R16
    06BB 0F00      LSL	R16
    06BC 6408      ORI	R16,0x48
    06BD DED1      RCALL	_LCD_Write_ComR
(0232)   	for(i=24;i<32;i++)
    06BE E168      LDI	R22,0x18
    06BF C00C      RJMP	0x06CC
(0233)   	{
(0234)     		LCD_Write_DatR(Hzk[chr_m+i]);
    06C0 2E26      MOV	R2,R22
    06C1 2433      CLR	R3
    06C2 01FA      MOVW	R30,R20
    06C3 0DE2      ADD	R30,R2
    06C4 1DF3      ADC	R31,R3
    06C5 E88C      LDI	R24,0x8C
    06C6 E090      LDI	R25,0
    06C7 0FE8      ADD	R30,R24
    06C8 1FF9      ADC	R31,R25
    06C9 9104      LPM	R16,0(Z)
    06CA DED6      RCALL	_LCD_Write_DatR
    06CB 9563      INC	R22
    06CC 3260      CPI	R22,0x20
    06CD F390      BCS	0x06C0
(0235)   	}
(0236) }
    06CE C064      RJMP	0x0733
(0237) else
(0238) {
(0239) 	LCD_Write_ComL(0xb8|x);
    06CF 2D0C      MOV	R16,R12
    06D0 6B08      ORI	R16,0xB8
    06D1 DE98      RCALL	_LCD_Write_ComL
(0240)   	LCD_Write_ComL(0x40|y<<3);
    06D2 2D0A      MOV	R16,R10
    06D3 0F00      LSL	R16
    06D4 0F00      LSL	R16
    06D5 0F00      LSL	R16
    06D6 6400      ORI	R16,0x40
    06D7 DE92      RCALL	_LCD_Write_ComL
(0241)   	for(i=0;i<8;i++)
    06D8 2766      CLR	R22
    06D9 C00C      RJMP	0x06E6
(0242)   	{
(0243)     		LCD_Write_DatL(Hzk[chr_m+i]);
    06DA 2E26      MOV	R2,R22
    06DB 2433      CLR	R3
    06DC 01FA      MOVW	R30,R20
    06DD 0DE2      ADD	R30,R2
    06DE 1DF3      ADC	R31,R3
    06DF E88C      LDI	R24,0x8C
    06E0 E090      LDI	R25,0
    06E1 0FE8      ADD	R30,R24
    06E2 1FF9      ADC	R31,R25
    06E3 9104      LPM	R16,0(Z)
    06E4 DE97      RCALL	_LCD_Write_DatL
    06E5 9563      INC	R22
    06E6 3068      CPI	R22,0x8
    06E7 F390      BCS	0x06DA
(0244)   	}
(0245) 
(0246) 	LCD_Write_ComL(0xb8|x);

⌨️ 快捷键说明

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