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

📄 main.lss

📁 Atmega16+SPCL051液晶驱动
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 3ca:	cf 93       	push	r28
 3cc:	df 93       	push	r29
 3ce:	ec 01       	movw	r28, r24
	if(Contrast>0x3f)
 3d0:	80 34       	cpi	r24, 0x40	; 64
 3d2:	91 05       	cpc	r25, r1
 3d4:	10 f0       	brcs	.+4      	; 0x3da <LCD501_SetContrast+0x10>
		Contrast = 0x3f;
 3d6:	cf e3       	ldi	r28, 0x3F	; 63
 3d8:	d0 e0       	ldi	r29, 0x00	; 0
	F_SPLC501_Write_Com(M_LCD_ELE_VOL);			//电量设置模式(显示亮度)
 3da:	81 e8       	ldi	r24, 0x81	; 129
 3dc:	90 e0       	ldi	r25, 0x00	; 0
 3de:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
	F_SPLC501_Write_Com(Contrast);			//电量设置模式(显示亮度)
 3e2:	ce 01       	movw	r24, r28
 3e4:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
	CurLCDSet = Contrast;
 3e8:	d0 93 c3 05 	sts	0x05C3, r29
 3ec:	c0 93 c2 05 	sts	0x05C2, r28
 3f0:	df 91       	pop	r29
 3f2:	cf 91       	pop	r28
 3f4:	08 95       	ret

000003f6 <LCD501_GetContrast>:
}
//***************************************************************************//
// 程序:	unsigned int LCD501_GetContrast(void)
// 描述:	获取显示对比度   C语言调用
// 参数:	无
// 返回:	当前显示的对比度值
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
unsigned int LCD501_GetContrast(void)
{
	return CurLCDSet;//
}
 3f6:	80 91 c2 05 	lds	r24, 0x05C2
 3fa:	90 91 c3 05 	lds	r25, 0x05C3
 3fe:	08 95       	ret

00000400 <LCD501_ScrollUp>:
//***************************************************************************//
// 程序:	void LCD501_ScrollUp(unsigned int Rows)
// 描述:	屏幕向上滚动   C语言调用
// 参数:	Rows  屏幕向上滚动的像素数,范围从1到64
// 返回:	null
//***************************************************************************//
void LCD501_ScrollUp(unsigned int Rows)
{
	CurScroll = CurScroll+Rows;
 400:	20 91 c4 05 	lds	r18, 0x05C4
 404:	30 91 c5 05 	lds	r19, 0x05C5
 408:	28 0f       	add	r18, r24
 40a:	39 1f       	adc	r19, r25
 40c:	30 93 c5 05 	sts	0x05C5, r19
 410:	20 93 c4 05 	sts	0x05C4, r18
	while(CurScroll>=SCR_MAX_ROW)
		CurScroll -= SCR_MAX_ROW;
 414:	20 34       	cpi	r18, 0x40	; 64
 416:	31 05       	cpc	r19, r1
 418:	50 f0       	brcs	.+20     	; 0x42e <LCD501_ScrollUp+0x2e>
 41a:	c9 01       	movw	r24, r18
 41c:	80 54       	subi	r24, 0x40	; 64
 41e:	90 40       	sbci	r25, 0x00	; 0
 420:	80 34       	cpi	r24, 0x40	; 64
 422:	91 05       	cpc	r25, r1
 424:	d8 f7       	brcc	.-10     	; 0x41c <LCD501_ScrollUp+0x1c>
 426:	90 93 c5 05 	sts	0x05C5, r25
 42a:	80 93 c4 05 	sts	0x05C4, r24
	F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+CurScroll);	//设置显示起始行对应RAM
 42e:	80 91 c4 05 	lds	r24, 0x05C4
 432:	90 91 c5 05 	lds	r25, 0x05C5
 436:	80 5c       	subi	r24, 0xC0	; 192
 438:	9f 4f       	sbci	r25, 0xFF	; 255
 43a:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 43e:	08 95       	ret

00000440 <LCD501_GetScroll>:
}
//***************************************************************************//
// 程序:	unsigned int LCD501_GetScroll(void)
// 描述:	获取屏幕已经向上滚动的值   C语言调用
// 参数:	无
// 返回:	屏幕已经向上滚动的值
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
unsigned int LCD501_GetScroll(void)
{
	return CurScroll;//
}
 440:	80 91 c4 05 	lds	r24, 0x05C4
 444:	90 91 c5 05 	lds	r25, 0x05C5
 448:	08 95       	ret

0000044a <LCD501_ReverseColor>:
//***************************************************************************//
// 程序:	void LCD501_ReverseColor(void)
// 描述:	屏幕反色显示。每执行一次该函数,屏幕颜色翻转一次。   C语言调用
// 参数:	无
// 返回:	无
// 声明:	手心	20070117	AVRGCC
// 注意:   无
//***************************************************************************//
void LCD501_ReverseColor(void)
{
	if(CurScrMode)//
 44a:	80 91 be 05 	lds	r24, 0x05BE
 44e:	90 91 bf 05 	lds	r25, 0x05BF
 452:	89 2b       	or	r24, r25
 454:	49 f0       	breq	.+18     	; 0x468 <__stack+0x9>
	{
		F_SPLC501_Write_Com(M_LCD_ALL_REV);			//正向反向显示控制指令
 456:	87 ea       	ldi	r24, 0xA7	; 167
 458:	90 e0       	ldi	r25, 0x00	; 0
 45a:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
		CurScrMode = 0;
 45e:	10 92 bf 05 	sts	0x05BF, r1
 462:	10 92 be 05 	sts	0x05BE, r1
 466:	08 95       	ret
	}
	else
	{
		F_SPLC501_Write_Com(M_LCD_ALL_NOR);			//正向反向显示控制指令
 468:	86 ea       	ldi	r24, 0xA6	; 166
 46a:	90 e0       	ldi	r25, 0x00	; 0
 46c:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
		CurScrMode = 1;
 470:	81 e0       	ldi	r24, 0x01	; 1
 472:	90 e0       	ldi	r25, 0x00	; 0
 474:	90 93 bf 05 	sts	0x05BF, r25
 478:	80 93 be 05 	sts	0x05BE, r24
 47c:	08 95       	ret

0000047e <LCD501_ClrScreen>:
	}
}
//***************************************************************************//
//程序:LCD501_ClrScreen(unsigned int Mode)
//描述:液晶整屏清屏函数  C语言调用 
//参数:unsigned int Mode	清屏类型Mode=1 则全点亮,Mode=0 内全清零
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void LCD501_ClrScreen(unsigned int Mode)
{
 47e:	cf 92       	push	r12
 480:	df 92       	push	r13
 482:	ef 92       	push	r14
 484:	ff 92       	push	r15
 486:	0f 93       	push	r16
 488:	1f 93       	push	r17
 48a:	cf 93       	push	r28
 48c:	df 93       	push	r29
 48e:	8c 01       	movw	r16, r24
	unsigned int i,j;
	if(Mode)
 490:	89 2b       	or	r24, r25
 492:	11 f0       	breq	.+4      	; 0x498 <LCD501_ClrScreen+0x1a>
		Mode = 0xff;
 494:	0f ef       	ldi	r16, 0xFF	; 255
 496:	10 e0       	ldi	r17, 0x00	; 0
	else
		Mode = 0x00;	
	for(i=0;i<8;i++)
 498:	cc 24       	eor	r12, r12
 49a:	dd 24       	eor	r13, r13
 49c:	40 eb       	ldi	r20, 0xB0	; 176
 49e:	e4 2e       	mov	r14, r20
 4a0:	f1 2c       	mov	r15, r1
	{
		F_SPLC501_Write_Com(M_LCD_COL_PAGE+i);
 4a2:	c7 01       	movw	r24, r14
 4a4:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
		F_SPLC501_Write_Com(M_LCD_COL_LINE_LOW);
 4a8:	84 e0       	ldi	r24, 0x04	; 4
 4aa:	90 e0       	ldi	r25, 0x00	; 0
 4ac:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
		F_SPLC501_Write_Com(M_LCD_COL_LINE_HIG);
 4b0:	80 e1       	ldi	r24, 0x10	; 16
 4b2:	90 e0       	ldi	r25, 0x00	; 0
 4b4:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 4b8:	cf e7       	ldi	r28, 0x7F	; 127
 4ba:	d0 e0       	ldi	r29, 0x00	; 0
		for(j=0;j<128;j++)
		{
			F_SPLC501_Write_Data(Mode);
 4bc:	c8 01       	movw	r24, r16
 4be:	0e 94 ae 00 	call	0x15c <F_SPLC501_Write_Data>
 4c2:	21 97       	sbiw	r28, 0x01	; 1
 4c4:	d7 ff       	sbrs	r29, 7
 4c6:	fa cf       	rjmp	.-12     	; 0x4bc <LCD501_ClrScreen+0x3e>
 4c8:	08 94       	sec
 4ca:	c1 1c       	adc	r12, r1
 4cc:	d1 1c       	adc	r13, r1
 4ce:	08 94       	sec
 4d0:	e1 1c       	adc	r14, r1
 4d2:	f1 1c       	adc	r15, r1
 4d4:	88 e0       	ldi	r24, 0x08	; 8
 4d6:	c8 16       	cp	r12, r24
 4d8:	d1 04       	cpc	r13, r1
 4da:	18 f3       	brcs	.-58     	; 0x4a2 <LCD501_ClrScreen+0x24>
		}
	}
	F_SPLC501_Write_Com(0xee);					//读改写模式结束指令
 4dc:	8e ee       	ldi	r24, 0xEE	; 238
 4de:	90 e0       	ldi	r25, 0x00	; 0
 4e0:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 4e4:	df 91       	pop	r29
 4e6:	cf 91       	pop	r28
 4e8:	1f 91       	pop	r17
 4ea:	0f 91       	pop	r16
 4ec:	ff 90       	pop	r15
 4ee:	ef 90       	pop	r14
 4f0:	df 90       	pop	r13
 4f2:	cf 90       	pop	r12
 4f4:	08 95       	ret

000004f6 <F_LCD_LineRun>:
}
//***************************************************************************//
//程序:F_LCD_LineRun(unsigned int line)
//描述:液晶显示起始行设置函数  C语言调用  (滚屏功能用) 
//参数:unsigned int line	起始RAM行,0~63
// 声明:	手心	20070117	AVRGCC
//***************************************************************************//
void F_LCD_LineRun(unsigned int line)
{
	if(line>=64)
 4f6:	80 34       	cpi	r24, 0x40	; 64
 4f8:	91 05       	cpc	r25, r1
 4fa:	10 f0       	brcs	.+4      	; 0x500 <F_LCD_LineRun+0xa>
		line = 0;
 4fc:	80 e0       	ldi	r24, 0x00	; 0
 4fe:	90 e0       	ldi	r25, 0x00	; 0
	F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+line);	//设置显示起始行对应RAM
 500:	80 5c       	subi	r24, 0xC0	; 192
 502:	9f 4f       	sbci	r25, 0xFF	; 255
 504:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 508:	08 95       	ret

0000050a <LCD501_FontSet>:
}
//****************************************************************************************//
//程序:void LCD501_FontSet(unsinged int Font)     [8x16] [6X8]
//描述: 选择显示字符的大小类型
//参数:Font	字符的类型选择 1 8X16   0 6X8
// 声明:	手心	20070117	AVRGCC
//注意: 只针对显示驱动中包含的ASCII码显示
//*****************************************************************************************//
void LCD501_FontSet(unsigned int Font)
{
	if(Font) CurASCIIFont = 1;
 50a:	00 97       	sbiw	r24, 0x00	; 0
 50c:	11 f0       	breq	.+4      	; 0x512 <LCD501_FontSet+0x8>
 50e:	81 e0       	ldi	r24, 0x01	; 1
 510:	90 e0       	ldi	r25, 0x00	; 0
	else CurASCIIFont = 0;
 512:	90 93 c7 05 	sts	0x05C7, r25
 516:	80 93 c6 05 	sts	0x05C6, r24
 51a:	08 95       	ret

0000051c <LCD501_FontGet>:
}
//****************************************************************************************//
//程序:unsigned int LCD501_FontGet(void)     [8x16] [6X8]
//描述: 获取当前显示字符的大小类型
//返回:Font	字符的类型选择 1 8X16   0 6X8
//声明: xinqiang		20050519	sunnorth  Mz Design
//注意: 只针对显示驱动中包含的ASCII码显示
//*****************************************************************************************//
unsigned int LCD501_FontGet(void)
{
	return CurASCIIFont;
}
 51c:	80 91 c6 05 	lds	r24, 0x05C6
 520:	90 91 c7 05 	lds	r25, 0x05C7
 524:	08 95       	ret

00000526 <F_LCD_WASII>:
//****************************************************************************************//
//程序:void F_LCD_WASII(int x,int page,unsigned int a)     [8x16] [6X8]
//描述: 显时8X16的自带ASCII字符,定Page显示,不能任意行定位
//参数:x 显示字符的起始列(0~128)   page 显示字符的起始页(0~6)
//		a ASCII码					  Font	字符的类型选择 1 16X8   0 6X8
// 声明:	手心	20070117	AVRGCC
//注意: 
//*****************************************************************************************//
void F_LCD_WASII(int page,int y,unsigned char a)       
{
 526:	af 92       	push	r10
 528:	bf 92       	push	r11
 52a:	cf 92       	push	r12
 52c:	df 92       	push	r13
 52e:	ef 92       	push	r14
 530:	ff 92       	push	r15
 532:	0f 93       	push	r16
 534:	1f 93       	push	r17
 536:	cf 93       	push	r28
 538:	5c 01       	movw	r10, r24
 53a:	6b 01       	movw	r12, r22
 53c:	c4 2f       	mov	r28, r20
    int i,j,x_com;            //数据暂存
    if(a>=0x61)
 53e:	41 36       	cpi	r20, 0x61	; 97
 540:	38 f0       	brcs	.+14     	; 0x550 <F_LCD_WASII+0x2a>
		a=a-0x61+36*8+(a-0x61)*8;
 542:	84 2f       	mov	r24, r20
 544:	88 0f       	add	r24, r24
 546:	88 0f       	add	r24, r24
 548:	88 0f       	add	r24, r24
 54a:	c8 0f       	add	r28, r24
 54c:	c9 54       	subi	r28, 0x49	; 73
 54e:	13 c0       	rjmp	.+38     	; 0x576 <F_LCD_WASII+0x50>
 550:	e4 2f       	mov	r30, r20
 552:	ff 27       	eor	r31, r31
	else 
		if(a>=0x41)
 554:	41 34       	cpi	r20, 0x41	; 65
 556:	40 f0       	brcs	.+16     	; 0x568 <F_LCD_WASII+0x42>
			a=a-0x41+80+(a-0x41)*8;
 558:	a3 e0       	ldi	r26, 0x03	; 3
 55a:	ee 0f       	add	r30, r30
 55c:	ff 1f       	adc	r31, r31
 55e:	aa 95       	dec	r26
 560:	e1 f7       	brne	.-8      	; 0x55a <F_LCD_WASII+0x34>
 562:	ce 0f       	add	r28, r30
 564:	c9 5f       	subi	r28, 0xF9	; 249
 566:	07 c0       	rjmp	.+14     	; 0x576 <F_LCD_WASII+0x50>
		else
			a=a-0x30+(a-0x30)*8;
 568:	73 e0       	ldi	r23, 0x03	; 3
 56a:	ee 0f       	add	r30, r30
 56c:	ff 1f       	adc	r31, r31
 56e:	7a 95       	dec	r23
 570:	e1 f7       	brne	.-8      	; 0x56a <F_LCD_WASII+0x44>
 572:	ce 0f       	add	r28, r30
 574:	c0 5b       	subi	r28, 0xB0	; 176
	F_SPLC501_Write_Com(M_LCD_BEGIN_LINE+0);	//设置显示起始行对应RAM  
 576:	80 e4       	ldi	r24, 0x40	; 64
 578:	90 e0       	ldi	r25, 0x00	; 0
 57a:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
	if((page+2)<8)
 57e:	c5 01       	movw	r24, r10
 580:	02 96       	adiw	r24, 0x02	; 2
 582:	08 97       	sbiw	r24, 0x08	; 8
 584:	0c f0       	brlt	.+2      	; 0x588 <F_LCD_WASII+0x62>
 586:	43 c0       	rjmp	.+134    	; 0x60e <F_LCD_WASII+0xe8>
	{
		for(j=0;j<2;j++)
 588:	ee 24       	eor	r14, r14
 58a:	ff 24       	eor	r15, r15
		{
			x_com = page+0xb0;
 58c:	c5 01       	movw	r24, r10
 58e:	80 55       	subi	r24, 0x50	; 80
 590:	9f 4f       	sbci	r25, 0xFF	; 255
			F_SPLC501_Write_Com(x_com+j);				//起始页
 592:	8e 0d       	add	r24, r14
 594:	9f 1d       	adc	r25, r15
 596:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
			F_SPLC501_Write_Com(((y>>4)&0x0f)|0x10);	//设置初始地址 列地址高位
 59a:	c6 01       	movw	r24, r12
 59c:	64 e0       	ldi	r22, 0x04	; 4
 59e:	95 95       	asr	r25
 5a0:	87 95       	ror	r24
 5a2:	6a 95       	dec	r22
 5a4:	e1 f7       	brne	.-8      	; 0x59e <F_LCD_WASII+0x78>
 5a6:	8f 70       	andi	r24, 0x0F	; 15

⌨️ 快捷键说明

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