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

📄 18lcd.lst

📁 atmega128 adc LCD
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0670 4F5F      SBCI	R21,0xFF
(0263) 			x ++;
    0671 94A3      INC	R10
(0264) 			i ++;
    0672 9563      INC	R22
(0265) 			if (x > 63) {				/*判断地址是否越界*/
    0673 E38F      LDI	R24,0x3F
    0674 158A      CP	R24,R10
    0675 F408      BCC	0x0677
(0266) 				break;
    0676 C002      RJMP	0x0679
    0677 3160      CPI	R22,0x10
    0678 F398      BCS	0x066C
(0267) 				}
(0268) 			}
(0269) 		}
(0270) 	if (i < 16) {						/*地址进入左半屏范围*/
    0679 3160      CPI	R22,0x10
    067A F488      BCC	0x068C
(0271) 		LCD1_write_com((y+1) | 0xB8);
    067B 2D0C      MOV	R16,R12
    067C 5F0F      SUBI	R16,0xFF
    067D 6B08      ORI	R16,0xB8
    067E DEC1      RCALL	_LCD1_write_com
(0272) 		LCD1_write_com(x | 0x40);
    067F 2D0A      MOV	R16,R10
    0680 6400      ORI	R16,0x40
    0681 DEBE      RCALL	_LCD1_write_com
    0682 C007      RJMP	0x068A
(0273) 		while (i < 16) {
(0274) 			LCD1_write_data(*q);
    0683 01FA      MOVW	R30,R20
    0684 9104      LPM	R16,0(Z)
    0685 DEDA      RCALL	_LCD1_write_data
(0275) 			q ++;
    0686 5F4F      SUBI	R20,0xFF
    0687 4F5F      SBCI	R21,0xFF
(0276) 			x ++;
    0688 94A3      INC	R10
(0277) 			i ++;
    0689 9563      INC	R22
    068A 3160      CPI	R22,0x10
    068B F3B8      BCS	0x0683
(0278) 			}
(0279) 		}
(0280) 	CSA_CLR;
    068C 98AF      CBI	0x15,7
(0281) 	CSB_CLR;
    068D 98AE      CBI	0x15,6
    068E 940E07C2  CALL	pop_gset4
    0690 9508      RET
_disp_char_str:
  str                  --> R20
  y                    --> R22
  x                    --> R10
    0691 940E07CC  CALL	push_gset3
    0693 2F62      MOV	R22,R18
    0694 2EA0      MOV	R10,R16
    0695 9721      SBIW	R28,1
    0696 814F      LDD	R20,Y+7
    0697 8558      LDD	R21,Y+8
(0282) }
(0283) 
(0284) /*显示一串字符*/
(0285) void disp_char_str(unsigned char x, unsigned char y, unsigned char *str) {
    0698 C00B      RJMP	0x06A4
(0286) 
(0287) 	while (*str != 0) {
(0288) 		disp_char(x, y, *str);
    0699 01FA      MOVW	R30,R20
    069A 8020      LDD	R2,Z+0
    069B 8228      STD	Y+0,R2
    069C 2F26      MOV	R18,R22
    069D 2D0A      MOV	R16,R10
    069E DF1D      RCALL	_disp_char
(0289) 		x += 8;
    069F 2D8A      MOV	R24,R10
    06A0 5F88      SUBI	R24,0xF8
    06A1 2EA8      MOV	R10,R24
(0290) 		str ++;
    06A2 5F4F      SUBI	R20,0xFF
    06A3 4F5F      SBCI	R21,0xFF
    06A4 01FA      MOVW	R30,R20
    06A5 8020      LDD	R2,Z+0
    06A6 2022      TST	R2
    06A7 F789      BNE	0x0699
    06A8 9621      ADIW	R28,1
    06A9 940E07BF  CALL	pop_gset3
    06AB 9508      RET
(0291) 		}
(0292) }
(0293) 
(0294) /*显示屏初始化函数*/
(0295) void disp_init(void) {
(0296) 	
(0297) 	DDRA = 0xFF;						/*I/O口方向设置*/
_disp_init:
    06AC EF8F      LDI	R24,0xFF
    06AD BB8A      OUT	0x1A,R24
(0298) 	DDRC = 0xFF;
    06AE BB84      OUT	0x14,R24
(0299) 
(0300) 	RST_CLR;
    06AF 98AD      CBI	0x15,5
(0301) 	delay_ms(10);
    06B0 E00A      LDI	R16,0xA
    06B1 DE6F      RCALL	_delay_ms
(0302) 	RST_SET;
    06B2 9AAD      SBI	0x15,5
(0303) 
(0304) 	LCD0_write_com(0xC0);				/*显示起行设置*/
    06B3 EC00      LDI	R16,0xC0
    06B4 DE7B      RCALL	_LCD0_write_com
(0305) 	LCD1_write_com(0xC0);
    06B5 EC00      LDI	R16,0xC0
    06B6 DE89      RCALL	_LCD1_write_com
(0306) 	
(0307) 	LCD0_write_com(0x3F);				/*开显示设置*/
    06B7 E30F      LDI	R16,0x3F
    06B8 DE77      RCALL	_LCD0_write_com
(0308) 	LCD1_write_com(0x3F);
    06B9 E30F      LDI	R16,0x3F
    06BA DE85      RCALL	_LCD1_write_com
    06BB 9508      RET
_disp_myself:
  q                    --> R20
  i                    --> R22
  ascii                --> Y+8
  y                    --> R12
  x                    --> R10
    06BC 940E07CA  CALL	push_gset4
    06BE 2EC2      MOV	R12,R18
    06BF 2EA0      MOV	R10,R16
(0309) }
(0310) 
(0311) /*在指定位置显示一个8*8的 字符*/
(0312) void disp_myself(unsigned char x, unsigned char y, unsigned char ascii) {
(0313) 
(0314) 	unsigned char i = 0x00;
    06C0 2766      CLR	R22
(0315) 	const unsigned char *q;				/*取字库指针*/
(0316) 	
(0317) 	
(0318) 	ascii -= 0x20;
    06C1 8588      LDD	R24,Y+8
    06C2 5280      SUBI	R24,0x20
    06C3 8788      STD	Y+8,R24
(0319) 	q = &ENGLISH_FONT[ascii *16];		/*定位指针地址*/
    06C4 E180      LDI	R24,0x10
    06C5 8408      LDD	R0,Y+8
    06C6 9D80      MUL	R24,R0
    06C7 01A0      MOVW	R20,R0
    06C8 E780      LDI	R24,0x70
    06C9 E090      LDI	R25,0
    06CA 0F48      ADD	R20,R24
    06CB 1F59      ADC	R21,R25
(0320) 
(0321) 	/*显示高8位*/	
(0322) 	i = 0x00;
(0323) 	if (x < 64) {						/*地址在左半屏范围内*/
    06CC 2D8A      MOV	R24,R10
    06CD 3480      CPI	R24,0x40
    06CE F4A0      BCC	0x06E3
(0324) 		LCD0_write_com(y | 0xB8);
    06CF 2D0C      MOV	R16,R12
    06D0 6B08      ORI	R16,0xB8
    06D1 DE5E      RCALL	_LCD0_write_com
(0325) 		LCD0_write_com(x | 0x40);
    06D2 2D0A      MOV	R16,R10
    06D3 6400      ORI	R16,0x40
    06D4 DE5B      RCALL	_LCD0_write_com
    06D5 C00B      RJMP	0x06E1
(0326) 		while (i < 8) {
(0327) 			LCD0_write_data(*q);
    06D6 01FA      MOVW	R30,R20
    06D7 9104      LPM	R16,0(Z)
    06D8 DE77      RCALL	_LCD0_write_data
(0328) 			q ++;
    06D9 5F4F      SUBI	R20,0xFF
    06DA 4F5F      SBCI	R21,0xFF
(0329) 			x ++;
    06DB 94A3      INC	R10
(0330) 			i ++;
    06DC 9563      INC	R22
(0331) 			if (x > 63) {				/*判断地址是否越界*/
    06DD E38F      LDI	R24,0x3F
    06DE 158A      CP	R24,R10
    06DF F408      BCC	0x06E1
(0332) 				break;
    06E0 C002      RJMP	0x06E3
    06E1 3068      CPI	R22,0x8
    06E2 F398      BCS	0x06D6
(0333) 				}
(0334) 			}
(0335) 		}
(0336) 	if (i < 8) {						/*地址进入左半屏范围*/
    06E3 3068      CPI	R22,0x8
    06E4 F480      BCC	0x06F5
(0337) 		LCD1_write_com(y | 0xB8);
    06E5 2D0C      MOV	R16,R12
    06E6 6B08      ORI	R16,0xB8
    06E7 DE58      RCALL	_LCD1_write_com
(0338) 		LCD1_write_com(x | 0x40);
    06E8 2D0A      MOV	R16,R10
    06E9 6400      ORI	R16,0x40
    06EA DE55      RCALL	_LCD1_write_com
    06EB C007      RJMP	0x06F3
(0339) 		while (i < 8) {
(0340) 			LCD1_write_data(*q);
    06EC 01FA      MOVW	R30,R20
    06ED 9104      LPM	R16,0(Z)
    06EE DE71      RCALL	_LCD1_write_data
(0341) 			q ++;
    06EF 5F4F      SUBI	R20,0xFF
    06F0 4F5F      SBCI	R21,0xFF
(0342) 			x ++;
    06F1 94A3      INC	R10
(0343) 			i ++;
    06F2 9563      INC	R22
    06F3 3068      CPI	R22,0x8
    06F4 F3B8      BCS	0x06EC
(0344) 			}
(0345) 		}
    06F5 940E07C2  CALL	pop_gset4
    06F7 9508      RET
_disp_to_bcd:
  f                    --> R14
  e                    --> R12
  b                    --> R10
  c                    --> R22
  a                    --> R20
  d                    --> R10
  x                    --> R22
    06F8 940E07C8  CALL	push_gset5
    06FA 01B8      MOVW	R22,R16
    06FB 9722      SBIW	R28,2
(0346) 		}
(0347) 	
(0348) 
(0349) void disp_to_bcd(int x){
(0350)      unsigned int a=x%10,b=x/10,c=b%10,d=b/10,e=d%10,f=d/10;
    06FC E02A      LDI	R18,0xA
    06FD E030      LDI	R19,0
    06FE 018B      MOVW	R16,R22
    06FF 940E0782  CALL	mod16s
    0701 01A8      MOVW	R20,R16
    0702 E02A      LDI	R18,0xA
    0703 E030      LDI	R19,0
    0704 018B      MOVW	R16,R22
    0705 940E0786  CALL	div16s
    0707 0158      MOVW	R10,R16
    0708 E02A      LDI	R18,0xA
    0709 E030      LDI	R19,0
    070A 940E07A0  CALL	mod16u
    070C 01B8      MOVW	R22,R16
    070D E02A      LDI	R18,0xA
    070E E030      LDI	R19,0
    070F 0185      MOVW	R16,R10
    0710 940E07A2  CALL	div16u
    0712 0158      MOVW	R10,R16
    0713 E02A      LDI	R18,0xA
    0714 E030      LDI	R19,0
    0715 940E07A0  CALL	mod16u
    0717 0168      MOVW	R12,R16
    0718 E02A      LDI	R18,0xA
    0719 E030      LDI	R19,0
    071A 0185      MOVW	R16,R10
    071B 940E07A2  CALL	div16u
    071D 0178      MOVW	R14,R16
(0351) 	 a+=48,c+=48,e+=48,f+=48;
    071E 5D40      SUBI	R20,0xD0
    071F 4F5F      SBCI	R21,0xFF
    0720 5D60      SUBI	R22,0xD0
    0721 4F7F      SBCI	R23,0xFF
    0722 01C6      MOVW	R24,R12
    0723 96C0      ADIW	R24,0x30
    0724 016C      MOVW	R12,R24
    0725 01C7      MOVW	R24,R14
    0726 96C0      ADIW	R24,0x30
    0727 017C      MOVW	R14,R24
(0352) 	 disp_char(40, 2, f);
    0728 82E8      STD	Y+0,R14
    0729 E022      LDI	R18,2
    072A E208      LDI	R16,0x28
    072B DE90      RCALL	_disp_char
(0353) 	 disp_char(48, 2, e);
    072C 82C8      STD	Y+0,R12
    072D E022      LDI	R18,2
    072E E300      LDI	R16,0x30
    072F DE8C      RCALL	_disp_char
(0354) 	 disp_char_str(56, 2, ".");
    0730 E084      LDI	R24,4
    0731 E091      LDI	R25,1
    0732 8399      STD	Y+1,R25
    0733 8388      STD	Y+0,R24
    0734 E022      LDI	R18,2
    0735 E308      LDI	R16,0x38
    0736 DF5A      RCALL	_disp_char_str
(0355) 	 disp_char(64, 2, c);
    0737 8368      STD	Y+0,R22
    0738 E022      LDI	R18,2
    0739 E400      LDI	R16,0x40
    073A DE81      RCALL	_disp_char
(0356) 	 disp_char(72, 2, a);
    073B 8348      STD	Y+0,R20
    073C E022      LDI	R18,2
    073D E408      LDI	R16,0x48
    073E DE7D      RCALL	_disp_char
(0357) 	 disp_char_str(80, 2, "V");
    073F E082      LDI	R24,2
    0740 E091      LDI	R25,1
    0741 8399      STD	Y+1,R25
    0742 8388      STD	Y+0,R24
    0743 E022      LDI	R18,2
    0744 E500      LDI	R16,0x50
    0745 DF4B      RCALL	_disp_char_str
(0358) 	 if(d<11||d==11&&c==0&&a==0){
    0746 01C5      MOVW	R24,R10
    0747 308B      CPI	R24,0xB
    0748 E0E0      LDI	R30,0
    0749 079E      CPC	R25,R30
    074A F050      BCS	0x0755
    074B 308B      CPI	R24,0xB
    074C E0E0      LDI	R30,0
    074D 079E      CPC	R25,R30
    074E F4D9      BNE	0x076A
    074F 3060      CPI	R22,0
    0750 0767      CPC	R22,R23
    0751 F4C1      BNE	0x076A
    0752 3040      CPI	R20,0
    0753 0745      CPC	R20,R21
    0754 F4A9      BNE	0x076A
(0359)      disp_word(32, 4, CB5E7);					/*写入“电压偏低”四个汉字*/
    0755 E086      LDI	R24,6
    0756 8388      STD	Y+0,R24
    0757 E024      LDI	R18,4
    0758 E200      LDI	R16,0x20
    0759 DECE      RCALL	_disp_word
(0360) 	 disp_word(48, 4, CD1B9);
    075A E087      LDI	R24,7
    075B 8388      STD	Y+0,R24
    075C E024      LDI	R18,4
    075D E300      LDI	R16,0x30
    075E DEC9      RCALL	_disp_word
(0361) 	 disp_word(64, 4, CC6AB);
    075F E08A      LDI	R24,0xA
    0760 8388      STD	Y+0,R24
    0761 E024      LDI	R18,4
    0762 E400      LDI	R16,0x40
    0763 DEC4      RCALL	_disp_word
(0362) 	 disp_word(80, 4, CB5CD);}
    0764 E08B      LDI	R24,0xB
    0765 8388      STD	Y+0,R24
    0766 E024      LDI	R18,4
    0767 E500      LDI	R16,0x50
    0768 DEBF      RCALL	_disp_word
    0769 C014      RJMP	0x077E
(0363) 	 else {
(0364) 	 disp_word(32, 4, CB5E7);					/*写入“电压正常”四个汉字*/
    076A E086      LDI	R24,6
    076B 8388      STD	Y+0,R24
    076C E024      LDI	R18,4
    076D E200      LDI	R16,0x20
    076E DEB9      RCALL	_disp_word
(0365) 	 disp_word(48, 4, CD1B9);
    076F E087      LDI	R24,7
    0770 8388      STD	Y+0,R24
    0771 E024      LDI	R18,4
    0772 E300      LDI	R16,0x30
    0773 DEB4      RCALL	_disp_word
(0366)      disp_word(64, 4, CD5ED);
    0774 E088      LDI	R24,0x8
    0775 8388      STD	Y+0,R24
    0776 E024      LDI	R18,4
    0777 E400      LDI	R16,0x40
    0778 DEAF      RCALL	_disp_word
(0367) 	 disp_word(80, 4, CB3A3); }
FILE: <library>
    0779 E089      LDI	R24,0x9
    077A 8388      STD	Y+0,R24
    077B E024      LDI	R18,4
    077C E500      LDI	R16,0x50
    077D DEAA      RCALL	_disp_word
    077E 9622      ADIW	R28,2
    077F 940E07C5  CALL	pop_gset5
    0781 9508      RET
mod16s:
    0782 9468      BSET	6
    0783 92DA      ST	R13,-Y
    0784 2ED1      MOV	R13,R17
    0785 C004      RJMP	0x078A
div16s:
    0786 94E8      BCLR	6
    0787 92DA      ST	R13,-Y
    0788 2ED1      MOV	R13,R17
    0789 26D3      EOR	R13,R19
    078A FF17      SBRS	R17,7
    078B C004      RJMP	0x0790
    078C 9510      COM	R17
    078D 9500      COM	R16
    078E 5F0F      SUBI	R16,0xFF
    078F 4F1F      SBCI	R17,0xFF
    0790 FF37      SBRS	R19,7
    0791 C004      RJMP	0x0796
    0792 9530      COM	R19
    0793 9520      COM	R18
    0794 5F2F      SUBI	R18,0xFF
    0795 4F3F      SBCI	R19,0xFF
    0796 940E07A3  CALL	xdiv16u
    0798 FED7      SBRS	R13,7
    0799 C004      RJMP	0x079E
    079A 9510      COM	R17
    079B 9500      COM	R16
    079C 5F0F      SUBI	R16,0xFF
    079D 4F1F      SBCI	R17,0xFF
    079E 90D9      LD	R13,Y+
    079F 9508      RET
mod16u:
    07A0 9468      BSET	6
    07A1 C001      RJMP	xdiv16u
div16u:
    07A2 94E8      BCLR	6
xdiv16u:
    07A3 92EA      ST	R14,-Y
    07A4 92FA      ST	R15,-Y
    07A5 938A      ST	R24,-Y
    07A6 24EE      CLR	R14
    07A7 24FF      CLR	R15
    07A8 E180      LDI	R24,0x10
    07A9 0F00      LSL	R16
    07AA 1F11      ROL	R17
    07AB 1CEE      ROL	R14
    07AC 1CFF      ROL	R15
    07AD 16E2      CP	R14,R18
    07AE 06F3      CPC	R15,R19
    07AF F018      BCS	0x07B3
    07B0 1AE2      SUB	R14,R18
    07B1 0AF3      SBC	R15,R19
    07B2 9503      INC	R16
    07B3 958A      DEC	R24
    07B4 F7A1      BNE	0x07A9
    07B5 F416      BRTC	0x07B8
    07B6 2D0E      MOV	R16,R14
    07B7 2D1F      MOV	R17,R15
    07B8 9189      LD	R24,Y+
    07B9 90F9      LD	R15,Y+
    07BA 90E9      LD	R14,Y+
    07BB 9508      RET
pop_gset2:
    07BC E0E2      LDI	R30,2
    07BD 940C07D4  JMP	pop
pop_gset3:
    07BF E0E4      LDI	R30,4
    07C0 940C07D4  JMP	pop
pop_gset4:
    07C2 E0E8      LDI	R30,0x8
    07C3 940C07D4  JMP	pop
pop_gset5:
    07C5 27EE      CLR	R30
    07C6 940C07D4  JMP	pop
push_gset5:
    07C8 92FA      ST	R15,-Y
    07C9 92EA      ST	R14,-Y
push_gset4:
    07CA 92DA      ST	R13,-Y
    07CB 92CA      ST	R12,-Y
push_gset3:
    07CC 92BA      ST	R11,-Y
    07CD 92AA      ST	R10,-Y
push_gset2:
    07CE 937A      ST	R23,-Y
    07CF 936A      ST	R22,-Y
push_gset1:
    07D0 935A      ST	R21,-Y
    07D1 934A      ST	R20,-Y
    07D2 9508      RET
pop_gset1:
    07D3 E0E1      LDI	R30,1
pop:
    07D4 9149      LD	R20,Y+
    07D5 9159      LD	R21,Y+
    07D6 FDE0      SBRC	R30,0
    07D7 9508      RET
    07D8 9169      LD	R22,Y+
    07D9 9179      LD	R23,Y+
    07DA FDE1      SBRC	R30,1
    07DB 9508      RET
    07DC 90A9      LD	R10,Y+
    07DD 90B9      LD	R11,Y+
    07DE FDE2      SBRC	R30,2
    07DF 9508      RET
    07E0 90C9      LD	R12,Y+
    07E1 90D9      LD	R13,Y+
    07E2 FDE3      SBRC	R30,3
    07E3 9508      RET
    07E4 90E9      LD	R14,Y+
    07E5 90F9      LD	R15,Y+
    07E6 9508      RET

⌨️ 快捷键说明

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