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

📄 lcd1602.lss

📁 AVR Devolpment Board
💻 LSS
字号:

lcd1602.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000001a2  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000022  00800060  000001a2  00000236  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000000  00800082  000001c4  00000258  2**0
                  ALLOC
  3 .noinit       00000000  00800082  00800082  00000258  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000258  2**0
                  CONTENTS
  5 .stab         0000036c  00000000  00000000  00000258  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000084  00000000  00000000  000005c4  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_aranges 00000014  00000000  00000000  00000648  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_pubnames 0000006d  00000000  00000000  0000065c  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_info   00000206  00000000  00000000  000006c9  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 0000010c  00000000  00000000  000008cf  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_line   000001c6  00000000  00000000  000009db  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_str    00000108  00000000  00000000  00000ba1  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54 <__ctors_end>
   4:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
   8:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
   c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  10:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  14:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  18:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  1c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  20:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  24:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  28:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  2c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  30:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  34:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  38:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  3c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  40:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  44:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  48:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  4c:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>
  50:	0c 94 45 00 	jmp	0x8a <__bad_interrupt>

00000054 <__ctors_end>:
  54:	11 24       	eor	r1, r1
  56:	1f be       	out	0x3f, r1	; 63
  58:	cf e5       	ldi	r28, 0x5F	; 95
  5a:	d4 e0       	ldi	r29, 0x04	; 4
  5c:	de bf       	out	0x3e, r29	; 62
  5e:	cd bf       	out	0x3d, r28	; 61

00000060 <__do_copy_data>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	e2 ea       	ldi	r30, 0xA2	; 162
  68:	f1 e0       	ldi	r31, 0x01	; 1
  6a:	02 c0       	rjmp	.+4      	; 0x70 <.do_copy_data_start>

0000006c <.do_copy_data_loop>:
  6c:	05 90       	lpm	r0, Z+
  6e:	0d 92       	st	X+, r0

00000070 <.do_copy_data_start>:
  70:	a2 38       	cpi	r26, 0x82	; 130
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	10 e0       	ldi	r17, 0x00	; 0
  78:	a2 e8       	ldi	r26, 0x82	; 130
  7a:	b0 e0       	ldi	r27, 0x00	; 0
  7c:	01 c0       	rjmp	.+2      	; 0x80 <.do_clear_bss_start>

0000007e <.do_clear_bss_loop>:
  7e:	1d 92       	st	X+, r1

00000080 <.do_clear_bss_start>:
  80:	a2 38       	cpi	r26, 0x82	; 130
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 ad 00 	jmp	0x15a <main>

0000008a <__bad_interrupt>:
  8a:	0c 94 00 00 	jmp	0x0 <__vectors>

0000008e <delay_ms>:
#define INDATA      PINB                  /*  Input data bus---PINB     */


void delay_ms(unsigned int ms)
{                           
  8e:	cf 93       	push	r28
  90:	df 93       	push	r29
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  92:	9c 01       	movw	r18, r24
  94:	21 50       	subi	r18, 0x01	; 1
  96:	30 40       	sbci	r19, 0x00	; 0
  98:	8f ef       	ldi	r24, 0xFF	; 255
  9a:	2f 3f       	cpi	r18, 0xFF	; 255
  9c:	38 07       	cpc	r19, r24
  9e:	69 f0       	breq	.+26     	; 0xba <delay_ms+0x2c>
  a0:	a0 ed       	ldi	r26, 0xD0	; 208
  a2:	b7 e0       	ldi	r27, 0x07	; 7
  a4:	c0 e0       	ldi	r28, 0x00	; 0
  a6:	d0 e0       	ldi	r29, 0x00	; 0
  a8:	cd 01       	movw	r24, r26
  aa:	01 97       	sbiw	r24, 0x01	; 1
  ac:	f1 f7       	brne	.-4      	; 0xaa <delay_ms+0x1c>
  ae:	21 50       	subi	r18, 0x01	; 1
  b0:	30 40       	sbci	r19, 0x00	; 0
  b2:	8f ef       	ldi	r24, 0xFF	; 255
  b4:	2f 3f       	cpi	r18, 0xFF	; 255
  b6:	38 07       	cpc	r19, r24
  b8:	b9 f7       	brne	.-18     	; 0xa8 <delay_ms+0x1a>
  ba:	df 91       	pop	r29
  bc:	cf 91       	pop	r28
  be:	08 95       	ret

000000c0 <lcd_busy>:
	while(ms--)
		_delay_ms(1);
}

unsigned char lcd_busy()
{                          
	unsigned char result;	
    CLR_RS();   /* RS = 0 , RW = 1 , read data from lcd */
  c0:	94 98       	cbi	0x12, 4	; 18
    SET_RW();
  c2:	95 9a       	sbi	0x12, 5	; 18
	DATA_IN();  /* Set the data bus as input */
  c4:	17 ba       	out	0x17, r1	; 23
	asm("nop"); /* After change the data bus direction , you must wait aT least one clock */
  c6:	00 00       	nop
	SET_EN();
  c8:	96 9a       	sbi	0x12, 6	; 18
    CLR_EN();
  ca:	96 98       	cbi	0x12, 6	; 18
	result = INDATA&0x80;	/* Check the MSB and */
  cc:	86 b3       	in	r24, 0x16	; 22
  ce:	80 78       	andi	r24, 0x80	; 128
	DATA_OUT();	            /* Set the data bus as output */
  d0:	9f ef       	ldi	r25, 0xFF	; 255
  d2:	97 bb       	out	0x17, r25	; 23
    return result;
} 
  d4:	99 27       	eor	r25, r25
  d6:	08 95       	ret

000000d8 <WriteCommand>:

void WriteCommand(unsigned char Command)
{
  d8:	cf 93       	push	r28
  da:	c8 2f       	mov	r28, r24
	while(lcd_busy());   /* Wait while the lcd is not busy */
  dc:	0e 94 60 00 	call	0xc0 <lcd_busy>
  e0:	88 23       	and	r24, r24
  e2:	e1 f7       	brne	.-8      	; 0xdc <WriteCommand+0x4>
	CLR_RS();            /* RS = 0 , RW = 0 , write command to lcd */
  e4:	94 98       	cbi	0x12, 4	; 18
	CLR_RW();
  e6:	95 98       	cbi	0x12, 5	; 18
	OUTDATA=Command;
  e8:	c8 bb       	out	0x18, r28	; 24
	SET_EN();
  ea:	96 9a       	sbi	0x12, 6	; 18
	CLR_EN();		
  ec:	96 98       	cbi	0x12, 6	; 18
  ee:	cf 91       	pop	r28
  f0:	08 95       	ret

000000f2 <WriteData>:
}

void WriteData(unsigned char Data)
{
  f2:	cf 93       	push	r28
  f4:	c8 2f       	mov	r28, r24
	while(lcd_busy());   /* Wait while the lcd is not busy */
  f6:	0e 94 60 00 	call	0xc0 <lcd_busy>
  fa:	88 23       	and	r24, r24
  fc:	e1 f7       	brne	.-8      	; 0xf6 <WriteData+0x4>
	SET_RS();            /* RS = 1 , RW = 0 , write data to lcd */
  fe:	94 9a       	sbi	0x12, 4	; 18
	CLR_RW();
 100:	95 98       	cbi	0x12, 5	; 18
	OUTDATA=Data;
 102:	c8 bb       	out	0x18, r28	; 24
	SET_EN();
 104:	96 9a       	sbi	0x12, 6	; 18
	CLR_EN();
 106:	96 98       	cbi	0x12, 6	; 18
 108:	cf 91       	pop	r28
 10a:	08 95       	ret

0000010c <Display>:
}

void Display(unsigned char x,unsigned char y,unsigned char *Data)
{
 10c:	cf 93       	push	r28
 10e:	df 93       	push	r29
 110:	ea 01       	movw	r28, r20
	if(x==0)
 112:	88 23       	and	r24, r24
 114:	19 f4       	brne	.+6      	; 0x11c <Display+0x10>
		WriteCommand(0x80+y);
 116:	86 2f       	mov	r24, r22
 118:	80 58       	subi	r24, 0x80	; 128
 11a:	04 c0       	rjmp	.+8      	; 0x124 <Display+0x18>
	if(x==1)
 11c:	81 30       	cpi	r24, 0x01	; 1
 11e:	21 f4       	brne	.+8      	; 0x128 <Display+0x1c>
		WriteCommand(0xC0+y);
 120:	86 2f       	mov	r24, r22
 122:	80 54       	subi	r24, 0x40	; 64
 124:	0e 94 6c 00 	call	0xd8 <WriteCommand>
	while(*Data!='\0')
	{
		WriteData(*Data);
		Data++;
 128:	88 81       	ld	r24, Y
 12a:	88 23       	and	r24, r24
 12c:	31 f0       	breq	.+12     	; 0x13a <Display+0x2e>
 12e:	89 91       	ld	r24, Y+
 130:	0e 94 79 00 	call	0xf2 <WriteData>
 134:	88 81       	ld	r24, Y
 136:	88 23       	and	r24, r24
 138:	d1 f7       	brne	.-12     	; 0x12e <Display+0x22>
 13a:	df 91       	pop	r29
 13c:	cf 91       	pop	r28
 13e:	08 95       	ret

00000140 <LCM_Init>:
	}
}

void LCM_Init()
{
    WriteCommand(0x38);
 140:	88 e3       	ldi	r24, 0x38	; 56
 142:	0e 94 6c 00 	call	0xd8 <WriteCommand>
	WriteCommand(0x0C);  
 146:	8c e0       	ldi	r24, 0x0C	; 12
 148:	0e 94 6c 00 	call	0xd8 <WriteCommand>
    WriteCommand(0x06);
 14c:	86 e0       	ldi	r24, 0x06	; 6
 14e:	0e 94 6c 00 	call	0xd8 <WriteCommand>
	WriteCommand(0x01);
 152:	81 e0       	ldi	r24, 0x01	; 1
 154:	0e 94 6c 00 	call	0xd8 <WriteCommand>
 158:	08 95       	ret

0000015a <main>:
}

int main(void)
{
 15a:	cf e5       	ldi	r28, 0x5F	; 95
 15c:	d4 e0       	ldi	r29, 0x04	; 4
 15e:	de bf       	out	0x3e, r29	; 62
 160:	cd bf       	out	0x3d, r28	; 61
	DDRD|=(1<<PD4)|(1<<PD5)|(1<<PD6);  /* Set RS , RW ,EN pin as output */
 162:	81 b3       	in	r24, 0x11	; 17
 164:	80 67       	ori	r24, 0x70	; 112
 166:	81 bb       	out	0x11, r24	; 17
	LCM_Init();                        /* Config the lcd */
 168:	0e 94 a0 00 	call	0x140 <LCM_Init>
	while(1)
	{
		Display(0,0,"Welcome To HUST!");
 16c:	40 e6       	ldi	r20, 0x60	; 96
 16e:	50 e0       	ldi	r21, 0x00	; 0
 170:	60 e0       	ldi	r22, 0x00	; 0
 172:	86 2f       	mov	r24, r22
 174:	0e 94 86 00 	call	0x10c <Display>
		delay_ms(2000);
 178:	80 ed       	ldi	r24, 0xD0	; 208
 17a:	97 e0       	ldi	r25, 0x07	; 7
 17c:	0e 94 47 00 	call	0x8e <delay_ms>
		WriteCommand(0x01);
 180:	81 e0       	ldi	r24, 0x01	; 1
 182:	0e 94 6c 00 	call	0xd8 <WriteCommand>
		Display(1,0,"0123456789ABCDEF");
 186:	41 e7       	ldi	r20, 0x71	; 113
 188:	50 e0       	ldi	r21, 0x00	; 0
 18a:	60 e0       	ldi	r22, 0x00	; 0
 18c:	81 e0       	ldi	r24, 0x01	; 1
 18e:	0e 94 86 00 	call	0x10c <Display>
		delay_ms(2000);
 192:	80 ed       	ldi	r24, 0xD0	; 208
 194:	97 e0       	ldi	r25, 0x07	; 7
 196:	0e 94 47 00 	call	0x8e <delay_ms>
		WriteCommand(0x01);
 19a:	81 e0       	ldi	r24, 0x01	; 1
 19c:	0e 94 6c 00 	call	0xd8 <WriteCommand>
 1a0:	e5 cf       	rjmp	.-54     	; 0x16c <main+0x12>

⌨️ 快捷键说明

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