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

📄 lcd12864_3wires.lst

📁 IC为ST7920的12864LCD
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0689 C00B      RJMP	0x0695
(0452) 		{
(0453) 			 W_1byte(0,1,*Draw++);	//
    068A 0117      MOVW	R2,R14
    068B 01C1      MOVW	R24,R2
    068C 9601      ADIW	R24,1
    068D 017C      MOVW	R14,R24
    068E 01F1      MOVW	R30,R2
    068F 91E4      LPM	R30,0(Z)
    0690 83E8      STD	Y+0,R30
    0691 E021      LDI	R18,1
    0692 2700      CLR	R16
    0693 DF24      RCALL	_W_1byte
    0694 94C3      INC	R12
    0695 2D8C      MOV	R24,R12
    0696 3180      CPI	R24,0x10
    0697 F390      BCS	0x068A
    0698 94A3      INC	R10
    0699 2D8A      MOV	R24,R10
    069A 3280      CPI	R24,0x20
    069B F310      BCS	0x067E
(0454) 		}
(0455) 	}
(0456) 	
(0457) 	temp_x = 0x88;					//
    069C E868      LDI	R22,0x88
(0458) 	temp_y = 0x80;					//
    069D E840      LDI	R20,0x80
(0459) 	j = 0; 	 						//
    069E 24CC      CLR	R12
(0460) 	for(;i<64;i++ )
    069F C01B      RJMP	0x06BB
(0461) 	{
(0462) 		W_1byte(0,0,temp_y++);		//设置绘图区的Y地址坐标
    06A0 2E24      MOV	R2,R20
    06A1 5F4F      SUBI	R20,0xFF
    06A2 8228      STD	Y+0,R2
    06A3 2722      CLR	R18
    06A4 2700      CLR	R16
    06A5 DF12      RCALL	_W_1byte
(0463) 		W_1byte(0,0,temp_x);	 	//设置绘图区的X地址坐标
    06A6 8368      STD	Y+0,R22
    06A7 2722      CLR	R18
    06A8 2700      CLR	R16
    06A9 DF0E      RCALL	_W_1byte
(0464) 		for(j=0;j<16;j++)
    06AA 24CC      CLR	R12
    06AB C00B      RJMP	0x06B7
(0465) 		{
(0466) 			 W_1byte(0,1,*Draw++);	//
    06AC 0117      MOVW	R2,R14
    06AD 01C1      MOVW	R24,R2
    06AE 9601      ADIW	R24,1
    06AF 017C      MOVW	R14,R24
    06B0 01F1      MOVW	R30,R2
    06B1 91E4      LPM	R30,0(Z)
    06B2 83E8      STD	Y+0,R30
    06B3 E021      LDI	R18,1
    06B4 2700      CLR	R16
    06B5 DF02      RCALL	_W_1byte
    06B6 94C3      INC	R12
    06B7 2D8C      MOV	R24,R12
    06B8 3180      CPI	R24,0x10
    06B9 F390      BCS	0x06AC
    06BA 94A3      INC	R10
    06BB 2D8A      MOV	R24,R10
    06BC 3480      CPI	R24,0x40
    06BD F310      BCS	0x06A0
    06BE 9621      ADIW	R28,1
    06BF 940E074D  CALL	pop_gset5
    06C1 9508      RET
_Set_White:
  clr_y                --> R14
  clr_x                --> R10
  white_y              --> R22
  white_x              --> Y+2
  i                    --> R20
  white_end_x          --> Y+1
  j                    --> R12
  clear                --> Y+15
  end_x                --> Y+13
  y                    --> R12
  x                    --> R20
    06C2 940E0750  CALL	push_gset5
    06C4 2EC2      MOV	R12,R18
    06C5 2F40      MOV	R20,R16
    06C6 9723      SBIW	R28,3
(0467) 		}
(0468) 	}
(0469)  	 
(0470) }
(0471) /**************************************************/
(0472) /**************************************************/
(0473) void Set_White(uchar x,uchar y,uchar end_x,uchar clear)
(0474) {
(0475)  	uchar i, j, white_x, white_y,white_end_x,clr_x,clr_y;		//
(0476) 	white_end_x = (end_x-x+1);
    06C7 858D      LDD	R24,Y+13
    06C8 1B84      SUB	R24,R20
    06C9 5F8F      SUBI	R24,0xFF
    06CA 8389      STD	Y+1,R24
(0477) 	white_end_x <<= 1;
    06CB 2E28      MOV	R2,R24
    06CC 0C22      LSL	R2
    06CD 8229      STD	Y+1,R2
(0478) 	if(y==1)
    06CE 2D8C      MOV	R24,R12
    06CF 3081      CPI	R24,1
    06D0 F449      BNE	0x06DA
(0479) 	{
(0480) 	 	white_x = (0x80+x-1);
    06D1 2F84      MOV	R24,R20
    06D2 5880      SUBI	R24,0x80
    06D3 5081      SUBI	R24,1
    06D4 838A      STD	Y+2,R24
(0481) 		white_y = 0x80;
    06D5 E860      LDI	R22,0x80
(0482) 		clr_x = 0x80;
    06D6 E880      LDI	R24,0x80
    06D7 2EA8      MOV	R10,R24
(0483) 		clr_y = 0x80;
    06D8 2EE8      MOV	R14,R24
(0484) 	}
    06D9 C026      RJMP	0x0700
(0485) 	else if(y==2)
    06DA 2D8C      MOV	R24,R12
    06DB 3082      CPI	R24,2
    06DC F451      BNE	0x06E7
(0486) 	{
(0487) 	 	white_x = (0x80+x-1);
    06DD 2F84      MOV	R24,R20
    06DE 5880      SUBI	R24,0x80
    06DF 5081      SUBI	R24,1
    06E0 838A      STD	Y+2,R24
(0488) 		white_y = 0x90;
    06E1 E960      LDI	R22,0x90
(0489) 		clr_x = 0x80;
    06E2 E880      LDI	R24,0x80
    06E3 2EA8      MOV	R10,R24
(0490) 		clr_y = 0x90;
    06E4 E980      LDI	R24,0x90
    06E5 2EE8      MOV	R14,R24
(0491) 	}
    06E6 C019      RJMP	0x0700
(0492) 	else if(y==3)
    06E7 2D8C      MOV	R24,R12
    06E8 3083      CPI	R24,3
    06E9 F451      BNE	0x06F4
(0493) 	{
(0494) 	 	white_x = (0x88+x-1);
    06EA 2F84      MOV	R24,R20
    06EB 5788      SUBI	R24,0x78
    06EC 5081      SUBI	R24,1
    06ED 838A      STD	Y+2,R24
(0495) 		white_y = 0x80;
    06EE E860      LDI	R22,0x80
(0496) 		clr_x = 0x88;
    06EF E888      LDI	R24,0x88
    06F0 2EA8      MOV	R10,R24
(0497) 		clr_y = 0x80;
    06F1 E880      LDI	R24,0x80
    06F2 2EE8      MOV	R14,R24
(0498) 	}
    06F3 C00C      RJMP	0x0700
(0499) 	else if(y==4)
    06F4 2D8C      MOV	R24,R12
    06F5 3084      CPI	R24,4
    06F6 F449      BNE	0x0700
(0500) 	{
(0501) 	 	white_x = (0x88+x-1);
    06F7 2F84      MOV	R24,R20
    06F8 5788      SUBI	R24,0x78
    06F9 5081      SUBI	R24,1
    06FA 838A      STD	Y+2,R24
(0502) 		white_y = 0x90;
    06FB E960      LDI	R22,0x90
(0503) 		clr_x = 0x88;
    06FC E888      LDI	R24,0x88
    06FD 2EA8      MOV	R10,R24
(0504) 		clr_y = 0x90;
    06FE E980      LDI	R24,0x90
    06FF 2EE8      MOV	R14,R24
(0505) 	}
(0506) 	if(clear==0)//要反白时,先将整行的液晶全部清成不反白(此处行指y)
    0700 840F      LDD	R0,Y+15
    0701 2000      TST	R0
    0702 F4E9      BNE	0x0720
(0507) 	{
(0508) 	 	for(i=0;i<16;i++ )			//16行
    0703 2744      CLR	R20
    0704 C019      RJMP	0x071E
(0509) 		{
(0510) 		 	W_1byte(0,0,clr_y++);	//设置绘图区的Y地址坐标0
    0705 2C2E      MOV	R2,R14
    0706 2D82      MOV	R24,R2
    0707 5F8F      SUBI	R24,0xFF
    0708 2EE8      MOV	R14,R24
    0709 8228      STD	Y+0,R2
    070A 2722      CLR	R18
    070B 2700      CLR	R16
    070C DEAB      RCALL	_W_1byte
(0511) 			W_1byte(0,0,clr_x);		//设置绘图区的X地址坐标0
    070D 82A8      STD	Y+0,R10
    070E 2722      CLR	R18
    070F 2700      CLR	R16
    0710 DEA7      RCALL	_W_1byte
(0512) 			for(j=0;j<16;j++)		//
    0711 24CC      CLR	R12
    0712 C007      RJMP	0x071A
(0513) 			{
(0514) 			 	W_1byte(0,1,0x00);	//清成不反白
    0713 2422      CLR	R2
    0714 8228      STD	Y+0,R2
    0715 E021      LDI	R18,1
    0716 2700      CLR	R16
    0717 DEA0      RCALL	_W_1byte
(0515) 			 	nop();
    0718 0000      NOP
    0719 94C3      INC	R12
    071A 2D8C      MOV	R24,R12
    071B 3180      CPI	R24,0x10
    071C F3B0      BCS	0x0713
    071D 9543      INC	R20
    071E 3140      CPI	R20,0x10
    071F F328      BCS	0x0705
(0516) 			}
(0517) 		}
(0518) 	}
(0519) 	nop();
    0720 0000      NOP
(0520) 	for(i=0;i<16;i++ )				//16行,因为是16*16汉字
    0721 2744      CLR	R20
    0722 C021      RJMP	0x0744
(0521) 	{
(0522) 		W_1byte(0,0,white_y++);		//设置绘图区的Y地址坐标0
    0723 2E26      MOV	R2,R22
    0724 5F6F      SUBI	R22,0xFF
    0725 8228      STD	Y+0,R2
    0726 2722      CLR	R18
    0727 2700      CLR	R16
    0728 DE8F      RCALL	_W_1byte
(0523) 		W_1byte(0,0,white_x);		//设置绘图区的X地址坐标0
    0729 800A      LDD	R0,Y+2
    072A 8208      STD	Y+0,R0
    072B 2722      CLR	R18
    072C 2700      CLR	R16
    072D DE8A      RCALL	_W_1byte
(0524) 		for(j=0;j<white_end_x;j++)	//
    072E 24CC      CLR	R12
    072F C010      RJMP	0x0740
(0525) 		{
(0526) 			 if(clear==1)
    0730 858F      LDD	R24,Y+15
    0731 3081      CPI	R24,1
    0732 F431      BNE	0x0739
(0527) 			 {
(0528) 			  	W_1byte(0,1,0x00); //取消这一行的8个点的反白,液晶地址自动加1
    0733 2422      CLR	R2
    0734 8228      STD	Y+0,R2
    0735 E021      LDI	R18,1
    0736 2700      CLR	R16
    0737 DE80      RCALL	_W_1byte
(0529) 								   //(此处行指一个一个液晶点所组成的行)
(0530) 			 }
    0738 C005      RJMP	0x073E
(0531) 			 else
(0532) 			 {
(0533) 				W_1byte(0,1,0xff); //反白这一行的8个点,液晶地址自动加1
    0739 EF8F      LDI	R24,0xFF
    073A 8388      STD	Y+0,R24
    073B E021      LDI	R18,1
    073C 2700      CLR	R16
    073D DE7A      RCALL	_W_1byte
(0534) 								   //(此处行指一个一个液晶点所组成的行)
(0535) 			 }
(0536) 			 nop();
FILE: <library>
    073E 0000      NOP
    073F 94C3      INC	R12
    0740 8009      LDD	R0,Y+1
    0741 14C0      CP	R12,R0
    0742 F368      BCS	0x0730
    0743 9543      INC	R20
    0744 3140      CPI	R20,0x10
    0745 F2E8      BCS	0x0723
    0746 9623      ADIW	R28,3
    0747 940E074D  CALL	pop_gset5
    0749 9508      RET
pop_gset3:
    074A E0E4      LDI	R30,4
    074B 940C075C  JMP	pop
pop_gset5:
    074D 27EE      CLR	R30
    074E 940C075C  JMP	pop
push_gset5:
    0750 92FA      ST	R15,-Y
    0751 92EA      ST	R14,-Y
push_gset4:
    0752 92DA      ST	R13,-Y
    0753 92CA      ST	R12,-Y
push_gset3:
    0754 92BA      ST	R11,-Y
    0755 92AA      ST	R10,-Y
push_gset2:
    0756 937A      ST	R23,-Y
    0757 936A      ST	R22,-Y
push_gset1:
    0758 935A      ST	R21,-Y
    0759 934A      ST	R20,-Y
    075A 9508      RET
pop_gset1:
    075B E0E1      LDI	R30,1
pop:
    075C 9149      LD	R20,Y+
    075D 9159      LD	R21,Y+
    075E FDE0      SBRC	R30,0
    075F 9508      RET
    0760 9169      LD	R22,Y+
    0761 9179      LD	R23,Y+
    0762 FDE1      SBRC	R30,1
    0763 9508      RET
    0764 90A9      LD	R10,Y+
    0765 90B9      LD	R11,Y+
    0766 FDE2      SBRC	R30,2
    0767 9508      RET
    0768 90C9      LD	R12,Y+
    0769 90D9      LD	R13,Y+
    076A FDE3      SBRC	R30,3
    076B 9508      RET
    076C 90E9      LD	R14,Y+
    076D 90F9      LD	R15,Y+
    076E 9508      RET
lsl16:
    076F 2322      TST	R18
    0770 F021      BEQ	0x0775
    0771 0F00      LSL	R16
    0772 1F11      ROL	R17
    0773 952A      DEC	R18
    0774 CFFA      RJMP	lsl16
    0775 9508      RET

⌨️ 快捷键说明

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