?? lcd.lst
字號:
258 0034 82E3 ldi r24,lo8(50)
259 0036 90E0 ldi r25,hi8(50)
260 0038 0E94 0000 call delay
262 .LM9:
263 003c AA9A sbi 53-0x20,2
265 .LM10:
266 003e 82E3 ldi r24,lo8(50)
267 0040 90E0 ldi r25,hi8(50)
268 0042 0E94 0000 call delay
270 .LM11:
271 0046 AA98 cbi 53-0x20,2
273 .LM12:
274 0048 1150 subi r17,lo8(-(-1))
275 004a 2196 adiw r28,1
276 004c 17FF sbrs r17,7
277 004e E5CF rjmp .L41
278 /* epilogue: frame size=0 */
279 0050 DF91 pop r29
280 0052 CF91 pop r28
281 0054 1F91 pop r17
282 0056 0F91 pop r16
283 0058 0895 ret
284 /* epilogue end (size=5) */
285 /* function write_byte size 40 (31) */
290 .Lscope1:
293 .global write_command
295 write_command:
55:APP1/lcd.c **** for(j=0;j<10;j++)
56:APP1/lcd.c **** ;
57:APP1/lcd.c **** }
58:APP1/lcd.c **** /************************命令寫入函數***************************/
59:APP1/lcd.c **** void write_command(unsigned char command) //寫命令
60:APP1/lcd.c **** {
297 .LM13:
298 /* prologue: frame size=0 */
299 005a 1F93 push r17
300 /* prologue end (size=1) */
301 005c 182F mov r17,r24
61:APP1/lcd.c **** SET_CS;
303 .LM14:
304 005e A89A sbi 53-0x20,0
62:APP1/lcd.c **** write_byte(0xF8); //發送S_ID
306 .LM15:
307 0060 88EF ldi r24,lo8(-8)
308 0062 0E94 0000 call write_byte
63:APP1/lcd.c **** write_byte(command&0xF0); //發送H_data
310 .LM16:
311 0066 812F mov r24,r17
312 0068 807F andi r24,lo8(-16)
313 006a 0E94 0000 call write_byte
64:APP1/lcd.c **** write_byte((command&0x0F)<<4); //發送L_data
315 .LM17:
316 006e 812F mov r24,r17
317 0070 8295 swap r24
318 0072 807F andi r24,0xf0
319 0074 0E94 0000 call write_byte
65:APP1/lcd.c **** CLR_CS;
321 .LM18:
322 0078 A898 cbi 53-0x20,0
323 /* epilogue: frame size=0 */
324 007a 1F91 pop r17
325 007c 0895 ret
326 /* epilogue end (size=2) */
327 /* function write_command size 18 (15) */
329 .Lscope2:
332 .global write_data
334 write_data:
66:APP1/lcd.c **** }
67:APP1/lcd.c **** /************************數據寫入函數***************************/
68:APP1/lcd.c **** void write_data(unsigned char Data) //寫數據
69:APP1/lcd.c **** {
336 .LM19:
337 /* prologue: frame size=0 */
338 007e 1F93 push r17
339 /* prologue end (size=1) */
340 0080 182F mov r17,r24
70:APP1/lcd.c **** SET_CS;
342 .LM20:
343 0082 A89A sbi 53-0x20,0
71:APP1/lcd.c **** write_byte(0xFA); //發送S_ID
345 .LM21:
346 0084 8AEF ldi r24,lo8(-6)
347 0086 0E94 0000 call write_byte
72:APP1/lcd.c **** write_byte(Data&0xF0); //發送H_data
349 .LM22:
350 008a 812F mov r24,r17
351 008c 807F andi r24,lo8(-16)
352 008e 0E94 0000 call write_byte
73:APP1/lcd.c **** write_byte((Data&0x0F)<<4); //發送L_data
354 .LM23:
355 0092 812F mov r24,r17
356 0094 8295 swap r24
357 0096 807F andi r24,0xf0
358 0098 0E94 0000 call write_byte
74:APP1/lcd.c **** CLR_CS;
360 .LM24:
361 009c A898 cbi 53-0x20,0
362 /* epilogue: frame size=0 */
363 009e 1F91 pop r17
364 00a0 0895 ret
365 /* epilogue end (size=2) */
366 /* function write_data size 18 (15) */
368 .Lscope3:
370 .global LCD_Init
372 LCD_Init:
75:APP1/lcd.c **** }
76:APP1/lcd.c **** /************************LCD初始化函數***************************/
77:APP1/lcd.c **** void LCD_Init(void) //LCD初始化
78:APP1/lcd.c **** {
374 .LM25:
375 /* prologue: frame size=0 */
376 /* prologue end (size=0) */
79:APP1/lcd.c **** DDRC|=0X07;
378 .LM26:
379 00a2 84B3 in r24,52-0x20
380 00a4 8760 ori r24,lo8(7)
381 00a6 84BB out 52-0x20,r24
80:APP1/lcd.c **** delay(200);
383 .LM27:
384 00a8 88EC ldi r24,lo8(200)
385 00aa 90E0 ldi r25,hi8(200)
386 00ac 0E94 0000 call delay
81:APP1/lcd.c **** write_command(0x30); //功能設置 8位數據,基本指令集
388 .LM28:
389 00b0 80E3 ldi r24,lo8(48)
390 00b2 0E94 0000 call write_command
82:APP1/lcd.c **** delay(10);
392 .LM29:
393 00b6 8AE0 ldi r24,lo8(10)
394 00b8 90E0 ldi r25,hi8(10)
395 00ba 0E94 0000 call delay
83:APP1/lcd.c **** write_command(0x0C); //顯示狀態 ON,游標OFF,反白OFF
397 .LM30:
398 00be 8CE0 ldi r24,lo8(12)
399 00c0 0E94 0000 call write_command
84:APP1/lcd.c **** delay(10);
401 .LM31:
402 00c4 8AE0 ldi r24,lo8(10)
403 00c6 90E0 ldi r25,hi8(10)
404 00c8 0E94 0000 call delay
85:APP1/lcd.c **** write_command(0x01); //清除顯示
406 .LM32:
407 00cc 81E0 ldi r24,lo8(1)
408 00ce 0E94 0000 call write_command
86:APP1/lcd.c **** delay(500);
410 .LM33:
411 00d2 84EF ldi r24,lo8(500)
412 00d4 91E0 ldi r25,hi8(500)
413 00d6 0E94 0000 call delay
87:APP1/lcd.c **** write_command(0x02); //地址歸位
415 .LM34:
416 00da 82E0 ldi r24,lo8(2)
417 00dc 0E94 0000 call write_command
88:APP1/lcd.c **** write_command(0x80); //設置DDRAM地址
419 .LM35:
420 00e0 80E8 ldi r24,lo8(-128)
421 00e2 0E94 0000 call write_command
89:APP1/lcd.c **** write_command(0x01); //清除顯示
423 .LM36:
424 00e6 81E0 ldi r24,lo8(1)
425 00e8 0E94 0000 call write_command
426 /* epilogue: frame size=0 */
427 00ec 0895 ret
428 /* epilogue end (size=1) */
429 /* function LCD_Init size 38 (37) */
431 .Lscope4:
436 .global display_str
438 display_str:
90:APP1/lcd.c **** }
91:APP1/lcd.c **** /************************字符串打印函數***************************/
92:APP1/lcd.c **** void display_str(unsigned char row,unsigned char column,unsigned char *p)
93:APP1/lcd.c **** {
440 .LM37:
441 /* prologue: frame size=0 */
442 00ee 0F93 push r16
443 00f0 1F93 push r17
444 00f2 CF93 push r28
445 00f4 DF93 push r29
446 /* prologue end (size=4) */
447 00f6 182F mov r17,r24
448 00f8 062F mov r16,r22
449 00fa EA01 movw r28,r20
94:APP1/lcd.c **** write_command(0x30);
451 .LM38:
452 00fc 80E3 ldi r24,lo8(48)
453 00fe 0E94 0000 call write_command
454 .LBB2:
95:APP1/lcd.c **** //write_command(adress_table[row*8+column]);
96:APP1/lcd.c **** write_command(pgm_read_byte(adress_table+row*8+column));
456 .LM39:
457 0102 E12F mov r30,r17
458 0104 FF27 clr r31
459 0106 83E0 ldi r24,3
460 0108 EE0F 1: lsl r30
461 010a FF1F rol r31
462 010c 8A95 dec r24
463 010e E1F7 brne 1b
464 0110 E00F add r30,r16
465 0112 F11D adc r31,__zero_reg__
466 0114 E050 subi r30,lo8(-(adress_table))
467 0116 F040 sbci r31,hi8(-(adress_table))
468 /* #APP */
469 0118 8491 lpm r24, Z
470
471 /* #NOAPP */
472 .LBE2:
473 011a 0E94 0000 call write_command
97:APP1/lcd.c **** while((*p)!='\0')
98:APP1/lcd.c **** {write_data(*p++);
99:APP1/lcd.c **** column++;
475 .LM40:
476 011e 8881 ld r24,Y
477 0120 8823 tst r24
478 0122 31F0 breq .L52
479 .L50:
481 .LM41:
482 0124 8991 ld r24,Y+
483 0126 0E94 0000 call write_data
485 .LM42:
486 012a 8881 ld r24,Y
487 012c 8823 tst r24
488 012e D1F7 brne .L50
489 .L52:
490 /* epilogue: frame size=0 */
491 0130 DF91 pop r29
492 0132 CF91 pop r28
493 0134 1F91 pop r17
494 0136 0F91 pop r16
495 0138 0895 ret
496 /* epilogue end (size=5) */
497 /* function display_str size 41 (32) */
502 .Lscope5:
507 .global display_1str
509 display_1str:
100:APP1/lcd.c **** }
101:APP1/lcd.c **** }
102:APP1/lcd.c **** void display_1str(unsigned char row,unsigned char column,unsigned char p)
103:APP1/lcd.c **** {
511 .LM43:
512 /* prologue: frame size=0 */
513 013a FF92 push r15
514 013c 0F93 push r16
515 013e 1F93 push r17
516 /* prologue end (size=3) */
517 0140 182F mov r17,r24
518 0142 062F mov r16,r22
519 0144 F42E mov r15,r20
104:APP1/lcd.c **** write_command(0x30);
521 .LM44:
522 0146 80E3 ldi r24,lo8(48)
523 0148 0E94 0000 call write_command
524 .LBB3:
105:APP1/lcd.c **** write_command(pgm_read_byte(adress_table+row*8+column));
526 .LM45:
527 014c E12F mov r30,r17
528 014e FF27 clr r31
529 0150 93E0 ldi r25,3
530 0152 EE0F 1: lsl r30
531 0154 FF1F rol r31
532 0156 9A95 dec r25
533 0158 E1F7 brne 1b
534 015a E00F add r30,r16
535 015c F11D adc r31,__zero_reg__
536 015e E050 subi r30,lo8(-(adress_table))
537 0160 F040 sbci r31,hi8(-(adress_table))
538 /* #APP */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -