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

📄 lcm12832k.lst

📁 AVR单片机mega8上的lcm_12832液晶驱动程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
    00C1 DF81      RCALL	_delay
(0126) 	send_i(0x01);		//clr screen text
    00C2 E001      LDI	R16,1
    00C3 DFBA      RCALL	_send_i
(0127) 	delay(20);		//>10ms
    00C4 E104      LDI	R16,0x14
    00C5 E010      LDI	R17,0
    00C6 DF7C      RCALL	_delay
(0128) 	send_i(0x06);		//enter dot setup  06
    00C7 E006      LDI	R16,6
(0129) }
    00C8 CFB5      RJMP	_send_i
_putstring:
  j                    --> R20
  str                  --> R20
  addr                 --> R22
    00C9 D0BE      RCALL	push_gset2
    00CA 01A9      MOVW	R20,R18
    00CB 2F60      MOV	R22,R16
(0130) 
(0131) void putstring(uchar addr,uchar *str)
(0132) {
(0133) 	uchar j;
(0134) 	send_i(addr|0x80);
    00CC 2F06      MOV	R16,R22
    00CD 6800      ORI	R16,0x80
    00CE DFAF      RCALL	_send_i
(0135) 	for(j=0;j<3;j++)
    00CF 2744      CLR	R20
    00D0 C009      RJMP	0x00DA
(0136) 		{
(0137) 			send_d(exampl[j]);	
    00D1 E680      LDI	R24,0x60
    00D2 E090      LDI	R25,0
    00D3 2FE4      MOV	R30,R20
    00D4 27FF      CLR	R31
    00D5 0FE8      ADD	R30,R24
    00D6 1FF9      ADC	R31,R25
    00D7 8100      LDD	R16,Z+0
    00D8 DFB7      RCALL	_send_d
    00D9 9543      INC	R20
    00DA 3043      CPI	R20,3
    00DB F3A8      BCS	0x00D1
(0138) 		}
(0139) }
    00DC D090      RCALL	pop_gset2
    00DD 9508      RET
_locateXY:
  temp                 --> R20
  posy                 --> R22
  posx                 --> R20
    00DE D0A9      RCALL	push_gset2
    00DF 2F62      MOV	R22,R18
    00E0 2F40      MOV	R20,R16
(0140) 
(0141) /*=======================================================
(0142)  显示光标定位
(0143) =======================================================*/
(0144) 
(0145) void locateXY( uchar posx,uchar posy) {
(0146) 
(0147)     uchar temp;
(0148) 
(0149) 	temp = posx & 0xf;
    00E1 704F      ANDI	R20,0xF
(0150) 	posy &= 0x1;
    00E2 7061      ANDI	R22,1
(0151) 	if ( posy )temp |= 0x40;
    00E3 F009      BEQ	0x00E5
    00E4 6440      ORI	R20,0x40
(0152) 	temp |= 0x80;
    00E5 6840      ORI	R20,0x80
(0153) 	send_i(temp);
    00E6 2F04      MOV	R16,R20
    00E7 DF96      RCALL	_send_i
(0154) }
    00E8 D084      RCALL	pop_gset2
    00E9 9508      RET
_disponechar:
  wdata                --> Y+4
  y                    --> R22
  x                    --> R20
    00EA D09D      RCALL	push_gset2
    00EB 2F62      MOV	R22,R18
    00EC 2F40      MOV	R20,R16
(0155) 
(0156) /*=======================================================
(0157)  按指定位置显示数出一个字符
(0158) =======================================================*/
(0159) void disponechar(uchar x,uchar y,uchar wdata) {
(0160) 
(0161) 	locateXY( x, y );				// 定位显示地址
    00ED 2F26      MOV	R18,R22
    00EE 2F04      MOV	R16,R20
    00EF DFEE      RCALL	_locateXY
(0162) 	send_d( wdata );			// 写字符
    00F0 810C      LDD	R16,Y+4
    00F1 DF9E      RCALL	_send_d
(0163) }
    00F2 D07A      RCALL	pop_gset2
    00F3 9508      RET
_eputstr:
  l                    --> R20
  i                    --> R22
  ptr                  --> R10
  y                    --> R12
  x                    --> R14
    00F4 D09C      RCALL	push_gset5
    00F5 2EC2      MOV	R12,R18
    00F6 2EE0      MOV	R14,R16
    00F7 9721      SBIW	R28,1
    00F8 84AB      LDD	R10,Y+11
    00F9 84BC      LDD	R11,Y+12
(0164) 
(0165) /*=======================================================
(0166)  显示字符串
(0167) =======================================================*/
(0168) void eputstr(uchar x,uchar y, uchar *ptr) {
(0169)     uchar i,l=0;
    00FA 2744      CLR	R20
    00FB C001      RJMP	0x00FD
(0170) 	while (ptr[l] >31){l++;};
    00FC 9543      INC	R20
    00FD 2FE4      MOV	R30,R20
    00FE 27FF      CLR	R31
    00FF 0DEA      ADD	R30,R10
    0100 1DFB      ADC	R31,R11
    0101 8020      LDD	R2,Z+0
    0102 E18F      LDI	R24,0x1F
    0103 1582      CP	R24,R2
    0104 F3B8      BCS	0x00FC
(0171) 	for (i=0;i<l;i++) {
    0105 2766      CLR	R22
    0106 C014      RJMP	0x011B
(0172) 		disponechar(x++,y,ptr[i]);
    0107 2FE6      MOV	R30,R22
    0108 27FF      CLR	R31
    0109 0DEA      ADD	R30,R10
    010A 1DFB      ADC	R31,R11
    010B 8020      LDD	R2,Z+0
    010C 8228      STD	Y+0,R2
    010D 2D2C      MOV	R18,R12
    010E 2C2E      MOV	R2,R14
    010F 2D82      MOV	R24,R2
    0110 5F8F      SUBI	R24,0xFF
    0111 2EE8      MOV	R14,R24
    0112 2D02      MOV	R16,R2
    0113 DFD6      RCALL	_disponechar
(0173) 		if ( x == 16 ){
    0114 2D8E      MOV	R24,R14
    0115 3180      CPI	R24,0x10
    0116 F419      BNE	0x011A
(0174) 			x = 0; y ^= 1;
    0117 24EE      CLR	R14
    0118 E081      LDI	R24,1
    0119 26C8      EOR	R12,R24
    011A 9563      INC	R22
    011B 1764      CP	R22,R20
    011C F350      BCS	0x0107
(0175) 		}
(0176) 	}
(0177) }
    011D 9621      ADIW	R28,1
    011E D050      RCALL	pop_gset5
    011F 9508      RET
_main:
    0120 9722      SBIW	R28,2
(0178) 
(0179) void main(void)
(0180) {
(0181)    ledon();
    0121 DF18      RCALL	_ledon
(0182)    lcd_init();
    0122 DF8D      RCALL	_lcd_init
(0183)    delay(50);
    0123 E302      LDI	R16,0x32
    0124 E010      LDI	R17,0
    0125 DF1D      RCALL	_delay
(0184)    eputstr(0,0,exampl);		// 上面一行显示一个预定字符串
    0126 E680      LDI	R24,0x60
    0127 E090      LDI	R25,0
    0128 8399      STD	Y+1,R25
    0129 8388      STD	Y+0,R24
    012A 2722      CLR	R18
    012B 2700      CLR	R16
    012C DFC7      RCALL	_eputstr
(0185)    eputstr(0,0,exampl2);
    012D E685      LDI	R24,0x65
    012E E090      LDI	R25,0
    012F 8399      STD	Y+1,R25
    0130 8388      STD	Y+0,R24
    0131 2722      CLR	R18
    0132 2700      CLR	R16
    0133 DFC0      RCALL	_eputstr
(0186)    //putstring(0x80,exampl);
(0187)    delayus(500000);
    0134 E240      LDI	R20,0x20
    0135 EA51      LDI	R21,0xA1
    0136 E067      LDI	R22,7
    0137 E070      LDI	R23,0
    0138 2F04      MOV	R16,R20
    0139 DF2E      RCALL	_delayus
(0188)    delayus(500000);
    013A E240      LDI	R20,0x20
    013B EA51      LDI	R21,0xA1
    013C E067      LDI	R22,7
    013D E070      LDI	R23,0
    013E 2F04      MOV	R16,R20
    013F DF28      RCALL	_delayus
(0189)    delayus(500000);
    0140 E240      LDI	R20,0x20
    0141 EA51      LDI	R21,0xA1
    0142 E067      LDI	R22,7
    0143 E070      LDI	R23,0
    0144 2F04      MOV	R16,R20
    0145 DF22      RCALL	_delayus
(0190)    delayus(500000);
    0146 E240      LDI	R20,0x20
    0147 EA51      LDI	R21,0xA1
    0148 E067      LDI	R22,7
    0149 E070      LDI	R23,0
    014A 2F04      MOV	R16,R20
    014B DF1C      RCALL	_delayus
(0191)    delayus(500000);
    014C E240      LDI	R20,0x20
    014D EA51      LDI	R21,0xA1
    014E E067      LDI	R22,7
    014F E070      LDI	R23,0
    0150 2F04      MOV	R16,R20
    0151 DF16      RCALL	_delayus
(0192)    delayus(500000);
    0152 E240      LDI	R20,0x20
    0153 EA51      LDI	R21,0xA1
    0154 E067      LDI	R22,7
    0155 E070      LDI	R23,0
    0156 2F04      MOV	R16,R20
    0157 DF10      RCALL	_delayus
(0193)    delayus(500000);
    0158 E240      LDI	R20,0x20
    0159 EA51      LDI	R21,0xA1
    015A E067      LDI	R22,7
    015B E070      LDI	R23,0
    015C 2F04      MOV	R16,R20
    015D DF0A      RCALL	_delayus
(0194)    delayus(500000);
    015E E240      LDI	R20,0x20
    015F EA51      LDI	R21,0xA1
    0160 E067      LDI	R22,7
    0161 E070      LDI	R23,0
    0162 2F04      MOV	R16,R20
    0163 DF04      RCALL	_delayus
(0195) 
(0196)    ledoff();
    0164 DEDA      RCALL	_ledoff
(0197)    DDRD = 0xff;
    0165 EF8F      LDI	R24,0xFF
    0166 BB81      OUT	0x11,R24
(0198)    PORTD = 0;
    0167 2422      CLR	R2
    0168 BA22      OUT	0x12,R2
(0199)    wait();
    0169 DF04      RCALL	_wait
(0200)    while(1);
    016A CFFF      RJMP	0x016A
(0201) }
FILE: <library>
    016B 9622      ADIW	R28,2
    016C 9508      RET
pop_gset2:
    016D E0E2      LDI	R30,2
    016E C006      RJMP	pop
pop_gset5:
    016F 27EE      CLR	R30
    0170 C004      RJMP	pop
push_gset1:
    0171 935A      ST	R21,-Y
    0172 934A      ST	R20,-Y
    0173 9508      RET
pop_gset1:
    0174 E0E1      LDI	R30,1
pop:
    0175 9149      LD	R20,Y+
    0176 9159      LD	R21,Y+
    0177 FDE0      SBRC	R30,0
    0178 9508      RET
    0179 9169      LD	R22,Y+
    017A 9179      LD	R23,Y+
    017B FDE1      SBRC	R30,1
    017C 9508      RET
    017D 90A9      LD	R10,Y+
    017E 90B9      LD	R11,Y+
    017F FDE2      SBRC	R30,2
    0180 9508      RET
    0181 90C9      LD	R12,Y+
    0182 90D9      LD	R13,Y+
    0183 FDE3      SBRC	R30,3
    0184 9508      RET
    0185 90E9      LD	R14,Y+
    0186 90F9      LD	R15,Y+
    0187 9508      RET
push_gset2:
    0188 937A      ST	R23,-Y
    0189 936A      ST	R22,-Y
    018A CFE6      RJMP	push_gset1
push_gset3:
    018B 92BA      ST	R11,-Y
    018C 92AA      ST	R10,-Y
    018D CFFA      RJMP	push_gset2
push_gset4:
    018E 92DA      ST	R13,-Y
    018F 92CA      ST	R12,-Y
    0190 CFFA      RJMP	push_gset3
push_gset5:
    0191 92FA      ST	R15,-Y
    0192 92EA      ST	R14,-Y
    0193 CFFA      RJMP	push_gset4

⌨️ 快捷键说明

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