📄 lcd_pcd8544.lss
字号:
lcd_pcd8544.elf: file format elf32-avr
Sections:
Idx Name Size VMA LMA File off Algn
0 .text 00000c72 00000000 00000000 00000074 2**1
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .bss 000001ff 00800060 00000c72 00000ce6 2**0
ALLOC
2 .debug_aranges 00000040 00000000 00000000 00000ce6 2**0
CONTENTS, READONLY, DEBUGGING
3 .debug_pubnames 000000e7 00000000 00000000 00000d26 2**0
CONTENTS, READONLY, DEBUGGING
4 .debug_info 00000b7b 00000000 00000000 00000e0d 2**0
CONTENTS, READONLY, DEBUGGING
5 .debug_abbrev 000003b7 00000000 00000000 00001988 2**0
CONTENTS, READONLY, DEBUGGING
6 .debug_line 00000a08 00000000 00000000 00001d3f 2**0
CONTENTS, READONLY, DEBUGGING
7 .debug_frame 00000110 00000000 00000000 00002748 2**2
CONTENTS, READONLY, DEBUGGING
8 .debug_str 000002e7 00000000 00000000 00002858 2**0
CONTENTS, READONLY, DEBUGGING
9 .debug_loc 000008f4 00000000 00000000 00002b3f 2**0
CONTENTS, READONLY, DEBUGGING
10 .debug_ranges 00000030 00000000 00000000 00003433 2**0
CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:
00000000 <__vectors>:
0: f9 c1 rjmp .+1010 ; 0x3f4 <__ctors_end>
2: 13 c2 rjmp .+1062 ; 0x42a <__bad_interrupt>
4: 12 c2 rjmp .+1060 ; 0x42a <__bad_interrupt>
6: 11 c2 rjmp .+1058 ; 0x42a <__bad_interrupt>
8: 10 c2 rjmp .+1056 ; 0x42a <__bad_interrupt>
a: 0f c2 rjmp .+1054 ; 0x42a <__bad_interrupt>
c: 0e c2 rjmp .+1052 ; 0x42a <__bad_interrupt>
e: 0d c2 rjmp .+1050 ; 0x42a <__bad_interrupt>
10: 0c c2 rjmp .+1048 ; 0x42a <__bad_interrupt>
12: 0b c2 rjmp .+1046 ; 0x42a <__bad_interrupt>
14: 0a c2 rjmp .+1044 ; 0x42a <__bad_interrupt>
16: 09 c2 rjmp .+1042 ; 0x42a <__bad_interrupt>
18: 08 c2 rjmp .+1040 ; 0x42a <__bad_interrupt>
1a: 07 c2 rjmp .+1038 ; 0x42a <__bad_interrupt>
1c: 06 c2 rjmp .+1036 ; 0x42a <__bad_interrupt>
1e: 05 c2 rjmp .+1034 ; 0x42a <__bad_interrupt>
20: 04 c2 rjmp .+1032 ; 0x42a <__bad_interrupt>
22: 03 c2 rjmp .+1030 ; 0x42a <__bad_interrupt>
24: 02 c2 rjmp .+1028 ; 0x42a <__bad_interrupt>
00000026 <waitImage>:
...
82: 00 c0 20 20 20 20 20 20 20 20 20 20 c0 00 00 00 .. ....
92: 00 00 00 00 00 00 f0 10 10 10 10 e0 00 00 f0 00 ................
a2: 00 80 40 40 40 80 00 00 80 40 40 40 80 00 00 80 ..@@@....@@@....
b2: 40 40 40 80 00 00 80 40 40 40 80 00 00 00 00 00 @@@....@@@......
...
d6: 00 0f 11 31 31 d1 f1 d1 d1 31 11 11 0f 00 00 00 ...11....1......
e6: 00 00 00 00 00 00 1f 01 01 01 01 00 00 00 1f 00 ................
f6: 00 0f 12 12 12 0b 00 00 0c 12 12 0a 1f 00 00 09 ................
106: 12 12 12 0c 00 00 0f 12 12 12 0b 00 00 00 00 00 ................
...
12a: 00 f0 18 86 86 e1 f1 e1 e1 86 18 18 f0 00 00 00 ................
...
142: 60 80 00 80 60 80 00 80 60 00 40 20 20 20 c0 00 `...`...`.@ ..
152: 00 e8 00 20 f8 20 00 00 00 00 00 00 00 00 00 00 ... . ..........
...
17e: 00 03 07 07 07 07 07 07 07 07 07 07 03 00 00 00 ................
...
196: 00 03 0c 03 00 03 0c 03 00 00 06 09 09 05 0f 00 ................
1a6: 00 0f 00 00 0f 08 00 00 00 00 08 00 00 08 00 00 ................
1b6: 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
0000021e <__c.1402>:
21e: 47 6f 74 6f 20 54 65 73 74 00 Goto Test.
00000228 <__c.1400>:
228: 54 65 73 74 00 Test.
0000022d <FontLookup>:
22d: 00 00 00 00 00 00 00 2f 00 00 00 07 00 07 00 14 ......./........
23d: 7f 14 7f 14 24 2a 7f 2a 12 c4 c8 10 26 46 36 49 ....$*.*....&F6I
24d: 55 22 50 00 05 03 00 00 00 1c 22 41 00 00 41 22 U"P......."A..A"
25d: 1c 00 14 08 3e 08 14 08 08 3e 08 08 00 00 50 30 ....>....>....P0
26d: 00 10 10 10 10 10 00 60 60 00 00 20 10 08 04 02 .......``.. ....
27d: 3e 51 49 45 3e 00 42 7f 40 00 42 61 51 49 46 21 >QIE>.B.@.BaQIF!
28d: 41 45 4b 31 18 14 12 7f 10 27 45 45 45 39 3c 4a AEK1.....'EEE9<J
29d: 49 49 30 01 71 09 05 03 36 49 49 49 36 06 49 49 II0.q...6III6.II
2ad: 29 1e 00 36 36 00 00 00 56 36 00 00 08 14 22 41 )..66...V6...."A
2bd: 00 14 14 14 14 14 00 41 22 14 08 02 01 51 09 06 .......A"....Q..
2cd: 32 49 59 51 3e 7e 11 11 11 7e 7f 49 49 49 36 3e 2IYQ>~...~.III6>
2dd: 41 41 41 22 7f 41 41 22 1c 7f 49 49 49 41 7f 09 AAA".AA"..IIIA..
2ed: 09 09 01 3e 41 49 49 7a 7f 08 08 08 7f 00 41 7f ...>AIIz......A.
2fd: 41 00 20 40 41 3f 01 7f 08 14 22 41 7f 40 40 40 A. @A?...."A.@@@
30d: 40 7f 02 0c 02 7f 7f 04 08 10 7f 3e 41 41 41 3e @..........>AAA>
31d: 7f 09 09 09 06 3e 41 51 21 5e 7f 09 19 29 46 46 .....>AQ!^...)FF
32d: 49 49 49 31 01 01 7f 01 01 3f 40 40 40 3f 1f 20 III1.....?@@@?.
33d: 40 20 1f 3f 40 38 40 3f 63 14 08 14 63 07 08 70 @ .?@8@?c...c..p
34d: 08 07 61 51 49 45 43 00 7f 41 41 00 55 2a 55 2a ..aQIEC..AA.U*U*
35d: 55 00 41 41 7f 00 04 02 01 02 04 40 40 40 40 40 U.AA.......@@@@@
36d: 00 01 02 04 00 20 54 54 54 78 7f 48 44 44 38 38 ..... TTTx.HDD88
37d: 44 44 44 20 38 44 44 48 7f 38 54 54 54 18 08 7e DDD 8DDH.8TTT..~
38d: 09 01 02 0c 52 52 52 3e 7f 08 04 04 78 00 44 7d ....RRR>....x.D}
39d: 40 00 20 40 44 3d 00 7f 10 28 44 00 00 41 7f 40 @. @D=...(D..A.@
3ad: 00 7c 04 18 04 78 7c 08 04 04 78 38 44 44 44 38 .|...x|...x8DDD8
3bd: 7c 14 14 14 08 08 14 14 18 7c 7c 08 04 04 08 48 |........||....H
3cd: 54 54 54 20 04 3f 44 40 20 3c 40 40 20 7c 1c 20 TTT .?D@ <@@ |.
3dd: 40 20 1c 3c 40 30 40 3c 44 28 10 28 44 0c 50 50 @ .<@0@<D(.(D.PP
3ed: 50 3c 44 64 54 4c 44 P<DdTLD
000003f4 <__ctors_end>:
3f4: 11 24 eor r1, r1
3f6: 1f be out 0x3f, r1 ; 63
3f8: cf e5 ldi r28, 0x5F ; 95
3fa: d4 e0 ldi r29, 0x04 ; 4
3fc: de bf out 0x3e, r29 ; 62
3fe: cd bf out 0x3d, r28 ; 61
00000400 <__do_copy_data>:
400: 10 e0 ldi r17, 0x00 ; 0
402: a0 e6 ldi r26, 0x60 ; 96
404: b0 e0 ldi r27, 0x00 ; 0
406: e2 e7 ldi r30, 0x72 ; 114
408: fc e0 ldi r31, 0x0C ; 12
40a: 02 c0 rjmp .+4 ; 0x410 <.do_copy_data_start>
0000040c <.do_copy_data_loop>:
40c: 05 90 lpm r0, Z+
40e: 0d 92 st X+, r0
00000410 <.do_copy_data_start>:
410: a0 36 cpi r26, 0x60 ; 96
412: b1 07 cpc r27, r17
414: d9 f7 brne .-10 ; 0x40c <.do_copy_data_loop>
00000416 <__do_clear_bss>:
416: 12 e0 ldi r17, 0x02 ; 2
418: a0 e6 ldi r26, 0x60 ; 96
41a: b0 e0 ldi r27, 0x00 ; 0
41c: 01 c0 rjmp .+2 ; 0x420 <.do_clear_bss_start>
0000041e <.do_clear_bss_loop>:
41e: 1d 92 st X+, r1
00000420 <.do_clear_bss_start>:
420: af 35 cpi r26, 0x5F ; 95
422: b1 07 cpc r27, r17
424: e1 f7 brne .-8 ; 0x41e <.do_clear_bss_loop>
426: 02 d0 rcall .+4 ; 0x42c <main>
428: 22 c4 rjmp .+2116 ; 0xc6e <_exit>
0000042a <__bad_interrupt>:
42a: ea cd rjmp .-1068 ; 0x0 <__vectors>
0000042c <main>:
#include "pcd8544.h"
#include "main.h"
int main()
{
42c: b0 d3 rcall .+1888 ; 0xb8e <LcdInit>
LcdInit();
//display image
LcdClear();
42e: 3d d0 rcall .+122 ; 0x4aa <LcdClear>
LcdImage(&waitImage); //see main.h
430: 86 e2 ldi r24, 0x26 ; 38
432: 90 e0 ldi r25, 0x00 ; 0
434: 27 d3 rcall .+1614 ; 0xa84 <LcdImage>
LcdUpdate();
436: 47 d3 rcall .+1678 ; 0xac6 <LcdUpdate>
438: 80 e5 ldi r24, 0x50 ; 80
43a: 93 ec ldi r25, 0xC3 ; 195
milliseconds can be achieved.
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
43c: 24 e6 ldi r18, 0x64 ; 100
43e: 30 e0 ldi r19, 0x00 ; 0
440: f9 01 movw r30, r18
442: 31 97 sbiw r30, 0x01 ; 1
444: f1 f7 brne .-4 ; 0x442 <main+0x16>
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
{
// wait 1/10 ms
_delay_loop_2(((F_CPU) / 4e3) / 10);
__ticks --;
446: 01 97 sbiw r24, 0x01 ; 1
__ticks = 1;
else if (__tmp > 65535)
{
// __ticks = requested delay in 1/10 ms
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
448: d9 f7 brne .-10 ; 0x440 <main+0x14>
_delay_ms(5000);
//display string
LcdClear();
44a: 2f d0 rcall .+94 ; 0x4aa <LcdClear>
LcdFStr(FONT_1X,PSTR("Test"));
44c: 68 e2 ldi r22, 0x28 ; 40
44e: 72 e0 ldi r23, 0x02 ; 2
450: 81 e0 ldi r24, 0x01 ; 1
452: 6f d1 rcall .+734 ; 0x732 <LcdFStr>
LcdGotoXYFont(1,3);
454: 63 e0 ldi r22, 0x03 ; 3
456: 81 e0 ldi r24, 0x01 ; 1
458: 3d d0 rcall .+122 ; 0x4d4 <LcdGotoXYFont>
LcdFStr(FONT_1X,PSTR("Goto Test"));
45a: 6e e1 ldi r22, 0x1E ; 30
45c: 72 e0 ldi r23, 0x02 ; 2
45e: 81 e0 ldi r24, 0x01 ; 1
460: 68 d1 rcall .+720 ; 0x732 <LcdFStr>
LcdUpdate();
462: 31 d3 rcall .+1634 ; 0xac6 <LcdUpdate>
464: 80 e5 ldi r24, 0x50 ; 80
466: 93 ec ldi r25, 0xC3 ; 195
468: 24 e6 ldi r18, 0x64 ; 100
46a: 30 e0 ldi r19, 0x00 ; 0
46c: f9 01 movw r30, r18
46e: 31 97 sbiw r30, 0x01 ; 1
470: f1 f7 brne .-4 ; 0x46e <__stack+0xf>
{
// wait 1/10 ms
_delay_loop_2(((F_CPU) / 4e3) / 10);
__ticks --;
472: 01 97 sbiw r24, 0x01 ; 1
__ticks = 1;
else if (__tmp > 65535)
{
// __ticks = requested delay in 1/10 ms
__ticks = (uint16_t) (__ms * 10.0);
while(__ticks)
474: d9 f7 brne .-10 ; 0x46c <__stack+0xd>
_delay_ms(5000);
return 0;
}
476: 80 e0 ldi r24, 0x00 ; 0
478: 90 e0 ldi r25, 0x00 ; 0
47a: 08 95 ret
0000047c <LcdContrast>:
* Description : Set display contrast.
* Argument(s) : contrast -> Contrast value from 0x00 to 0x7F.
* Return value : None.
*/
void LcdContrast ( byte contrast )
{
47c: 98 2f mov r25, r24
* Return value : None.
*/
static void LcdSend ( byte data, LcdCmdData cd )
{
/* Enable display controller (active low). */
LCD_PORT &= ~( _BV( LCD_CE_PIN ) );
47e: c2 98 cbi 0x18, 2 ; 24
{
LCD_PORT |= _BV( LCD_DC_PIN );
}
else
{
LCD_PORT &= ~( _BV( LCD_DC_PIN ) );
480: c0 98 cbi 0x18, 0 ; 24
}
/* Send data to display controller. */
SPDR = data;
482: 81 e2 ldi r24, 0x21 ; 33
484: 8f b9 out 0x0f, r24 ; 15
/* Wait until Tx register empty. */
while ( (SPSR & 0x80) != 0x80 );
486: 77 9b sbis 0x0e, 7 ; 14
488: fe cf rjmp .-4 ; 0x486 <LcdContrast+0xa>
/* Disable display controller. */
LCD_PORT |= _BV( LCD_CE_PIN );
48a: c2 9a sbi 0x18, 2 ; 24
{
/* LCD Extended Commands. */
LcdSend( 0x21, LCD_CMD );
/* Set LCD contrast level. */
LcdSend( 0x80 | contrast, LCD_CMD );
48c: 90 68 ori r25, 0x80 ; 128
* Return value : None.
*/
static void LcdSend ( byte data, LcdCmdData cd )
{
/* Enable display controller (active low). */
LCD_PORT &= ~( _BV( LCD_CE_PIN ) );
48e: c2 98 cbi 0x18, 2 ; 24
{
LCD_PORT |= _BV( LCD_DC_PIN );
}
else
{
LCD_PORT &= ~( _BV( LCD_DC_PIN ) );
490: c0 98 cbi 0x18, 0 ; 24
}
/* Send data to display controller. */
SPDR = data;
492: 9f b9 out 0x0f, r25 ; 15
/* Wait until Tx register empty. */
while ( (SPSR & 0x80) != 0x80 );
494: 77 9b sbis 0x0e, 7 ; 14
496: fe cf rjmp .-4 ; 0x494 <LcdContrast+0x18>
/* Disable display controller. */
LCD_PORT |= _BV( LCD_CE_PIN );
498: c2 9a sbi 0x18, 2 ; 24
* Return value : None.
*/
static void LcdSend ( byte data, LcdCmdData cd )
{
/* Enable display controller (active low). */
LCD_PORT &= ~( _BV( LCD_CE_PIN ) );
49a: c2 98 cbi 0x18, 2 ; 24
{
LCD_PORT |= _BV( LCD_DC_PIN );
}
else
{
LCD_PORT &= ~( _BV( LCD_DC_PIN ) );
49c: c0 98 cbi 0x18, 0 ; 24
}
/* Send data to display controller. */
SPDR = data;
49e: 80 e2 ldi r24, 0x20 ; 32
4a0: 8f b9 out 0x0f, r24 ; 15
/* Wait until Tx register empty. */
while ( (SPSR & 0x80) != 0x80 );
4a2: 77 9b sbis 0x0e, 7 ; 14
4a4: fe cf rjmp .-4 ; 0x4a2 <LcdContrast+0x26>
/* Disable display controller. */
LCD_PORT |= _BV( LCD_CE_PIN );
4a6: c2 9a sbi 0x18, 2 ; 24
/* Set LCD contrast level. */
LcdSend( 0x80 | contrast, LCD_CMD );
/* LCD Standard Commands, horizontal addressing mode. */
LcdSend( 0x20, LCD_CMD );
}
4a8: 08 95 ret
000004aa <LcdClear>:
* Argument(s) : None.
* Return value : None.
* Note : Based on Sylvain Bissonette's code
*/
void LcdClear ( void )
{
4aa: e0 e6 ldi r30, 0x60 ; 96
4ac: f0 e0 ldi r31, 0x00 ; 0
int i;
/* Set 0x00 to all LcdCache's contents */
for ( i = 0; i < LCD_CACHE_SIZE; i++ )
{
LcdCache[ i ] = 0x00;
4ae: 11 92 st Z+, r1
void LcdClear ( void )
{
int i;
/* Set 0x00 to all LcdCache's contents */
for ( i = 0; i < LCD_CACHE_SIZE; i++ )
4b0: 82 e0 ldi r24, 0x02 ; 2
4b2: e8 35 cpi r30, 0x58 ; 88
4b4: f8 07 cpc r31, r24
4b6: d9 f7 brne .-10 ; 0x4ae <LcdClear+0x4>
{
LcdCache[ i ] = 0x00;
}
/* Reset watermark pointers to full */
LoWaterMark = 0;
4b8: 10 92 5b 02 sts 0x025B, r1
4bc: 10 92 5a 02 sts 0x025A, r1
HiWaterMark = LCD_CACHE_SIZE - 1;
4c0: 87 ef ldi r24, 0xF7 ; 247
4c2: 91 e0 ldi r25, 0x01 ; 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -