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

📄 mega32-lcm.lst

📁 关于proteus的仿真实例
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0592 1DF3      ADC	R31,R3
    0593 90E4      LPM	R14,0(Z)
(0408) 				ch_w=ch_w<<4;
    0594 2D8E      MOV	R24,R14
    0595 708F      ANDI	R24,0xF
    0596 9582      SWAP	R24
    0597 2EE8      MOV	R14,R24
(0409) 				ch_w|=ch_r;
    0598 28EA      OR	R14,R10
(0410) 				SetPageCol(uPage,uCol+j);
    0599 8129      LDD	R18,Y+1
    059A 0D2C      ADD	R18,R12
    059B 810A      LDD	R16,Y+2
    059C DEF4      RCALL	_SetPageCol
(0411) 				if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
    059D 8189      LDD	R24,Y+1
    059E 0D8C      ADD	R24,R12
    059F 3480      CPI	R24,0x40
    05A0 F428      BCC	0x05A6
    05A1 82E8      STD	Y+0,R14
    05A2 E021      LDI	R18,1
    05A3 2700      CLR	R16
    05A4 DD7C      RCALL	_write_LCD
    05A5 C004      RJMP	0x05AA
(0412) 				else write_LCD(RIGHT,DATA,ch_w); 
    05A6 82E8      STD	Y+0,R14
    05A7 E021      LDI	R18,1
    05A8 E001      LDI	R16,1
    05A9 DD77      RCALL	_write_LCD
    05AA 94C3      INC	R12
    05AB 16C6      CP	R12,R22
    05AC F408      BCC	0x05AE
    05AD CFC8      RJMP	0x0576
(0413) 			}
(0414) 			SetPageCol(uPage+1,uCol);
    05AE 8129      LDD	R18,Y+1
    05AF 810A      LDD	R16,Y+2
    05B0 5F0F      SUBI	R16,0xFF
    05B1 DEDF      RCALL	_SetPageCol
(0415) 			for(j=0;j<width;j++)
    05B2 24CC      CLR	R12
    05B3 C03A      RJMP	0x05EE
(0416) 			{
(0417) 				SetPageCol(uPage+1,uCol+j);
    05B4 8129      LDD	R18,Y+1
    05B5 0D2C      ADD	R18,R12
    05B6 810A      LDD	R16,Y+2
    05B7 5F0F      SUBI	R16,0xFF
    05B8 DED8      RCALL	_SetPageCol
(0418) 				
(0419) 				ch_r=ASC_16[k].Msk[j];
    05B9 E181      LDI	R24,0x11
    05BA 9F84      MUL	R24,R20
    05BB 0110      MOVW	R2,R0
    05BC E585      LDI	R24,0x55
    05BD E090      LDI	R25,0
    05BE 0E28      ADD	R2,R24
    05BF 1E39      ADC	R3,R25
    05C0 2DEC      MOV	R30,R12
    05C1 27FF      CLR	R31
    05C2 0DE2      ADD	R30,R2
    05C3 1DF3      ADC	R31,R3
    05C4 90A4      LPM	R10,0(Z)
(0420) 				ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
    05C5 E181      LDI	R24,0x11
    05C6 9F84      MUL	R24,R20
    05C7 0110      MOVW	R2,R0
    05C8 E585      LDI	R24,0x55
    05C9 E090      LDI	R25,0
    05CA 0E28      ADD	R2,R24
    05CB 1E39      ADC	R3,R25
    05CC 2DEC      MOV	R30,R12
    05CD 27FF      CLR	R31
    05CE 9638      ADIW	R30,0x8
    05CF 0DE2      ADD	R30,R2
    05D0 1DF3      ADC	R31,R3
    05D1 90E4      LPM	R14,0(Z)
(0421) 				ch_r=ch_r>>4;
    05D2 2D8A      MOV	R24,R10
    05D3 9582      SWAP	R24
    05D4 708F      ANDI	R24,0xF
    05D5 2EA8      MOV	R10,R24
(0422) 				ch_w=ch_w<<4; 
    05D6 2D8E      MOV	R24,R14
    05D7 708F      ANDI	R24,0xF
    05D8 9582      SWAP	R24
    05D9 2EE8      MOV	R14,R24
(0423) 				ch_w|=ch_r;
    05DA 28EA      OR	R14,R10
(0424) 				SetPageCol(uPage+1,uCol+j);
    05DB 8129      LDD	R18,Y+1
    05DC 0D2C      ADD	R18,R12
    05DD 810A      LDD	R16,Y+2
    05DE 5F0F      SUBI	R16,0xFF
    05DF DEB1      RCALL	_SetPageCol
(0425) 				if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
    05E0 8189      LDD	R24,Y+1
    05E1 0D8C      ADD	R24,R12
    05E2 3480      CPI	R24,0x40
    05E3 F428      BCC	0x05E9
    05E4 82E8      STD	Y+0,R14
    05E5 E021      LDI	R18,1
    05E6 2700      CLR	R16
    05E7 DD39      RCALL	_write_LCD
    05E8 C004      RJMP	0x05ED
(0426) 				else write_LCD(RIGHT,DATA,ch_w); 
    05E9 82E8      STD	Y+0,R14
    05EA E021      LDI	R18,1
    05EB E001      LDI	R16,1
    05EC DD34      RCALL	_write_LCD
    05ED 94C3      INC	R12
    05EE 16C6      CP	R12,R22
    05EF F408      BCC	0x05F1
    05F0 CFC3      RJMP	0x05B4
(0427) 			}
(0428) 		}
(0429) 	}
(0430) 	SetPageCol(uPage,uCol+width);
    05F1 8129      LDD	R18,Y+1
    05F2 0F26      ADD	R18,R22
    05F3 810A      LDD	R16,Y+2
    05F4 DE9C      RCALL	_SetPageCol
(0431) }
    05F5 9623      ADIW	R28,3
    05F6 940E09C1  CALL	pop_gset5
    05F8 9508      RET
_disp_hz:
  uPage                --> Y+1
  ch_r                 --> R22
  k                    --> R10
  uCol                 --> R12
  ch_w                 --> R14
  j                    --> R20
  hz                   --> R20
    05F9 940E09E7  CALL	push_gset5
    05FB 01A8      MOVW	R20,R16
    05FC 9722      SBIW	R28,2
(0432) 
(0433) 
(0434) void disp_hz(unsigned char *hz)
(0435) {
(0436) 	unsigned char k,j,uPage,uCol,ch_r,ch_w;
(0437) 	uPage = GetPage();
    05FD DE8D      RCALL	_GetPage
    05FE 8309      STD	Y+1,R16
(0438) 	uCol = GetCol();
    05FF DE8E      RCALL	_GetCol
    0600 2EC0      MOV	R12,R16
(0439) 	for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
    0601 24AA      CLR	R10
    0602 C019      RJMP	0x061C
(0440) 	{
(0441) 		if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
    0603 E18A      LDI	R24,0x1A
    0604 9D8A      MUL	R24,R10
    0605 0110      MOVW	R2,R0
    0606 E582      LDI	R24,0x52
    0607 E092      LDI	R25,2
    0608 01F1      MOVW	R30,R2
    0609 0FE8      ADD	R30,R24
    060A 1FF9      ADC	R31,R25
    060B 91E4      LPM	R30,0(Z)
    060C 01DA      MOVW	R26,R20
    060D 904C      LD	R4,0(X)
    060E 164E      CP	R4,R30
    060F F459      BNE	0x061B
    0610 E583      LDI	R24,0x53
    0611 E092      LDI	R25,2
    0612 01F1      MOVW	R30,R2
    0613 0FE8      ADD	R30,R24
    0614 1FF9      ADC	R31,R25
    0615 91E4      LPM	R30,0(Z)
    0616 9611      ADIW	R26,1
    0617 902C      LD	R2,0(X)
    0618 162E      CP	R2,R30
    0619 F409      BNE	0x061B
(0442) 			break;
    061A C004      RJMP	0x061F
    061B 94A3      INC	R10
    061C 2D8A      MOV	R24,R10
    061D 3182      CPI	R24,0x12
    061E F320      BCS	0x0603
(0443) 	}
(0444) 
(0445) 	if(CurOffset==1) 
    061F 918000C8  LDS	R24,_CurOffset
    0621 3081      CPI	R24,1
    0622 F009      BEQ	0x0624
    0623 C064      RJMP	0x0688
(0446) 	{
(0447) 	for(j=0;j<ASC_HZ_WIDTH;j++)
    0624 2744      CLR	R20
    0625 C01E      RJMP	0x0644
(0448) 	{
(0449) 		SetPageCol(uPage,uCol+j);
    0626 2D2C      MOV	R18,R12
    0627 0F24      ADD	R18,R20
    0628 8109      LDD	R16,Y+1
    0629 DE67      RCALL	_SetPageCol
(0450) 		ch_w=GB_16[k].Msk[j];
    062A E18A      LDI	R24,0x1A
    062B 9D8A      MUL	R24,R10
    062C 0110      MOVW	R2,R0
    062D E584      LDI	R24,0x54
    062E E092      LDI	R25,2
    062F 0E28      ADD	R2,R24
    0630 1E39      ADC	R3,R25
    0631 2FE4      MOV	R30,R20
    0632 27FF      CLR	R31
    0633 0DE2      ADD	R30,R2
    0634 1DF3      ADC	R31,R3
    0635 90E4      LPM	R14,0(Z)
(0451) 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w);
    0636 2D8C      MOV	R24,R12
    0637 0F84      ADD	R24,R20
    0638 3480      CPI	R24,0x40
    0639 F428      BCC	0x063F
    063A 82E8      STD	Y+0,R14
    063B E021      LDI	R18,1
    063C 2700      CLR	R16
    063D DCE3      RCALL	_write_LCD
    063E C004      RJMP	0x0643
(0452) 		else write_LCD(RIGHT,DATA,ch_w);
    063F 82E8      STD	Y+0,R14
    0640 E021      LDI	R18,1
    0641 E001      LDI	R16,1
    0642 DCDE      RCALL	_write_LCD
    0643 9543      INC	R20
    0644 304C      CPI	R20,0xC
    0645 F300      BCS	0x0626
(0453) 	}
(0454) 	SetPageCol(uPage+1,uCol);
    0646 2D2C      MOV	R18,R12
    0647 8109      LDD	R16,Y+1
    0648 5F0F      SUBI	R16,0xFF
    0649 DE47      RCALL	_SetPageCol
(0455) 
(0456) 	for(j=0;j<ASC_HZ_WIDTH;j++)
    064A 2744      CLR	R20
    064B C034      RJMP	0x0680
(0457) 	{
(0458) 		SetPageCol(uPage+1,uCol+j);
    064C 2D2C      MOV	R18,R12
    064D 0F24      ADD	R18,R20
    064E 8109      LDD	R16,Y+1
    064F 5F0F      SUBI	R16,0xFF
    0650 DE40      RCALL	_SetPageCol
(0459) 		if(uCol+j<64) ch_r=read_LCD(LEFT);
    0651 2D8C      MOV	R24,R12
    0652 0F84      ADD	R24,R20
    0653 3480      CPI	R24,0x40
    0654 F420      BCC	0x0659
    0655 2700      CLR	R16
    0656 DD1B      RCALL	_read_LCD
    0657 2F60      MOV	R22,R16
    0658 C003      RJMP	0x065C
(0460) 		else ch_r=read_LCD(RIGHT);
    0659 E001      LDI	R16,1
    065A DD17      RCALL	_read_LCD
    065B 2F60      MOV	R22,R16
(0461) 		ch_r&=0xf0;
    065C 7F60      ANDI	R22,0xF0
(0462) 		ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j]&0x0f; 
    065D E18A      LDI	R24,0x1A
    065E 9D8A      MUL	R24,R10
    065F 0110      MOVW	R2,R0
    0660 E584      LDI	R24,0x54
    0661 E092      LDI	R25,2
    0662 0E28      ADD	R2,R24
    0663 1E39      ADC	R3,R25
    0664 2FE4      MOV	R30,R20
    0665 27FF      CLR	R31
    0666 963C      ADIW	R30,0xC
    0667 0DE2      ADD	R30,R2
    0668 1DF3      ADC	R31,R3
    0669 91E4      LPM	R30,0(Z)
    066A 70EF      ANDI	R30,0xF
    066B 2EEE      MOV	R14,R30
(0463) 		ch_w|=ch_r;
    066C 2AE6      OR	R14,R22
(0464) 		SetPageCol(uPage+1,uCol+j);
    066D 2D2C      MOV	R18,R12
    066E 0F24      ADD	R18,R20
    066F 8109      LDD	R16,Y+1
    0670 5F0F      SUBI	R16,0xFF
    0671 DE1F      RCALL	_SetPageCol
(0465) 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
    0672 2D8C      MOV	R24,R12
    0673 0F84      ADD	R24,R20
    0674 3480      CPI	R24,0x40
    0675 F428      BCC	0x067B
    0676 82E8      STD	Y+0,R14
    0677 E021      LDI	R18,1
    0678 2700      CLR	R16
    0679 DCA7      RCALL	_write_LCD
    067A C004      RJMP	0x067F
(0466) 		else write_LCD(RIGHT,DATA,ch_w);
    067B 82E8      STD	Y+0,R14
    067C E021      LDI	R18,1
    067D E001      LDI	R16,1
    067E DCA2      RCALL	_write_LCD
    067F 9543      INC	R20
    0680 304C      CPI	R20,0xC
    0681 F408      BCC	0x0683
    0682 CFC9      RJMP	0x064C
(0467) 	}
(0468) 	SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
    0683 2D2C      MOV	R18,R12
    0684 5F24      SUBI	R18,0xF4
    0685 8109      LDD	R16,Y+1
    0686 DE0A      RCALL	_SetPageCol
(0469) 	}
    0687 C07F      RJMP	0x0707
(0470) 
(0471) 	else //汉字上半部是写半个字节
(0472) 	{
(0473) 	for(j=0;j<ASC_HZ_WIDTH;j++)
    0688 2744      CLR	R20
    0689 C033      RJMP	0x06BD
(0474) 	{
(0475) 		SetPageCol(uPage,uCol+j);
    068A 2D2C      MOV	R18,R12
    068B 0F24      ADD	R18,R20
    068C 8109      LDD	R16,Y+1
    068D DE03      RCALL	_SetPageCol
(0476) 		if(uCol+j<64) ch_r=read_LCD(LEFT);
    068E 2D8C      MOV	R24,R12
    068F 0F84      ADD	R24,R20
    0690 3480      CPI	R24,0x40
    0691 F420      BCC	0x0696
    0692 2700      CLR	R16
    0693 DCDE      RCALL	_read_LCD
    0694 2F60      MOV	R22,R16
    0695 C003      RJMP	0x0699
(0477) 		else ch_r=read_LCD(RIGHT);
    0696 E001      LDI	R16,1
    0697 DCDA      RCALL	_read_LCD
    0698 2F60      MOV	R22,R16
(0478) 		ch_r&=0x0f;
    0699 706F      ANDI	R22,0xF
(0479) 		ch_w=GB_16[k].Msk[j];
    069A E18A      LDI	R24,0x1A
    069B 9D8A      MUL	R24,R10
    069C 0110      MOVW	R2,R0
    069D E584      LDI	R24,0x54
    069E E092      LDI	R25,2
    069F 0E28      ADD	R2,R24
    06A0 1E39      ADC	R3,R25
    06A1 2FE4      MOV	R30,R20
    06A2 27FF      CLR	R31
    06A3 0DE2      ADD	R30,R2
    06A4 1DF3      ADC	R31,R3
    06A5 90E4      LPM	R14,0(Z)
(0480) 		ch_w=ch_w<<4;
    06A6 2D8E      MOV	R24,R14
    06A7 708F      ANDI	R24,0xF
    06A8 9582      SWAP	R24
    06A9 2EE8      MOV	R14,R24
(0481) 		ch_w|=ch_r;
    06AA 2AE6      OR	R14,R22
(0482) 		SetPageCol(uPage,uCol+j);
    06AB 2D2C      MOV	R18,R12
    06AC 0F24      ADD	R18,R20
    06AD 8109      LDD	R16,Y+1
    06AE DDE2      RCALL	_SetPageCol
(0483) 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
    06AF 2D8C      MOV	R24,R12
    06B0 0F84      ADD	R24,R20
    06B1 3480      CPI	R24,0x40
    06B2 F428      BCC	0x06B8
    06B3 82E8      STD	Y+0,R14
    06B4 E021      LDI	R18,1
    06B5 2700      CLR	R16
    06B6 DC6A      RCALL	_write_LCD
    06B7 C004      RJMP	0x06BC
(0484) 		else write_LCD(RIGHT,DATA,ch_w); 
    06B8 82E8      STD	Y+0,R14
    06B9 E021      LDI	R18,1
    06BA E001      LDI	R16,1
    06BB DC65      RCALL	_write_LCD
    06BC 9543      INC	R20
    06BD 304C      CPI	R20,0xC
    06BE F408      BCC	0x06C0
    06BF CFCA      RJMP	0x068A
(0485) 	}
(0486) 	SetPageCol(uPage+1,uCol);
    06C0 2D2C      MOV	R18,R12
    06C1 8109      LDD	R16,Y+1
    06C2 5F0F      SUBI	R16,0xFF
    06C3 DDCD      RCALL	_SetPageCol
(0487) 	for(j=0;j<ASC_HZ_WIDTH;j++)
    06C4 2744      CLR	R20
    06C5 C03A      RJMP	0x0700
(0488) 	{
(0489) 		SetPageCol(uPage+1,uCol+j);
    06C6 2D2C      MOV	R18,R12
    06C7 0F24      ADD	R18,R20
    06C8 8109      LDD	R16,Y+1
    06C9 5F0F      SUBI	R16,0xFF
    06CA DDC6      RCALL	_SetPageCol
(0490) 
(0491) 		ch_r=GB_16[k].Msk[j];
    06CB E18A      LDI	R24,0x1A

⌨️ 快捷键说明

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