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

📄 main.lss

📁 Atmega16+SPCL051液晶驱动
💻 LSS
📖 第 1 页 / 共 4 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000007d2  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000055c  00800060  000007d2  00000866  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000c  008005bc  008005bc  00000dc2  2**0
                  ALLOC
  3 .noinit       00000000  008005c8  008005c8  00000dc2  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000dc2  2**0
                  CONTENTS
  5 .stab         00001608  00000000  00000000  00000dc4  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000b3f  00000000  00000000  000023cc  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:	15 e0       	ldi	r17, 0x05	; 5
  62:	a0 e6       	ldi	r26, 0x60	; 96
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	e2 ed       	ldi	r30, 0xD2	; 210
  68:	f7 e0       	ldi	r31, 0x07	; 7
  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:	ac 3b       	cpi	r26, 0xBC	; 188
  72:	b1 07       	cpc	r27, r17
  74:	d9 f7       	brne	.-10     	; 0x6c <.do_copy_data_loop>

00000076 <__do_clear_bss>:
  76:	15 e0       	ldi	r17, 0x05	; 5
  78:	ac eb       	ldi	r26, 0xBC	; 188
  7a:	b5 e0       	ldi	r27, 0x05	; 5
  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:	a8 3c       	cpi	r26, 0xC8	; 200
  82:	b1 07       	cpc	r27, r17
  84:	e1 f7       	brne	.-8      	; 0x7e <.do_clear_bss_loop>
  86:	0c 94 53 00 	jmp	0xa6 <main>

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

0000008e <delay>:
#include "SPLC051.h"
//宏定义
//延时
void delay(void)
{
  8e:	e0 e0       	ldi	r30, 0x00	; 0
  90:	f0 e0       	ldi	r31, 0x00	; 0
  92:	21 e3       	ldi	r18, 0x31	; 49
  94:	30 e0       	ldi	r19, 0x00	; 0
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  96:	cf 01       	movw	r24, r30
  98:	01 97       	sbiw	r24, 0x01	; 1
  9a:	f1 f7       	brne	.-4      	; 0x98 <delay+0xa>
	for(int i=0;i<50;i++)
  9c:	21 50       	subi	r18, 0x01	; 1
  9e:	30 40       	sbci	r19, 0x00	; 0
  a0:	37 ff       	sbrs	r19, 7
  a2:	f9 cf       	rjmp	.-14     	; 0x96 <delay+0x8>
  a4:	08 95       	ret

000000a6 <main>:
		_delay_ms(250);

}
//主程序
void main(void)
{
  a6:	cf e5       	ldi	r28, 0x5F	; 95
  a8:	d4 e0       	ldi	r29, 0x04	; 4
  aa:	de bf       	out	0x3e, r29	; 62
  ac:	cd bf       	out	0x3d, r28	; 61
	int j,i;
	LCD501_Init(0x01);	              //初始化LCD端口以及LCD,在SPLC501User.c中定义
  ae:	81 e0       	ldi	r24, 0x01	; 1
  b0:	90 e0       	ldi	r25, 0x00	; 0
  b2:	0e 94 cd 00 	call	0x19a <LCD501_Init>
	delay();
  b6:	0e 94 47 00 	call	0x8e <delay>
	LCD501_ClrScreen(0);
  ba:	80 e0       	ldi	r24, 0x00	; 0
  bc:	90 e0       	ldi	r25, 0x00	; 0
  be:	0e 94 3f 02 	call	0x47e <LCD501_ClrScreen>
	delay();
  c2:	0e 94 47 00 	call	0x8e <delay>
	LCD501_PutChar(50,16,(unsigned int)'0');
  c6:	40 e3       	ldi	r20, 0x30	; 48
  c8:	50 e0       	ldi	r21, 0x00	; 0
  ca:	60 e1       	ldi	r22, 0x10	; 16
  cc:	70 e0       	ldi	r23, 0x00	; 0
  ce:	82 e3       	ldi	r24, 0x32	; 50
  d0:	90 e0       	ldi	r25, 0x00	; 0
  d2:	0e 94 15 03 	call	0x62a <LCD501_PutChar>
	LCD501_PutChar(119,24,(unsigned int)'a');
  d6:	41 e6       	ldi	r20, 0x61	; 97
  d8:	50 e0       	ldi	r21, 0x00	; 0
  da:	68 e1       	ldi	r22, 0x18	; 24
  dc:	70 e0       	ldi	r23, 0x00	; 0
  de:	87 e7       	ldi	r24, 0x77	; 119
  e0:	90 e0       	ldi	r25, 0x00	; 0
  e2:	0e 94 15 03 	call	0x62a <LCD501_PutChar>
	LCD501_PutChar(125,32,(unsigned int)'A');
  e6:	41 e4       	ldi	r20, 0x41	; 65
  e8:	50 e0       	ldi	r21, 0x00	; 0
  ea:	60 e2       	ldi	r22, 0x20	; 32
  ec:	70 e0       	ldi	r23, 0x00	; 0
  ee:	8d e7       	ldi	r24, 0x7D	; 125
  f0:	90 e0       	ldi	r25, 0x00	; 0
  f2:	0e 94 15 03 	call	0x62a <LCD501_PutChar>
	LCD501_PutString(0,0,"abcdefghijklmnopqrstuvwxyz");
  f6:	40 e6       	ldi	r20, 0x60	; 96
  f8:	50 e0       	ldi	r21, 0x00	; 0
  fa:	60 e0       	ldi	r22, 0x00	; 0
  fc:	70 e0       	ldi	r23, 0x00	; 0
  fe:	cb 01       	movw	r24, r22
 100:	0e 94 b6 03 	call	0x76c <LCD501_PutString>
 104:	0c 94 e8 03 	jmp	0x7d0 <_exit>

00000108 <LED_test>:
unsigned int CurASCIIFont;				//当前ASCII码的字号(8X16/6X8)

//**************
void LED_test(void)
{
 108:	4f ef       	ldi	r20, 0xFF	; 255
 10a:	a0 e0       	ldi	r26, 0x00	; 0
 10c:	b0 e0       	ldi	r27, 0x00	; 0
	while(1)
	{
		PORTB=0xff;
 10e:	48 bb       	out	0x18, r20	; 24
		LED1();
 110:	c1 98       	cbi	0x18, 1	; 24
 112:	21 e3       	ldi	r18, 0x31	; 49
 114:	30 e0       	ldi	r19, 0x00	; 0
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 116:	cd 01       	movw	r24, r26
 118:	01 97       	sbiw	r24, 0x01	; 1
 11a:	f1 f7       	brne	.-4      	; 0x118 <LED_test+0x10>
		for(int i=0;i<50;i++)
 11c:	21 50       	subi	r18, 0x01	; 1
 11e:	30 40       	sbci	r19, 0x00	; 0
 120:	37 ff       	sbrs	r19, 7
 122:	f9 cf       	rjmp	.-14     	; 0x116 <LED_test+0xe>
			_delay_ms(250);
		LED0();
 124:	c1 9a       	sbi	0x18, 1	; 24
		PORTB=0xff;
 126:	48 bb       	out	0x18, r20	; 24
 128:	e0 e0       	ldi	r30, 0x00	; 0
 12a:	f0 e0       	ldi	r31, 0x00	; 0
 12c:	21 e3       	ldi	r18, 0x31	; 49
 12e:	30 e0       	ldi	r19, 0x00	; 0
 */
void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
 130:	cf 01       	movw	r24, r30
 132:	01 97       	sbiw	r24, 0x01	; 1
 134:	f1 f7       	brne	.-4      	; 0x132 <LED_test+0x2a>
		for(int i=0;i<50;i++)
 136:	21 50       	subi	r18, 0x01	; 1
 138:	30 40       	sbci	r19, 0x00	; 0
 13a:	37 ff       	sbrs	r19, 7
 13c:	f9 cf       	rjmp	.-14     	; 0x130 <LED_test+0x28>
 13e:	e7 cf       	rjmp	.-50     	; 0x10e <LED_test+0x6>

00000140 <F_SPLC501_Initial_IO>:
			_delay_ms(250);
	}
}//***************************************************************************//
//程序:F_SPLC501_Initial_IO()
//描述:SPLC501接口的初始化程序  C语言调用 
//参数:无
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void F_SPLC501_Initial_IO(void)
{
	DDRA=(1<<A0)|(1<<CS1)|(1<<EP)|(1<<RW);				//定义为输出口,控制LCD
 140:	8d e1       	ldi	r24, 0x1D	; 29
 142:	8a bb       	out	0x1a, r24	; 26
	PORTA=0xff;
 144:	8f ef       	ldi	r24, 0xFF	; 255
 146:	8b bb       	out	0x1b, r24	; 27
	DDRB=0xff;				//定义为输出口,数据端口
 148:	87 bb       	out	0x17, r24	; 23
	PORTB=0xff;
 14a:	88 bb       	out	0x18, r24	; 24
 14c:	08 95       	ret

0000014e <F_SPLC501_Write_Com>:
}
//***************************************************************************//
//程序:F_SPLC501_Write_Com(unsigned int Command)
//描述:往SPLC501里写一个字节指令  C语言调用
//参数:送入要传送的指令
// 声明:	手心	20070117	AVRGCC
//注意A0=0,EP=1,RW=0,Cs=0
//***************************************************************************//
void F_SPLC501_Write_Com(unsigned int Command)
{
	PORTA=(0<<A0)|(1<<EP)|(0<<RW)|(0<<CS1);	//片选LCD,使能命令模式
 14e:	20 e1       	ldi	r18, 0x10	; 16
 150:	2b bb       	out	0x1b, r18	; 27
	DDRB=0xff;				//定义为输出口,数据端口
 152:	2f ef       	ldi	r18, 0xFF	; 255
 154:	27 bb       	out	0x17, r18	; 23
	PORTB=Command;
 156:	88 bb       	out	0x18, r24	; 24
	PORTA|=(1<<CS1);							//取消片选
 158:	d8 9a       	sbi	0x1b, 0	; 27
 15a:	08 95       	ret

0000015c <F_SPLC501_Write_Data>:
}
//***************************************************************************//
//程序:F_SPLC501_Write_Data(unsigned int SendData)
//描述:往SPLC501里写一个字节数据  C语言调用
//参数:送入要传送的数据
// 声明:	手心	20070117	AVRGCC
//注意A0=1,EP=1,RW=0,Cs=0
//***************************************************************************//
void F_SPLC501_Write_Data(unsigned int SendData)
{
	PORTA=(1<<A0)|(1<<EP)|(0<<RW)|(0<<CS1);	//片选LCD,使能写数据
 15c:	24 e1       	ldi	r18, 0x14	; 20
 15e:	2b bb       	out	0x1b, r18	; 27
	DDRB=0xff;				//定义为输出口,数据端口
 160:	2f ef       	ldi	r18, 0xFF	; 255
 162:	27 bb       	out	0x17, r18	; 23
	PORTB=(SendData);
 164:	88 bb       	out	0x18, r24	; 24
	PORTA|=(1<<CS1);							//取消片选
 166:	d8 9a       	sbi	0x1b, 0	; 27
 168:	08 95       	ret

0000016a <F_SPLC501_Read_Data>:
}
//***************************************************************************//
//程序:F_SPLC501_Read_Data()
//描述:从SPLC501里读一个字节数据  C语言调用
//参数:输出传送的数据
// 声明:	手心	20070117	AVRGCC
//注意A0=1,EP=0,RW=1,Cs=0
//***************************************************************************//
unsigned int F_SPLC501_Read_Data(void)
{
	unsigned int temp_data;
	PORTA=(1<<A0)|(0<<EP)|(1<<RW)|(0<<CS1);	//片选LCD,使能读数据
 16a:	8c e0       	ldi	r24, 0x0C	; 12
 16c:	8b bb       	out	0x1b, r24	; 27
	DDRB=0x00;				//定义为输入口,数据端口
 16e:	17 ba       	out	0x17, r1	; 23
	temp_data=PORTB;
 170:	88 b3       	in	r24, 0x18	; 24
	PORTA|=(1<<CS1);							//取消片选
 172:	d8 9a       	sbi	0x1b, 0	; 27
	return temp_data;
}
 174:	99 27       	eor	r25, r25
 176:	08 95       	ret

00000178 <F_SPLC501_Read_Status>:
//***************************************************************************//
//程序:F_SPLC501_Read_Status()
//描述:从SPLC501里读状态字数据  C语言调用
//参数:输出传送的数据
// 声明:	手心	20070117	AVRGCC
//注意A0=0,EP=0,RW=1,Cs=0
//***************************************************************************//
unsigned int F_SPLC501_Read_Status(void)
{
	unsigned int temp_status;
	PORTA=(0<<A0)|(0<<EP)|(1<<RW)|(0<<CS1);	//片选LCD,使能读状态
 178:	88 e0       	ldi	r24, 0x08	; 8
 17a:	8b bb       	out	0x1b, r24	; 27
	DDRB=0x00;				//定义为输入口,数据端口
 17c:	17 ba       	out	0x17, r1	; 23
	temp_status=PORTB;
 17e:	88 b3       	in	r24, 0x18	; 24
	PORTA|=(1<<CS1);							//取消片选
 180:	d8 9a       	sbi	0x1b, 0	; 27
	return temp_status;
}
 182:	99 27       	eor	r25, r25
 184:	08 95       	ret

00000186 <F_LCD_ONOFF>:
//***************************************************************************//
//程序:F_LCD_ON_OFF(unsigned int SetCom)
//描述:液晶开关函数  C语言调用 
//参数:unsigned int SetCom		SetCom=0:LCD Off  SetCom!=0:LCD On
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void F_LCD_ONOFF(unsigned int SetCom)
{
	if(SetCom)							//ON LCD
 186:	89 2b       	or	r24, r25
 188:	19 f0       	breq	.+6      	; 0x190 <F_LCD_ONOFF+0xa>
		F_SPLC501_Write_Com(M_LCD_ON);
 18a:	8f ea       	ldi	r24, 0xAF	; 175
 18c:	90 e0       	ldi	r25, 0x00	; 0
 18e:	02 c0       	rjmp	.+4      	; 0x194 <F_LCD_ONOFF+0xe>
	else								//OFF LCD
		F_SPLC501_Write_Com(M_LCD_OFF);
 190:	8e ea       	ldi	r24, 0xAE	; 174
 192:	90 e0       	ldi	r25, 0x00	; 0
 194:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 198:	08 95       	ret

0000019a <LCD501_Init>:
}

⌨️ 快捷键说明

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