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

📄 main.lss

📁 avr单片机1602液晶程序
💻 LSS
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000014e  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000020  00800060  0000014e  000001c2  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .stab         0000036c  00000000  00000000  000001e4  2**2
                  CONTENTS, READONLY, DEBUGGING
  3 .stabstr      00000084  00000000  00000000  00000550  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_aranges 00000020  00000000  00000000  000005d4  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 00000086  00000000  00000000  000005f4  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   000003f0  00000000  00000000  0000067a  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 00000127  00000000  00000000  00000a6a  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   0000022b  00000000  00000000  00000b91  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  00000070  00000000  00000000  00000dbc  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000120  00000000  00000000  00000e2c  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    00000084  00000000  00000000  00000f4c  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:	ee e4       	ldi	r30, 0x4E	; 78
  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:	a0 38       	cpi	r26, 0x80	; 128
  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:	a0 e8       	ldi	r26, 0x80	; 128
  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:	a0 38       	cpi	r26, 0x80	; 128
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 9c 00 	jmp	0x138	; 0x138 <main>

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

0000008e <Port_Init>:
	}
}

void Port_Init()
{      
  8e:	18 ba       	out	0x18, r1	; 24
	//LCD数据端口设置
	PORTB = 0X00;         //
	DDRB = 0XFF;           //配置端口PB全部为输出口,LCD数据端口
  90:	8f ef       	ldi	r24, 0xFF	; 255
  92:	87 bb       	out	0x17, r24	; 23
	
	//LCD控制端口设置
	PORTA = 0X00;         //
  94:	1b ba       	out	0x1b, r1	; 27
	DDRA |= (1 << RS) | (1 << RW) | (1 << E);
  96:	8a b3       	in	r24, 0x1a	; 26
  98:	80 67       	ori	r24, 0x70	; 112
  9a:	8a bb       	out	0x1a, r24	; 26
  9c:	08 95       	ret

0000009e <Check_Busy>:
	//DDRA |= (1 << RS) | (1 << RW) | (1 << E);  //配置端口PA的第4、5、6为输出口
	
}

void LCD_Init()
{
	Write_Com(0X01);  //清屏
	_delay_ms(5);
	Write_Com(0X38);  //显示模式设置 16x2显示,5x7点阵,8位数据接口
	_delay_ms(5);
	//Write_Com(0X0f);  //显示开关控制,开显示,光标显示,光标闪烁
	Write_Com(0X0c);  //显示开关控制,开显示,光标不显示,光标不闪烁
	_delay_ms(5);
	Write_Com(0X06);  //光标设置,读或写一个字符后,地址指针加一,光标加一,整屏不移动
	_delay_ms(5);
}

void Write_Com(unsigned char LCD_Com)
{
	Check_Busy();
	
	PORTA &= ~(1 << RS);     //RS=0,写命令
	PORTA &= ~(1 << RW);     //RW=0,写指令
	PORTA |= (1 << E);       //E=1,写操作
	_delay_ms(5);
	PORTB = LCD_Com;         //指令送数据端口
	PORTA &= ~(1 << E);     //E=0,停止写操作
	_delay_ms(5);
	
}

void Write_Data(unsigned char LCD_Data)
{
	Check_Busy();

	PORTA |= (1 << RS);      //RS=1,写数据
	PORTA &= ~(1 << RW);    //RW=0,写指令
	PORTA |= (1 << E);      //E=1,写操作
	_delay_ms(5);  
	PORTB = LCD_Data;        // 数据送数据端口   
	PORTA &= ~(1 << E);    //E=0,停止写操作
	_delay_ms(5);
	
}

void Check_Busy()
{
  9e:	17 ba       	out	0x17, r1	; 23
    	
	DDRB = 0X00;             //PB口置为输入口,准备读取数据
	PORTA &= ~(1 << RS);      //RS=0,读命令
  a0:	dc 98       	cbi	0x1b, 4	; 27
	PORTA |= (1 << RW);    //RW=1,读指令
  a2:	dd 9a       	sbi	0x1b, 5	; 27
	PORTA |= (1 << E);      //E=1,使能
  a4:	de 9a       	sbi	0x1b, 6	; 27
	
	while(0X80 & PINB);   //监测忙信号,直到忙信号为0,才能进行读写操作
  a6:	b7 99       	sbic	0x16, 7	; 22
  a8:	fe cf       	rjmp	.-4      	; 0xa6 <Check_Busy+0x8>
	PORTA &= ~(1 << E);   //E=0
  aa:	de 98       	cbi	0x1b, 6	; 27
	DDRB = 0XFF;          //PB口置为输出口,准备向端口发送数据
  ac:	8f ef       	ldi	r24, 0xFF	; 255
  ae:	87 bb       	out	0x17, r24	; 23
  b0:	08 95       	ret

000000b2 <Write_Data>:
  b2:	1f 93       	push	r17
  b4:	18 2f       	mov	r17, r24
  b6:	0e 94 4f 00 	call	0x9e	; 0x9e <Check_Busy>
  ba:	dc 9a       	sbi	0x1b, 4	; 27
  bc:	dd 98       	cbi	0x1b, 5	; 27
  be:	de 9a       	sbi	0x1b, 6	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  c0:	82 ee       	ldi	r24, 0xE2	; 226
  c2:	94 e0       	ldi	r25, 0x04	; 4
  c4:	fc 01       	movw	r30, r24
  c6:	31 97       	sbiw	r30, 0x01	; 1
  c8:	f1 f7       	brne	.-4      	; 0xc6 <Write_Data+0x14>
  ca:	18 bb       	out	0x18, r17	; 24
  cc:	de 98       	cbi	0x1b, 6	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  ce:	01 97       	sbiw	r24, 0x01	; 1
  d0:	f1 f7       	brne	.-4      	; 0xce <Write_Data+0x1c>
  d2:	1f 91       	pop	r17
  d4:	08 95       	ret

000000d6 <Write_Com>:
  d6:	1f 93       	push	r17
  d8:	18 2f       	mov	r17, r24
  da:	0e 94 4f 00 	call	0x9e	; 0x9e <Check_Busy>
  de:	dc 98       	cbi	0x1b, 4	; 27
  e0:	dd 98       	cbi	0x1b, 5	; 27
  e2:	de 9a       	sbi	0x1b, 6	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  e4:	82 ee       	ldi	r24, 0xE2	; 226
  e6:	94 e0       	ldi	r25, 0x04	; 4
  e8:	fc 01       	movw	r30, r24
  ea:	31 97       	sbiw	r30, 0x01	; 1
  ec:	f1 f7       	brne	.-4      	; 0xea <Write_Com+0x14>
  ee:	18 bb       	out	0x18, r17	; 24
  f0:	de 98       	cbi	0x1b, 6	; 27
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  f2:	01 97       	sbiw	r24, 0x01	; 1
  f4:	f1 f7       	brne	.-4      	; 0xf2 <Write_Com+0x1c>
  f6:	1f 91       	pop	r17
  f8:	08 95       	ret

000000fa <LCD_Init>:
  fa:	0f 93       	push	r16
  fc:	1f 93       	push	r17
  fe:	81 e0       	ldi	r24, 0x01	; 1
 100:	0e 94 6b 00 	call	0xd6	; 0xd6 <Write_Com>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 104:	02 ee       	ldi	r16, 0xE2	; 226
 106:	14 e0       	ldi	r17, 0x04	; 4
 108:	c8 01       	movw	r24, r16
 10a:	01 97       	sbiw	r24, 0x01	; 1
 10c:	f1 f7       	brne	.-4      	; 0x10a <LCD_Init+0x10>
 10e:	88 e3       	ldi	r24, 0x38	; 56
 110:	0e 94 6b 00 	call	0xd6	; 0xd6 <Write_Com>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 114:	c8 01       	movw	r24, r16
 116:	01 97       	sbiw	r24, 0x01	; 1
 118:	f1 f7       	brne	.-4      	; 0x116 <LCD_Init+0x1c>
 11a:	8c e0       	ldi	r24, 0x0C	; 12
 11c:	0e 94 6b 00 	call	0xd6	; 0xd6 <Write_Com>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 120:	c8 01       	movw	r24, r16
 122:	01 97       	sbiw	r24, 0x01	; 1
 124:	f1 f7       	brne	.-4      	; 0x122 <LCD_Init+0x28>
 126:	86 e0       	ldi	r24, 0x06	; 6
 128:	0e 94 6b 00 	call	0xd6	; 0xd6 <Write_Com>
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 12c:	c8 01       	movw	r24, r16
 12e:	01 97       	sbiw	r24, 0x01	; 1
 130:	f1 f7       	brne	.-4      	; 0x12e <LCD_Init+0x34>
 132:	1f 91       	pop	r17
 134:	0f 91       	pop	r16
 136:	08 95       	ret

00000138 <main>:
 138:	0e 94 47 00 	call	0x8e	; 0x8e <Port_Init>
 13c:	0e 94 7d 00 	call	0xfa	; 0xfa <LCD_Init>
 140:	85 e8       	ldi	r24, 0x85	; 133
 142:	0e 94 6b 00 	call	0xd6	; 0xd6 <Write_Com>
 146:	81 e6       	ldi	r24, 0x61	; 97
 148:	0e 94 59 00 	call	0xb2	; 0xb2 <Write_Data>
 14c:	ff cf       	rjmp	.-2      	; 0x14c <main+0x14>

⌨️ 快捷键说明

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