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

📄 lcd_pcd8544.lss

📁 Nokia 6110 LCD 驱动 Atmega8
💻 LSS
📖 第 1 页 / 共 5 页
字号:

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 + -