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

📄 main.lss

📁 Atmega16+SPCL051液晶驱动
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 5a8:	90 70       	andi	r25, 0x00	; 0
 5aa:	80 61       	ori	r24, 0x10	; 16
 5ac:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
			F_SPLC501_Write_Com(y&0x0f);				//设置初始地址 列地址低位
 5b0:	c6 01       	movw	r24, r12
 5b2:	8f 70       	andi	r24, 0x0F	; 15
 5b4:	90 70       	andi	r25, 0x00	; 0
 5b6:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
			for(i=0;i<8;i++)
 5ba:	00 e0       	ldi	r16, 0x00	; 0
 5bc:	10 e0       	ldi	r17, 0x00	; 0
 5be:	ec 2f       	mov	r30, r28
 5c0:	ff 27       	eor	r31, r31
			{   
				if(j==0)
 5c2:	e1 14       	cp	r14, r1
 5c4:	f1 04       	cpc	r15, r1
 5c6:	51 f4       	brne	.+20     	; 0x5dc <F_LCD_WASII+0xb6>
					F_SPLC501_Write_Data((Asii8[a+i])&0xff);
 5c8:	e0 0f       	add	r30, r16
 5ca:	f1 1f       	adc	r31, r17
 5cc:	ee 0f       	add	r30, r30
 5ce:	ff 1f       	adc	r31, r31
 5d0:	e5 52       	subi	r30, 0x25	; 37
 5d2:	fe 4f       	sbci	r31, 0xFE	; 254
 5d4:	80 81       	ld	r24, Z
 5d6:	91 81       	ldd	r25, Z+1	; 0x01
 5d8:	90 70       	andi	r25, 0x00	; 0
 5da:	0a c0       	rjmp	.+20     	; 0x5f0 <F_LCD_WASII+0xca>
				else
					F_SPLC501_Write_Data(((Asii8[a+i])>>8)&0xff);
 5dc:	e0 0f       	add	r30, r16
 5de:	f1 1f       	adc	r31, r17
 5e0:	ee 0f       	add	r30, r30
 5e2:	ff 1f       	adc	r31, r31
 5e4:	e5 52       	subi	r30, 0x25	; 37
 5e6:	fe 4f       	sbci	r31, 0xFE	; 254
 5e8:	80 81       	ld	r24, Z
 5ea:	91 81       	ldd	r25, Z+1	; 0x01
 5ec:	89 2f       	mov	r24, r25
 5ee:	99 27       	eor	r25, r25
 5f0:	0e 94 ae 00 	call	0x15c <F_SPLC501_Write_Data>
 5f4:	0f 5f       	subi	r16, 0xFF	; 255
 5f6:	1f 4f       	sbci	r17, 0xFF	; 255
 5f8:	08 30       	cpi	r16, 0x08	; 8
 5fa:	11 05       	cpc	r17, r1
 5fc:	04 f3       	brlt	.-64     	; 0x5be <F_LCD_WASII+0x98>
 5fe:	08 94       	sec
 600:	e1 1c       	adc	r14, r1
 602:	f1 1c       	adc	r15, r1
 604:	82 e0       	ldi	r24, 0x02	; 2
 606:	e8 16       	cp	r14, r24
 608:	f1 04       	cpc	r15, r1
 60a:	0c f4       	brge	.+2      	; 0x60e <F_LCD_WASII+0xe8>
 60c:	bf cf       	rjmp	.-130    	; 0x58c <F_LCD_WASII+0x66>
			}
		}
	}
	F_SPLC501_Write_Com(0xee);
 60e:	8e ee       	ldi	r24, 0xEE	; 238
 610:	90 e0       	ldi	r25, 0x00	; 0
 612:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 616:	cf 91       	pop	r28
 618:	1f 91       	pop	r17
 61a:	0f 91       	pop	r16
 61c:	ff 90       	pop	r15
 61e:	ef 90       	pop	r14
 620:	df 90       	pop	r13
 622:	cf 90       	pop	r12
 624:	bf 90       	pop	r11
 626:	af 90       	pop	r10
 628:	08 95       	ret

0000062a <LCD501_PutChar>:
//	LED_test();
}  
//********************************************************************************************//
//程序:void LCD501_PutChar(int x,int y,unsigned int a)      [8x16] [6X8]
//描述: 显时8X16、6X8的自带ASCII字符,任意行定位
//参数: x显示字符的起始列(0~128)   y 显示字符的起始行(0~63)
//		a ASCII码					 
// 声明:	手心	20070117	AVRGCC
//注意: 
//********************************************************************************************//
void LCD501_PutChar(int x,int y,unsigned int a)       
{
 62a:	8f 92       	push	r8
 62c:	9f 92       	push	r9
 62e:	af 92       	push	r10
 630:	bf 92       	push	r11
 632:	cf 92       	push	r12
 634:	df 92       	push	r13
 636:	ef 92       	push	r14
 638:	ff 92       	push	r15
 63a:	0f 93       	push	r16
 63c:	1f 93       	push	r17
 63e:	cf 93       	push	r28
 640:	df 93       	push	r29
 642:	9c 01       	movw	r18, r24
 644:	7a 01       	movw	r14, r20
    int i,j,x_com,y_com=0;            //数据暂存
    unsigned int uiData1,uiData2;
    unsigned int Read_Back;					//读回的数据
    if(a>=0x61)
 646:	41 e6       	ldi	r20, 0x61	; 97
 648:	e4 16       	cp	r14, r20
 64a:	f1 04       	cpc	r15, r1
 64c:	40 f0       	brcs	.+16     	; 0x65e <LCD501_PutChar+0x34>
		a=a-0x61+36*8+(a-0x61)*7;
 64e:	b3 e0       	ldi	r27, 0x03	; 3
 650:	ee 0c       	add	r14, r14
 652:	ff 1c       	adc	r15, r15
 654:	ba 95       	dec	r27
 656:	e1 f7       	brne	.-8      	; 0x650 <LCD501_PutChar+0x26>
 658:	88 e1       	ldi	r24, 0x18	; 24
 65a:	9e ef       	ldi	r25, 0xFE	; 254
 65c:	13 c0       	rjmp	.+38     	; 0x684 <LCD501_PutChar+0x5a>
 65e:	c7 01       	movw	r24, r14
 660:	a3 e0       	ldi	r26, 0x03	; 3
 662:	88 0f       	add	r24, r24
 664:	99 1f       	adc	r25, r25
 666:	aa 95       	dec	r26
 668:	e1 f7       	brne	.-8      	; 0x662 <LCD501_PutChar+0x38>
	else 
		if(a>=0x41)
 66a:	41 e4       	ldi	r20, 0x41	; 65
 66c:	e4 16       	cp	r14, r20
 66e:	f1 04       	cpc	r15, r1
 670:	28 f0       	brcs	.+10     	; 0x67c <LCD501_PutChar+0x52>
			a=a-0x41+80+(a-0x41)*7;
 672:	f8 e4       	ldi	r31, 0x48	; 72
 674:	ef 2e       	mov	r14, r31
 676:	fe ef       	ldi	r31, 0xFE	; 254
 678:	ff 2e       	mov	r15, r31
 67a:	04 c0       	rjmp	.+8      	; 0x684 <LCD501_PutChar+0x5a>
		else
			a=a-0x30+(a-0x30)*7;
 67c:	e0 e8       	ldi	r30, 0x80	; 128
 67e:	ee 2e       	mov	r14, r30
 680:	ee ef       	ldi	r30, 0xFE	; 254
 682:	fe 2e       	mov	r15, r30
 684:	e8 0e       	add	r14, r24
 686:	f9 1e       	adc	r15, r25
	if((x+8)>127)
 688:	c9 01       	movw	r24, r18
 68a:	08 96       	adiw	r24, 0x08	; 8
 68c:	80 38       	cpi	r24, 0x80	; 128
 68e:	91 05       	cpc	r25, r1
 690:	7c f0       	brlt	.+30     	; 0x6b0 <LCD501_PutChar+0x86>
	{
		x_com=4;
 692:	54 e0       	ldi	r21, 0x04	; 4
 694:	85 2e       	mov	r8, r21
 696:	91 2c       	mov	r9, r1
		y_com=y/8+1;
 698:	cb 01       	movw	r24, r22
 69a:	77 fd       	sbrc	r23, 7
 69c:	07 96       	adiw	r24, 0x07	; 7
 69e:	8c 01       	movw	r16, r24
 6a0:	43 e0       	ldi	r20, 0x03	; 3
 6a2:	15 95       	asr	r17
 6a4:	07 95       	ror	r16
 6a6:	4a 95       	dec	r20
 6a8:	e1 f7       	brne	.-8      	; 0x6a2 <LCD501_PutChar+0x78>
 6aa:	0f 5f       	subi	r16, 0xFF	; 255
 6ac:	1f 4f       	sbci	r17, 0xFF	; 255
 6ae:	0a c0       	rjmp	.+20     	; 0x6c4 <LCD501_PutChar+0x9a>
	}
	else
	{	
		x_com=x;
 6b0:	49 01       	movw	r8, r18
		y_com=y/8;
 6b2:	cb 01       	movw	r24, r22
 6b4:	77 fd       	sbrc	r23, 7
 6b6:	07 96       	adiw	r24, 0x07	; 7
 6b8:	8c 01       	movw	r16, r24
 6ba:	33 e0       	ldi	r19, 0x03	; 3
 6bc:	15 95       	asr	r17
 6be:	07 95       	ror	r16
 6c0:	3a 95       	dec	r19
 6c2:	e1 f7       	brne	.-8      	; 0x6bc <LCD501_PutChar+0x92>
	}
    if((y+16)<64)
 6c4:	60 5f       	subi	r22, 0xF0	; 240
 6c6:	7f 4f       	sbci	r23, 0xFF	; 255
 6c8:	60 34       	cpi	r22, 0x40	; 64
 6ca:	71 05       	cpc	r23, r1
 6cc:	1c f4       	brge	.+6      	; 0x6d4 <LCD501_PutChar+0xaa>
		y_com=y_com+0xb0;
 6ce:	00 55       	subi	r16, 0x50	; 80
 6d0:	1f 4f       	sbci	r17, 0xFF	; 255
 6d2:	02 c0       	rjmp	.+4      	; 0x6d8 <LCD501_PutChar+0xae>
	else
		y_com=0xb0;
 6d4:	00 eb       	ldi	r16, 0xB0	; 176
 6d6:	10 e0       	ldi	r17, 0x00	; 0
	for(j=0;j<2;j++)
 6d8:	aa 24       	eor	r10, r10
 6da:	bb 24       	eor	r11, r11
	{
		F_SPLC501_Write_Com(y_com+j);				//设置初始页地址
 6dc:	c8 01       	movw	r24, r16
 6de:	8a 0d       	add	r24, r10
 6e0:	9b 1d       	adc	r25, r11
 6e2:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
		F_SPLC501_Write_Com(x_com&0x0f);			//设置初始列地址 
 6e6:	c4 01       	movw	r24, r8
 6e8:	8f 70       	andi	r24, 0x0F	; 15
 6ea:	90 70       	andi	r25, 0x00	; 0
 6ec:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
		F_SPLC501_Write_Com(((x_com >> 4)&0x0f)|0x10);	
 6f0:	c4 01       	movw	r24, r8
 6f2:	24 e0       	ldi	r18, 0x04	; 4
 6f4:	95 95       	asr	r25
 6f6:	87 95       	ror	r24
 6f8:	2a 95       	dec	r18
 6fa:	e1 f7       	brne	.-8      	; 0x6f4 <LCD501_PutChar+0xca>
 6fc:	8f 70       	andi	r24, 0x0F	; 15
 6fe:	90 70       	andi	r25, 0x00	; 0
 700:	80 61       	ori	r24, 0x10	; 16
 702:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 706:	e7 01       	movw	r28, r14
 708:	ce 0d       	add	r28, r14
 70a:	df 1d       	adc	r29, r15
 70c:	c5 52       	subi	r28, 0x25	; 37
 70e:	de 4f       	sbci	r29, 0xFE	; 254
 710:	87 e0       	ldi	r24, 0x07	; 7
 712:	c8 2e       	mov	r12, r24
 714:	d1 2c       	mov	r13, r1
		for(i=0;i<8;i++)
		{   
			if(j==0)
 716:	a1 14       	cp	r10, r1
 718:	b1 04       	cpc	r11, r1
 71a:	21 f4       	brne	.+8      	; 0x724 <LCD501_PutChar+0xfa>
			{
				uiData1 = (Asii8[a+i])&0x00ff;
 71c:	88 81       	ld	r24, Y
 71e:	99 81       	ldd	r25, Y+1	; 0x01
				F_SPLC501_Write_Data(uiData1);
 720:	90 70       	andi	r25, 0x00	; 0
 722:	04 c0       	rjmp	.+8      	; 0x72c <LCD501_PutChar+0x102>
			}
			else 
			{
				uiData1 = (Asii8[a+i]>>8)&0x00ff;
 724:	88 81       	ld	r24, Y
 726:	99 81       	ldd	r25, Y+1	; 0x01
				F_SPLC501_Write_Data(uiData1);
 728:	89 2f       	mov	r24, r25
 72a:	99 27       	eor	r25, r25
 72c:	0e 94 ae 00 	call	0x15c <F_SPLC501_Write_Data>
 730:	08 94       	sec
 732:	c1 08       	sbc	r12, r1
 734:	d1 08       	sbc	r13, r1
 736:	22 96       	adiw	r28, 0x02	; 2
 738:	d7 fe       	sbrs	r13, 7
 73a:	ed cf       	rjmp	.-38     	; 0x716 <LCD501_PutChar+0xec>
			}    
		}
		F_SPLC501_Write_Com(0xee);					//读改写模式结束指令
 73c:	8e ee       	ldi	r24, 0xEE	; 238
 73e:	90 e0       	ldi	r25, 0x00	; 0
 740:	0e 94 a7 00 	call	0x14e <F_SPLC501_Write_Com>
 744:	08 94       	sec
 746:	a1 1c       	adc	r10, r1
 748:	b1 1c       	adc	r11, r1
 74a:	82 e0       	ldi	r24, 0x02	; 2
 74c:	a8 16       	cp	r10, r24
 74e:	b1 04       	cpc	r11, r1
 750:	2c f2       	brlt	.-118    	; 0x6dc <LCD501_PutChar+0xb2>
 752:	df 91       	pop	r29
 754:	cf 91       	pop	r28
 756:	1f 91       	pop	r17
 758:	0f 91       	pop	r16
 75a:	ff 90       	pop	r15
 75c:	ef 90       	pop	r14
 75e:	df 90       	pop	r13
 760:	cf 90       	pop	r12
 762:	bf 90       	pop	r11
 764:	af 90       	pop	r10
 766:	9f 90       	pop	r9
 768:	8f 90       	pop	r8
 76a:	08 95       	ret

0000076c <LCD501_PutString>:
	}
}   
//********************************************************************************************//
//程序:void LCD501_PutString(int x,int y,unsigned int a)      [8x16] [6X8]
//描述: 显时8X16、6X8的自带ASCII字符,任意行定位
//参数:x 显示字符的起始列(0~128)   y 显示字符的起始行(0~63)
//		a ASCII码					  
// 声明:	手心	20070117	AVRGCC
//注意: 
//********************************************************************************************//
void LCD501_PutString(int x,int y,unsigned char * string)       
{
 76c:	ef 92       	push	r14
 76e:	ff 92       	push	r15
 770:	0f 93       	push	r16
 772:	1f 93       	push	r17
 774:	cf 93       	push	r28
 776:	df 93       	push	r29
 778:	8c 01       	movw	r16, r24
 77a:	eb 01       	movw	r28, r22
 77c:	7a 01       	movw	r14, r20
	while(*string!=0)
	{
		if((x+8)>127)
		{
			x = 4;
			y=y+8;
		}
		if((y+16)>63) 
		{
			y =0;
		}
		LCD501_PutChar(x,y,(unsigned int)*string);
		string++;
		x+=8;
 77e:	fa 01       	movw	r30, r20
 780:	80 81       	ld	r24, Z
 782:	88 23       	and	r24, r24
 784:	f1 f0       	breq	.+60     	; 0x7c2 <LCD501_PutString+0x56>
 786:	c8 01       	movw	r24, r16
 788:	08 96       	adiw	r24, 0x08	; 8
 78a:	80 38       	cpi	r24, 0x80	; 128
 78c:	91 05       	cpc	r25, r1
 78e:	1c f0       	brlt	.+6      	; 0x796 <LCD501_PutString+0x2a>
 790:	04 e0       	ldi	r16, 0x04	; 4
 792:	10 e0       	ldi	r17, 0x00	; 0
 794:	28 96       	adiw	r28, 0x08	; 8
 796:	ce 01       	movw	r24, r28
 798:	40 96       	adiw	r24, 0x10	; 16
 79a:	80 34       	cpi	r24, 0x40	; 64
 79c:	91 05       	cpc	r25, r1
 79e:	14 f0       	brlt	.+4      	; 0x7a4 <LCD501_PutString+0x38>
 7a0:	c0 e0       	ldi	r28, 0x00	; 0
 7a2:	d0 e0       	ldi	r29, 0x00	; 0
 7a4:	f7 01       	movw	r30, r14
 7a6:	81 91       	ld	r24, Z+
 7a8:	7f 01       	movw	r14, r30
 7aa:	99 27       	eor	r25, r25
 7ac:	ac 01       	movw	r20, r24
 7ae:	be 01       	movw	r22, r28
 7b0:	c8 01       	movw	r24, r16
 7b2:	0e 94 15 03 	call	0x62a <LCD501_PutChar>
 7b6:	08 5f       	subi	r16, 0xF8	; 248
 7b8:	1f 4f       	sbci	r17, 0xFF	; 255
 7ba:	f7 01       	movw	r30, r14
 7bc:	80 81       	ld	r24, Z
 7be:	88 23       	and	r24, r24
 7c0:	11 f7       	brne	.-60     	; 0x786 <LCD501_PutString+0x1a>
 7c2:	df 91       	pop	r29
 7c4:	cf 91       	pop	r28
 7c6:	1f 91       	pop	r17
 7c8:	0f 91       	pop	r16
 7ca:	ff 90       	pop	r15
 7cc:	ef 90       	pop	r14
 7ce:	08 95       	ret

000007d0 <_exit>:
 7d0:	ff cf       	rjmp	.-2      	; 0x7d0 <_exit>

⌨️ 快捷键说明

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