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

📄 splc501.lss

📁 SPLC501的AVR 驱动.驱动芯片采用AVR mega16或者mega32.5根线.SPI驱动.原创作品.
💻 LSS
📖 第 1 页 / 共 3 页
字号:

SPLC501.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000746  00000000  00000000  00000074  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .bss          00000003  00800060  00800060  000007ba  2**0
                  ALLOC
  2 .stab         00000378  00000000  00000000  000007bc  2**2
                  CONTENTS, READONLY, DEBUGGING
  3 .stabstr      00000071  00000000  00000000  00000b34  2**0
                  CONTENTS, READONLY, DEBUGGING
  4 .debug_aranges 00000020  00000000  00000000  00000ba5  2**0
                  CONTENTS, READONLY, DEBUGGING
  5 .debug_pubnames 00000123  00000000  00000000  00000bc5  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_info   00000641  00000000  00000000  00000ce8  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_abbrev 0000021c  00000000  00000000  00001329  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_line   000005c8  00000000  00000000  00001545  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_frame  00000110  00000000  00000000  00001b10  2**2
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000287  00000000  00000000  00001c20  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_loc    00000433  00000000  00000000  00001ea7  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	0c 94 aa 00 	jmp	0x154	; 0x154 <__ctors_end>
   4:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
   8:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
   c:	0c 94 91 01 	jmp	0x322	; 0x322 <__vector_3>
  10:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  14:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  18:	0c 94 b3 01 	jmp	0x366	; 0x366 <__vector_6>
  1c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  20:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  24:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  28:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  2c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  30:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  34:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  38:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  3c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  40:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  44:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  48:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  4c:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>
  50:	0c 94 c7 00 	jmp	0x18e	; 0x18e <__bad_interrupt>

00000054 <HZK>:
  54:	fc 04 04 fc 40 48 48 48 48 ff 48 48 48 48 40 00     ....@HHHH.HHHH@.
  64:	0f 02 02 47 40 44 44 44 44 7f 44 44 44 44 40 00     ...G@DDDD.DDDD@.
  74:	fc 04 04 fc 20 20 50 48 44 43 44 48 58 30 10 00     ....  PHDCDHX0..
  84:	07 01 01 03 00 00 7f 21 21 21 21 21 7f 00 00 00     .......!!!!!....
  94:	00 c0 c0 00 00 00 c0 c0 00 00 00 c0 c0 00 00 00     ................
	...
  b4:	fe 22 22 fe 00 92 f2 92 92 fe 91 91 f1 91 90 00     ."".............
  c4:	7f 11 11 3f 00 48 4f 48 48 7f 48 48 4f 48 08 00     ...?.HOHH.HHOH..
  d4:	00 18 09 ca 4c 48 49 4a 4e 48 48 cc 0b 1a 00 00     ....LHIJNHH.....
  e4:	00 00 80 8f 40 20 10 0f 70 80 80 8f 80 e0 40 00     ....@ ..p.....@.
  f4:	fc 04 04 fc 08 08 ff 88 08 c8 09 0e 08 e8 08 00     ................
 104:	07 02 02 03 22 41 3f 00 20 23 2c 20 2c 23 20 00     ...."A?. #, ,# .
	...
 124:	00 18 24 24 18 00 00 00 00 00 00 00 00 00 00 00     ..$$............
 134:	fc 04 04 fc 00 7e 26 3a 22 fe 32 2e 2a 7e 00 00     .....~&:".2.*~..
 144:	07 02 02 07 44 35 05 15 65 07 15 65 05 15 64 00     ....D5..e..e..d.

00000154 <__ctors_end>:
 154:	11 24       	eor	r1, r1
 156:	1f be       	out	0x3f, r1	; 63
 158:	cf e5       	ldi	r28, 0x5F	; 95
 15a:	d4 e0       	ldi	r29, 0x04	; 4
 15c:	de bf       	out	0x3e, r29	; 62
 15e:	cd bf       	out	0x3d, r28	; 61

00000160 <__do_copy_data>:
 160:	10 e0       	ldi	r17, 0x00	; 0
 162:	a0 e6       	ldi	r26, 0x60	; 96
 164:	b0 e0       	ldi	r27, 0x00	; 0
 166:	e6 e4       	ldi	r30, 0x46	; 70
 168:	f7 e0       	ldi	r31, 0x07	; 7
 16a:	02 c0       	rjmp	.+4      	; 0x170 <.do_copy_data_start>

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

00000170 <.do_copy_data_start>:
 170:	a0 36       	cpi	r26, 0x60	; 96
 172:	b1 07       	cpc	r27, r17
 174:	d9 f7       	brne	.-10     	; 0x16c <.do_copy_data_loop>

00000176 <__do_clear_bss>:
 176:	10 e0       	ldi	r17, 0x00	; 0
 178:	a0 e6       	ldi	r26, 0x60	; 96
 17a:	b0 e0       	ldi	r27, 0x00	; 0
 17c:	01 c0       	rjmp	.+2      	; 0x180 <.do_clear_bss_start>

0000017e <.do_clear_bss_loop>:
 17e:	1d 92       	st	X+, r1

00000180 <.do_clear_bss_start>:
 180:	a3 36       	cpi	r26, 0x63	; 99
 182:	b1 07       	cpc	r27, r17
 184:	e1 f7       	brne	.-8      	; 0x17e <.do_clear_bss_loop>
 186:	0e 94 ca 01 	call	0x394	; 0x394 <main>
 18a:	0c 94 a2 03 	jmp	0x744	; 0x744 <_exit>

0000018e <__bad_interrupt>:
 18e:	0c 94 00 00 	jmp	0	; 0x0 <__vectors>

00000192 <SPLC501SPIWrite>:
#define SPLC501_RES			0x08
#define SPLC501_CS			0x10

void SPLC501SPIWrite(unsigned char data_command,unsigned char a0) //a0=0时表示发送命令,a0=1时表示发送数据
{
 192:	66 23       	and	r22, r22
 194:	11 f0       	breq	.+4      	; 0x19a <SPLC501SPIWrite+0x8>
	unsigned char i;
	if(a0)SPLC501_A0_PORT|=SPLC501_A0;		//SPLC501_A0=a0;
 196:	da 9a       	sbi	0x1b, 2	; 27
 198:	01 c0       	rjmp	.+2      	; 0x19c <SPLC501SPIWrite+0xa>
	else SPLC501_A0_PORT&=~SPLC501_A0;
 19a:	da 98       	cbi	0x1b, 2	; 27
	SPLC501_CS_PORT&=~SPLC501_CS;			//SPLC501_CS=0;
 19c:	dc 98       	cbi	0x1b, 4	; 27
 19e:	90 e0       	ldi	r25, 0x00	; 0
	for(i=0;i<8;i++)
	{
		SPLC501_CLK_PORT&=~SPLC501_CLK;		//SPLC501_CLK=0;
 1a0:	d8 98       	cbi	0x1b, 0	; 27
		if((data_command&0x80)==0)SPLC501_DIN_PORT&=~SPLC501_DIN;
 1a2:	87 fd       	sbrc	r24, 7
 1a4:	02 c0       	rjmp	.+4      	; 0x1aa <SPLC501SPIWrite+0x18>
 1a6:	d9 98       	cbi	0x1b, 1	; 27
 1a8:	01 c0       	rjmp	.+2      	; 0x1ac <SPLC501SPIWrite+0x1a>
		else SPLC501_DIN_PORT|=SPLC501_DIN;	//SPLC501_DIN=(data_command&0x80)==0?0:1;
 1aa:	d9 9a       	sbi	0x1b, 1	; 27
		data_command<<=1;
		SPLC501_CLK_PORT|=SPLC501_CLK;		//SPLC501_CLK=1;
 1ac:	d8 9a       	sbi	0x1b, 0	; 27
 1ae:	9f 5f       	subi	r25, 0xFF	; 255
 1b0:	98 30       	cpi	r25, 0x08	; 8
 1b2:	11 f0       	breq	.+4      	; 0x1b8 <SPLC501SPIWrite+0x26>
 1b4:	88 0f       	add	r24, r24
 1b6:	f4 cf       	rjmp	.-24     	; 0x1a0 <SPLC501SPIWrite+0xe>
	}
	SPLC501_CS_PORT|=SPLC501_CS;			//SPLC501_CS=1;  
 1b8:	dc 9a       	sbi	0x1b, 4	; 27
 1ba:	08 95       	ret

000001bc <SPLC501LineRun>:
}

void SPLC501LineRun(unsigned char line)	//起始行设置.滚屏功能用
{
 1bc:	60 e0       	ldi	r22, 0x00	; 0
 1be:	80 5c       	subi	r24, 0xC0	; 192
 1c0:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 1c4:	08 95       	ret

000001c6 <LCD_Init>:
	//if(line>=0x80)line=0;				//line=0~63
	SPLC501SPIWrite(0x40+line,0);		//设置显示起始行对应RAM
}

void LCD_Init(void) //LCD初始化函数
{
 1c6:	db 98       	cbi	0x1b, 3	; 27
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1c8:	80 e0       	ldi	r24, 0x00	; 0
 1ca:	98 2f       	mov	r25, r24
 1cc:	9a 95       	dec	r25
 1ce:	f1 f7       	brne	.-4      	; 0x1cc <LCD_Init+0x6>
	SPLC501_RES_PORT&=~SPLC501_RES;	//SPLC501_RES=0;  	//LCD(低电平)复位
	_delay_us(100);
	SPLC501_RES_PORT|=SPLC501_RES;	//SPLC501_RES=1; 	// RES置高
 1d0:	db 9a       	sbi	0x1b, 3	; 27
*/
void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
 1d2:	8a 95       	dec	r24
 1d4:	f1 f7       	brne	.-4      	; 0x1d2 <LCD_Init+0xc>
	_delay_us(100);
	SPLC501SPIWrite(0xa2,0);//LCD偏压设置:5V:0xa2;3.3V:0xa1.
 1d6:	60 e0       	ldi	r22, 0x00	; 0
 1d8:	82 ea       	ldi	r24, 0xA2	; 162
 1da:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0xa1,0);//列地址选择为从右到左对应0~127;0xa1:列地址从左到右;0xa0:列地址从右到左
 1de:	60 e0       	ldi	r22, 0x00	; 0
 1e0:	81 ea       	ldi	r24, 0xA1	; 161
 1e2:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0xc0,0);//行地址从上到下为0~63;0xc0:行地址从上到下;0xc8:行地址从下到上
 1e6:	60 e0       	ldi	r22, 0x00	; 0
 1e8:	80 ec       	ldi	r24, 0xC0	; 192
 1ea:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0x25,0);//V5电压内部电阻调整设置 一般在24~27之间
 1ee:	60 e0       	ldi	r22, 0x00	; 0
 1f0:	85 e2       	ldi	r24, 0x25	; 37
 1f2:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0x81,0);//亮度调整命令0~63(暗到亮)
 1f6:	60 e0       	ldi	r22, 0x00	; 0
 1f8:	81 e8       	ldi	r24, 0x81	; 129
 1fa:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0x10,0);//亮度调节为双字节命令,前一个参数控制字的深浅
 1fe:	60 e0       	ldi	r22, 0x00	; 0
 200:	80 e1       	ldi	r24, 0x10	; 16
 202:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0x2f,0);//上电控制,打开调压器、稳压器和电压跟随
 206:	60 e0       	ldi	r22, 0x00	; 0
 208:	8f e2       	ldi	r24, 0x2F	; 47
 20a:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0xa6,0);//正相反相显示控制指令,RAM中数据不变.0xa6:白底黑字;0xa7:黑底白字.
 20e:	60 e0       	ldi	r22, 0x00	; 0
 210:	86 ea       	ldi	r24, 0xA6	; 166
 212:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
	SPLC501SPIWrite(0xaf,0);//0xae:set display off.0xaf:set display on
 216:	60 e0       	ldi	r22, 0x00	; 0
 218:	8f ea       	ldi	r24, 0xAF	; 175
 21a:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 21e:	08 95       	ret

00000220 <Test>:
}

void Test(unsigned char a,unsigned char b)//全屏测试
{
 220:	ef 92       	push	r14
 222:	ff 92       	push	r15
 224:	0f 93       	push	r16
 226:	1f 93       	push	r17
 228:	cf 93       	push	r28
 22a:	df 93       	push	r29
 22c:	e8 2e       	mov	r14, r24
 22e:	f6 2e       	mov	r15, r22
 230:	00 eb       	ldi	r16, 0xB0	; 176
 232:	10 e0       	ldi	r17, 0x00	; 0
 234:	80 2f       	mov	r24, r16
	unsigned int i,j,page=0xb0;//指向首页命令
	for(i=0;i<8;i++)
	{
		SPLC501SPIWrite(page++,0);	//指向对应页
 236:	0f 5f       	subi	r16, 0xFF	; 255
 238:	1f 4f       	sbci	r17, 0xFF	; 255
 23a:	60 e0       	ldi	r22, 0x00	; 0
 23c:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
		SPLC501SPIWrite(0x10,0);	//SET COLUMN(列) ADDRESS MSB(高4位)为0
 240:	60 e0       	ldi	r22, 0x00	; 0
 242:	80 e1       	ldi	r24, 0x10	; 16
 244:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
		SPLC501SPIWrite(0x04,0);	//SET COLUMN ADDRESS LSB(低4位)为0
 248:	60 e0       	ldi	r22, 0x00	; 0
 24a:	84 e0       	ldi	r24, 0x04	; 4
 24c:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 250:	c0 e0       	ldi	r28, 0x00	; 0
 252:	d0 e0       	ldi	r29, 0x00	; 0
		//SPLC501SPIWrite(0xee);	//读改写模式结束指令
		for(j=0;j<64;j++)
		{
			SPLC501SPIWrite(a,1);
 254:	61 e0       	ldi	r22, 0x01	; 1
 256:	8e 2d       	mov	r24, r14
 258:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
			SPLC501SPIWrite(b,1);
 25c:	61 e0       	ldi	r22, 0x01	; 1
 25e:	8f 2d       	mov	r24, r15
 260:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 264:	21 96       	adiw	r28, 0x01	; 1
 266:	c0 34       	cpi	r28, 0x40	; 64
 268:	d1 05       	cpc	r29, r1
 26a:	a1 f7       	brne	.-24     	; 0x254 <Test+0x34>
 26c:	08 3b       	cpi	r16, 0xB8	; 184
 26e:	11 05       	cpc	r17, r1
 270:	09 f7       	brne	.-62     	; 0x234 <Test+0x14>
 272:	df 91       	pop	r29
 274:	cf 91       	pop	r28
 276:	1f 91       	pop	r17
 278:	0f 91       	pop	r16
 27a:	ff 90       	pop	r15
 27c:	ef 90       	pop	r14
 27e:	08 95       	ret

00000280 <DisplayWords>:
		} 
	} 
}

//显示一个字或多个字函数
void DisplayWords(unsigned int p,		//指向图片数组首地址
			unsigned char page_f,		//起始页
			unsigned char page_sum,		//占多少页
			unsigned char column_f,		//起始列
			unsigned char column_sum)	//占多少列
{
 280:	af 92       	push	r10
 282:	bf 92       	push	r11
 284:	cf 92       	push	r12
 286:	df 92       	push	r13
 288:	ef 92       	push	r14
 28a:	ff 92       	push	r15
 28c:	0f 93       	push	r16
 28e:	1f 93       	push	r17
 290:	cf 93       	push	r28
 292:	df 93       	push	r29
 294:	ec 01       	movw	r28, r24
 296:	b6 2e       	mov	r11, r22
 298:	a4 2e       	mov	r10, r20
 29a:	c2 2e       	mov	r12, r18
 29c:	d0 2e       	mov	r13, r16
 29e:	e6 2e       	mov	r14, r22
 2a0:	23 c0       	rjmp	.+70     	; 0x2e8 <DisplayWords+0x68>
	unsigned char i,j;
	unsigned char page=0xb0;			//指向首页命令
	for(i=page_f;i<page_sum+page_f;i++)
	{
		SPLC501SPIWrite(page+i,0); 
 2a2:	60 e0       	ldi	r22, 0x00	; 0
 2a4:	8e 2d       	mov	r24, r14
 2a6:	80 55       	subi	r24, 0x50	; 80
 2a8:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
		SPLC501SPIWrite(0x10|(column_f>>4),0);		//设定列地址高4位为0
 2ac:	8c 2d       	mov	r24, r12
 2ae:	82 95       	swap	r24
 2b0:	8f 70       	andi	r24, 0x0F	; 15
 2b2:	60 e0       	ldi	r22, 0x00	; 0
 2b4:	80 61       	ori	r24, 0x10	; 16
 2b6:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
		SPLC501SPIWrite(0x04|(0x0f&column_f),0);	//设定列地址低4位为0
 2ba:	8c 2d       	mov	r24, r12
 2bc:	8f 70       	andi	r24, 0x0F	; 15
 2be:	60 e0       	ldi	r22, 0x00	; 0
 2c0:	84 60       	ori	r24, 0x04	; 4
 2c2:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 2c6:	fe 01       	movw	r30, r28
 2c8:	ff 24       	eor	r15, r15
 2ca:	09 c0       	rjmp	.+18     	; 0x2de <DisplayWords+0x5e>
		for(j=0;j<column_sum;j++)SPLC501SPIWrite(pgm_read_byte(p++),1);
 2cc:	8f 01       	movw	r16, r30
 2ce:	0f 5f       	subi	r16, 0xFF	; 255
 2d0:	1f 4f       	sbci	r17, 0xFF	; 255
 2d2:	84 91       	lpm	r24, Z
 2d4:	61 e0       	ldi	r22, 0x01	; 1
 2d6:	0e 94 c9 00 	call	0x192	; 0x192 <SPLC501SPIWrite>
 2da:	f3 94       	inc	r15
 2dc:	f8 01       	movw	r30, r16
 2de:	fd 14       	cp	r15, r13
 2e0:	a9 f7       	brne	.-22     	; 0x2cc <DisplayWords+0x4c>
 2e2:	cd 0d       	add	r28, r13
 2e4:	d1 1d       	adc	r29, r1
 2e6:	e3 94       	inc	r14
 2e8:	2e 2d       	mov	r18, r14
 2ea:	33 27       	eor	r19, r19
 2ec:	4a 2d       	mov	r20, r10
 2ee:	4b 0d       	add	r20, r11
 2f0:	51 2d       	mov	r21, r1
 2f2:	51 1d       	adc	r21, r1
 2f4:	24 17       	cp	r18, r20
 2f6:	35 07       	cpc	r19, r21
 2f8:	a4 f2       	brlt	.-88     	; 0x2a2 <DisplayWords+0x22>
 2fa:	df 91       	pop	r29
 2fc:	cf 91       	pop	r28
 2fe:	1f 91       	pop	r17
 300:	0f 91       	pop	r16
 302:	ff 90       	pop	r15
 304:	ef 90       	pop	r14
 306:	df 90       	pop	r13
 308:	cf 90       	pop	r12

⌨️ 快捷键说明

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