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

📄 1602test.lss

📁 avr单片机编写的1602液晶显示屏程序
💻 LSS
📖 第 1 页 / 共 2 页
字号:

1602test.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000002c4  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000036  00800060  000002c4  00000338  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .stab         0000036c  00000000  00000000  00000370  2**2
                  CONTENTS, READONLY, DEBUGGING
  3 .stabstr      00000084  00000000  00000000  000006dc  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_aranges 00000020  00000000  00000000  00000760  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 000000b5  00000000  00000000  00000780  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   00000777  00000000  00000000  00000835  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 00000179  00000000  00000000  00000fac  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   000003b0  00000000  00000000  00001125  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  000000a0  00000000  00000000  000014d5  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    0000014f  00000000  00000000  00001575  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    00000273  00000000  00000000  000016c4  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 2a 00 	jmp	0x54	; 0x54 <__ctors_end>
   4:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
   8:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
   c:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  10:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  14:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  18:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  1c:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  20:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  24:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  28:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  2c:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  30:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  34:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  38:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  3c:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  40:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  44:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  48:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  4c:	0c 94 45 00 	jmp	0x8a	; 0x8a <__bad_interrupt>
  50:	0c 94 45 00 	jmp	0x8a	; 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:	e4 ec       	ldi	r30, 0xC4	; 196
  68:	f2 e0       	ldi	r31, 0x02	; 2
  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:	a6 39       	cpi	r26, 0x96	; 150
  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:	a6 e9       	ldi	r26, 0x96	; 150
  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:	a6 39       	cpi	r26, 0x96	; 150
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 24 01 	jmp	0x248	; 0x248 <main>

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

0000008e <LCD_write_en>:
	1、是写“命令”还是“数据”要看 LCD_ write函数中的 cmd 参数
		
-----------------------------------------------------*/
void LCD_write_en (void)
{
  8e:	c7 9a       	sbi	0x18, 7	; 24
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  90:	83 e0       	ldi	r24, 0x03	; 3
  92:	90 e0       	ldi	r25, 0x00	; 0
  94:	01 97       	sbiw	r24, 0x01	; 1
  96:	f1 f7       	brne	.-4      	; 0x94 <LCD_write_en+0x6>
void LCD_write_en (void)
{
	LCD_EN_PORT |=LCD_EN_H;
	wait_us(15);
	LCD_EN_PORT &=LCD_EN_L;
  98:	c7 98       	cbi	0x18, 7	; 24
  9a:	08 95       	ret

0000009c <LCD_waite>:
}

/*---------------------------------------------------
void LCD_write (uint8_t cmd ,uint8_t data);
说明:向LCD写
	 1、 cmd<>0 写命令 cmd为指令,data=0
	 2、 cmd=0   写数据 data 为数据	
-----------------------------------------------------*/
 void LCD_write(uint8_t cmd ,uint8_t data)
 {
	uint8_t cmd_temp,data_temp;
	cmd_temp = cmd;
	data_temp = data;
	LCD_waite();
	LCD_WR_PORT &=LCD_WR_L;
	LCD_DATA_PORT &= 0X0f;  
	if(cmd==0)
	{
		 LCD_RS_PORT |= LCD_RS_H;             //RS=1   
         LCD_DATA_PORT |= data_temp&0xf0;   //送数据的高 4bit  
	}
	else
	{
		 LCD_RS_PORT &= LCD_RS_L;             //RS=0  
         LCD_DATA_PORT |= cmd_temp&0xf0;   //送命令的高4bit  		
	};
	LCD_write_en();  
    LCD_DATA_PORT &= 0X0f;  
    cmd_temp=cmd_temp << 4;         //send low 4bit  
    data_temp=data_temp << 4;  
           
    if (cmd==0)  
        LCD_DATA_PORT |= data_temp&0xf0;  
    else  
        LCD_DATA_PORT |= cmd_temp&0xf0;
  
    LCD_write_en();  
    LCD_WR_PORT |= LCD_WR_H;  
    LCD_RS_PORT &= LCD_RS_L; 	
	
 }
 
 
 
/*----------------------------------------------------------
void LCD_waite (void)
说明:等待LCD不忙

------------------------------------------------------------*/ 
void LCD_waite (void)
{
  9c:	8f 98       	cbi	0x11, 7	; 17
    LCD_DATA_DDR &= ~0x80;                 //PA7 I/O口方向设置为输入    
    LCD_WR_PORT |= LCD_WR_H;                 //RW=1  
  9e:	c6 9a       	sbi	0x18, 6	; 24
    LCD_RS_PORT &= LCD_RS_L;                //RS=0  
  a0:	c5 98       	cbi	0x18, 5	; 24
    LCD_EN_PORT |= LCD_EN_H;                 //EN=1  
  a2:	c7 9a       	sbi	0x18, 7	; 24
    while (!( LCD_DATA_PIN&0x80 ) == 0);   //RW=1,读PD7,为0表示空闲;  
  a4:	87 99       	sbic	0x10, 7	; 16
  a6:	fe cf       	rjmp	.-4      	; 0xa4 <LCD_waite+0x8>
    LCD_EN_PORT &= LCD_EN_L;                //EN=0  
  a8:	c7 98       	cbi	0x18, 7	; 24
    LCD_DATA_DDR |= 0xf0; 
  aa:	81 b3       	in	r24, 0x11	; 17
  ac:	80 6f       	ori	r24, 0xF0	; 240
  ae:	81 bb       	out	0x11, r24	; 17
  b0:	08 95       	ret

000000b2 <LCD_write>:
  b2:	0f 93       	push	r16
  b4:	1f 93       	push	r17
  b6:	18 2f       	mov	r17, r24
  b8:	06 2f       	mov	r16, r22
  ba:	0e 94 4e 00 	call	0x9c	; 0x9c <LCD_waite>
  be:	c6 98       	cbi	0x18, 6	; 24
  c0:	82 b3       	in	r24, 0x12	; 18
  c2:	8f 70       	andi	r24, 0x0F	; 15
  c4:	82 bb       	out	0x12, r24	; 18
  c6:	11 23       	and	r17, r17
  c8:	81 f4       	brne	.+32     	; 0xea <LCD_write+0x38>
  ca:	c5 9a       	sbi	0x18, 5	; 24
  cc:	82 b3       	in	r24, 0x12	; 18
  ce:	90 2f       	mov	r25, r16
  d0:	90 7f       	andi	r25, 0xF0	; 240
  d2:	89 2b       	or	r24, r25
  d4:	82 bb       	out	0x12, r24	; 18
  d6:	0e 94 47 00 	call	0x8e	; 0x8e <LCD_write_en>
  da:	82 b3       	in	r24, 0x12	; 18
  dc:	8f 70       	andi	r24, 0x0F	; 15
  de:	82 bb       	out	0x12, r24	; 18
  e0:	82 b3       	in	r24, 0x12	; 18
  e2:	02 95       	swap	r16
  e4:	00 7f       	andi	r16, 0xF0	; 240
  e6:	80 2b       	or	r24, r16
  e8:	0f c0       	rjmp	.+30     	; 0x108 <LCD_write+0x56>
  ea:	c5 98       	cbi	0x18, 5	; 24
  ec:	82 b3       	in	r24, 0x12	; 18
  ee:	91 2f       	mov	r25, r17
  f0:	90 7f       	andi	r25, 0xF0	; 240
  f2:	89 2b       	or	r24, r25
  f4:	82 bb       	out	0x12, r24	; 18
  f6:	0e 94 47 00 	call	0x8e	; 0x8e <LCD_write_en>
  fa:	82 b3       	in	r24, 0x12	; 18
  fc:	8f 70       	andi	r24, 0x0F	; 15
  fe:	82 bb       	out	0x12, r24	; 18
 100:	82 b3       	in	r24, 0x12	; 18
 102:	12 95       	swap	r17
 104:	10 7f       	andi	r17, 0xF0	; 240
 106:	81 2b       	or	r24, r17
 108:	82 bb       	out	0x12, r24	; 18
 10a:	0e 94 47 00 	call	0x8e	; 0x8e <LCD_write_en>
 10e:	c6 9a       	sbi	0x18, 6	; 24
 110:	c5 98       	cbi	0x18, 5	; 24
 112:	1f 91       	pop	r17
 114:	0f 91       	pop	r16
 116:	08 95       	ret

00000118 <LCD_init>:
}

/*-------------------------------------------
void LCD_init(void)
说明:LCD初始化设置

---------------------------------------------*/
void LCD_init (void)
{
 118:	0f 93       	push	r16
 11a:	1f 93       	push	r17
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 11c:	84 ed       	ldi	r24, 0xD4	; 212
 11e:	90 e3       	ldi	r25, 0x30	; 48
 120:	01 97       	sbiw	r24, 0x01	; 1
 122:	f1 f7       	brne	.-4      	; 0x120 <LCD_init+0x8>
void LCD_init (void)
{
	_delay_ms(50);
	
	LCD_write(0x30,0); 
 124:	60 e0       	ldi	r22, 0x00	; 0
 126:	80 e3       	ldi	r24, 0x30	; 48
 128:	0e 94 59 00 	call	0xb2	; 0xb2 <LCD_write>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 12c:	8c ed       	ldi	r24, 0xDC	; 220
 12e:	95 e0       	ldi	r25, 0x05	; 5
 130:	01 97       	sbiw	r24, 0x01	; 1
 132:	f1 f7       	brne	.-4      	; 0x130 <LCD_init+0x18>
	_delay_ms(50);
	
	LCD_write(0x30,0); 
    _delay_ms(6); 
    LCD_write(0x30,0);       
 134:	60 e0       	ldi	r22, 0x00	; 0
 136:	80 e3       	ldi	r24, 0x30	; 48
 138:	0e 94 59 00 	call	0xb2	; 0xb2 <LCD_write>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 13c:	0a ef       	ldi	r16, 0xFA	; 250
 13e:	10 e0       	ldi	r17, 0x00	; 0
 140:	c8 01       	movw	r24, r16
 142:	01 97       	sbiw	r24, 0x01	; 1
 144:	f1 f7       	brne	.-4      	; 0x142 <LCD_init+0x2a>
	LCD_write(0x30,0); 
    _delay_ms(6); 
    LCD_write(0x30,0);       
    _delay_ms(1); 
    LCD_write(0x30,0);        
 146:	60 e0       	ldi	r22, 0x00	; 0
 148:	80 e3       	ldi	r24, 0x30	; 48
 14a:	0e 94 59 00 	call	0xb2	; 0xb2 <LCD_write>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 14e:	c8 01       	movw	r24, r16
 150:	01 97       	sbiw	r24, 0x01	; 1
 152:	f1 f7       	brne	.-4      	; 0x150 <LCD_init+0x38>
    LCD_write(0x30,0);       
    _delay_ms(1); 
    LCD_write(0x30,0);        
    _delay_ms(1); 
    LCD_write(0x02,0);                
 154:	60 e0       	ldi	r22, 0x00	; 0
 156:	82 e0       	ldi	r24, 0x02	; 2
 158:	0e 94 59 00 	call	0xb2	; 0xb2 <LCD_write>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 15c:	c8 01       	movw	r24, r16
 15e:	01 97       	sbiw	r24, 0x01	; 1
 160:	f1 f7       	brne	.-4      	; 0x15e <LCD_init+0x46>
    LCD_write(0x02,0);                
    _delay_ms(1);
	
	
	LCD_write(0x28,0);      //4bit Display  
 162:	60 e0       	ldi	r22, 0x00	; 0

⌨️ 快捷键说明

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