📄 lcd.lst
字号:
124:lcd.c **** _delay_us(1); //tEL
125:lcd.c ****
126:lcd.c **** SET_E();
178 /../avr/include/util/delay.h",132,0,0,.Ltext9
179 .Ltext9:
181 .LM13:
182 mov r25,r18
183 /* #APP */
184 1: dec r25
185 brne 1b
186 /* #NOAPP */
187 .LBE73:
188 .LBE72:
189 0032 922F .LBE71:
190 .LBE70:
192 0036 01F4 .Ltext10:
194 .LM14:
195 in r25,51-0x20
196 .LBB74:
197 .LBB75:
198 .LBB76:
199 .LBB77:
127:lcd.c **** _delay_us(0.5);
128:lcd.c ****
129:lcd.c **** temp=LCD_DATA_PIN;
200 /../avr/include/util/delay.h",132,0,0,.Ltext11
201 .Ltext11:
203 .LM15:
204 mov r25,r18
205 /* #APP */
206 1: dec r25
207 brne 1b
208 /* #NOAPP */
209 .LBE77:
210 .LBE76:
211 003a 922F .LBE75:
212 .LBE74:
214 003e 01F4 .Ltext12:
216 .LM16:
217 cbi 50-0x20,7
218 .LBB78:
219 .LBB79:
220 .LBB80:
221 .LBB81:
130:lcd.c **** temp&=0x0F;
131:lcd.c ****
132:lcd.c **** status=status|temp;
133:lcd.c ****
134:lcd.c **** busy=status & 0b10000000;
135:lcd.c ****
136:lcd.c **** _delay_us(0.5);
137:lcd.c **** CLEAR_E();
222 /../avr/include/util/delay.h",132,0,0,.Ltext13
223 .Ltext13:
225 .LM17:
226 mov r25,r19
227 /* #APP */
228 1: dec r25
229 brne 1b
230 /* #NOAPP */
231 .LBE81:
232 .LBE80:
233 0042 932F .LBE79:
234 .LBE78:
236 0046 01F4 .Ltext14:
238 .LM18:
239 sbrc r24,7
240 rjmp .L2
242 .LM19:
243 cbi 50-0x20,5
138:lcd.c **** _delay_us(1); //tEL
139:lcd.c **** }while(busy);
244 -LCDBusyLoop
245 .LM20:
246 0048 87FD in r24,52-0x20
247 004a 00C0 ori r24,lo8(15)
140:lcd.c ****
141:lcd.c **** CLEAR_RW(); //write mode
248 52-0x20,r24
249 /* epilogue: frame size=0 */
250 004c 9598 ret
142:lcd.c **** //Change Port to output
143:lcd.c **** LCD_DATA_DDR|=0x0F;
251 epilogue end (size=1) */
252 /* function LCDBusyLoop size 57 (56) */
279 .Lscope0:
283 .global LCDByte
285 LCDByte:
287 .LM21:
288 /* prologue: frame size=0 */
289 /* prologue end (size=0) */
290 mov r18,r24
292 .LM22:
293 tst r22
294 brne .L8
296 .LM23:
297 0056 282F cbi 50-0x20,6
298 rjmp .L10
299 .L8:
301 005a 01F4 .LM24:
302 sbi 50-0x20,6
303 .L10:
304 005c 9698 .LBB82:
305 005e 00C0 .LBB83:
306 .LBB84:
307 .LBB85:
309 0060 969A .Ltext15:
311 .LM25:
312 ldi r24,lo8(1)
313 /* #APP */
314 1: dec r24
315 brne 1b
316 /* #NOAPP */
317 .LBE85:
318 .LBE84:
319 0062 81E0 .LBE83:
320 .LBE82:
322 0066 01F4 .Ltext16:
324 .LM26:
325 sbi 50-0x20,7
327 .LM27:
328 in r24,53-0x20
329 andi r24,lo8(-16)
330 mov r25,r18
331 swap r25
332 0068 979A andi r25,0x0f
333 or r24,r25
335 006a 85B3 .LM28:
336 006c 807F out 53-0x20,r24
337 006e 922F .LBB86:
338 0070 9295 .LBB87:
339 0072 9F70 .LBB88:
340 0074 892B .LBB89:
342 .Ltext17:
344 .LM29:
345 ldi r25,lo8(2)
346 mov r24,r25
347 /* #APP */
348 1: dec r24
349 brne 1b
350 /* #NOAPP */
351 .LBE89:
352 0078 92E0 .LBE88:
353 007a 892F .LBE87:
354 .LBE86:
356 007e 01F4 .Ltext18:
358 .LM30:
359 cbi 50-0x20,7
360 .LBB90:
361 .LBB91:
362 .LBB92:
363 .LBB93:
365 .Ltext19:
367 .LM31:
368 mov r24,r25
369 /* #APP */
370 1: dec r24
371 brne 1b
372 /* #NOAPP */
373 .LBE93:
374 .LBE92:
375 0082 892F .LBE91:
376 .LBE90:
378 0086 01F4 .Ltext20:
380 .LM32:
381 sbi 50-0x20,7
383 .LM33:
384 in r24,53-0x20
385 andi r24,lo8(-16)
386 andi r18,lo8(15)
387 or r24,r18
389 .LM34:
390 out 53-0x20,r24
391 008a 85B3 .LBB94:
392 008c 807F .LBB95:
393 008e 2F70 .LBB96:
394 0090 822B .LBB97:
396 .Ltext21:
398 .LM35:
399 mov r24,r25
400 /* #APP */
401 1: dec r24
402 brne 1b
403 /* #NOAPP */
404 .LBE97:
405 .LBE96:
406 0094 892F .LBE95:
407 .LBE94:
409 0098 01F4 .Ltext22:
411 .LM36:
412 cbi 50-0x20,7
413 .LBB98:
414 .LBB99:
415 .LBB100:
416 .LBB101:
418 .Ltext23:
420 .LM37:
421 /* #APP */
422 1: dec r25
423 brne 1b
424 /* #NOAPP */
425 .LBE101:
426 .LBE100:
427 .LBE99:
428 .LBE98:
430 009e 01F4 .Ltext24:
432 .LM38:
433 call LCDBusyLoop
434 /* epilogue: frame size=0 */
435 ret
436 /* epilogue end (size=1) */
437 /* function LCDByte size 50 (49) */
454 .Lscope1:
457 .global LCDWriteString
459 LCDWriteString:
461 .LM39:
462 /* prologue: frame size=0 */
463 push r28
464 push r29
465 /* prologue end (size=2) */
466 movw r28,r24
144:lcd.c ****
145:lcd.c **** }
146:lcd.c ****
147:lcd.c **** void InitLCD(uint8_t style)
148:lcd.c **** {
149:lcd.c **** /*****************************************************************
150:lcd.c ****
151:lcd.c **** This function Initializes the lcd module
152:lcd.c **** must be called before calling lcd related functions
153:lcd.c ****
154:lcd.c **** Arguments:
155:lcd.c **** style = LS_BLINK,LS_ULINE(can be "OR"ed for combination)
156:lcd.c **** LS_BLINK :The cursor is blinking type
157:lcd.c **** LS_ULINE :Cursor is "underline" type else "block" type
158:lcd.c ****
159:lcd.c **** *****************************************************************/
160:lcd.c ****
161:lcd.c **** //After power on Wait for LCD to Initialize
162:lcd.c **** _delay_ms(30);
163:lcd.c ****
164:lcd.c **** //Set IO Ports
165:lcd.c **** LCD_DATA_DDR|=(0x0F);
166:lcd.c **** LCD_E_DDR|=(1<<LCD_E_POS);
167:lcd.c **** LCD_RS_DDR|=(1<<LCD_RS_POS);
168:lcd.c **** LCD_RW_DDR|=(1<<LCD_RW_POS);
169:lcd.c **** LCD_DATA_PORT&=0XF0;
170:lcd.c ****
171:lcd.c ****
172:lcd.c **** CLEAR_E();
173:lcd.c **** CLEAR_RW();
174:lcd.c **** CLEAR_RS();
175:lcd.c ****
176:lcd.c **** //Set 4-bit mode
177:lcd.c **** _delay_us(0.3); //tAS
178:lcd.c ****
179:lcd.c **** SET_E();
180:lcd.c **** LCD_DATA_PORT|=(0b00000010); //[B] To transfer 0b00100000 i was using LCD_DATA_PORT|=0b00100000
181:lcd.c **** _delay_us(1);
182:lcd.c **** CLEAR_E();
183:lcd.c **** _delay_us(1);
184:lcd.c ****
185:lcd.c **** //Wait for LCD to execute the Functionset Command
186:lcd.c **** LCDBusyLoop(); //[B] Forgot this delay
187:lcd.c ****
188:lcd.c **** //Now the LCD is in 4-bit mode
189:lcd.c ****
190:lcd.c **** LCDCmd(0b00001100|style); //Display On
191:lcd.c **** LCDCmd(0b00101000); //function set 4-bit,2 line 5x7 dot format
192:lcd.c **** }
193:lcd.c **** void LCDWriteString(const char *msg)
194:lcd.c **** {
467 L14:
469 .LM40:
470 00a6 CF93 ldi r22,lo8(1)
471 00a8 DF93 call LCDByte
473 00aa EC01 .LM41:
474 00ac 00C0 adiw r28,1
475 .L13:
195:lcd.c **** /*****************************************************************
196:lcd.c ****
197:lcd.c **** This function Writes a given string to lcd at the current cursor
198:lcd.c **** location.
199:lcd.c ****
200:lcd.c **** Arguments:
201:lcd.c **** msg: a null terminated string to print
202:lcd.c ****
203:lcd.c ****
204:lcd.c **** *****************************************************************/
205:lcd.c **** while(*msg!='\0')
206:lcd.c **** {
207:lcd.c **** LCDData(*msg);
476 8,0,205,.LM42-LCDWriteString
477 .LM42:
478 00ae 61E0 ld r24,Y
479 00b0 0E94 0000 tst r24
208:lcd.c **** msg++;
480 e .L14
481 /* epilogue: frame size=0 */
482 00b4 2196 pop r29
483 pop r28
484 ret
485 /* epilogue end (size=3) */
486 00b6 8881 /* function LCDWriteString size 14 (9) */
488 00ba 01F4 .Lscope2:
492 00c0 0895 .global LCDWriteInt
494 LCDWriteInt:
496 .LM43:
497 /* prologue: frame size=5 */
498 push r14
499 push r15
500 push r16
501 push r17
502 push r28
209:lcd.c **** }
210:lcd.c **** }
211:lcd.c ****
212:lcd.c **** void LCDWriteInt(int val,unsigned int field_length)
213:lcd.c **** {
503 L__
504 in r29,__SP_H__
505 sbiw r28,5
506 00c2 EF92 in __tmp_reg__,__SREG__
507 00c4 FF92 cli
508 00c6 0F93 out __SP_H__,r29
509 00c8 1F93 out __SREG__,__tmp_reg__
510 00ca CF93 out __SP_L__,r28
511 00cc DF93 /* prologue end (size=14) */
512 00ce CDB7 movw r18,r24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -