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

📄 3510i.s

📁 3510 TFT彩屏的测试程序
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbline 559
; 		{
	.dbline 560
; 			if(get_bit((*c)[row+12],line))
	ldi R16,1
	mov R17,R12
	xcall lsl8
	mov R30,R10
	clr R31
	movw R26,R28
	subi R26,58  ; addi 198
	sbci R27,255
	ld R0,x+
	ld R1,x
	add R30,R0
	adc R31,R1
	adiw R30,12
	lpm R30,Z
	and R30,R16
	breq L139
	.dbline 561
; 				temp[row][line+8]=LCD_PenColor;
	ldi R24,16
	mul R24,R10
	movw R2,R0
	movw R24,R28
	add R2,R24
	adc R3,R25
	mov R30,R12
	clr R31
	adiw R30,8
	add R30,R2
	adc R31,R3
	lds R2,_LCD_PenColor
	std z+0,R2
	xjmp L140
L139:
	.dbline 563
; 			else
; 				temp[row][line+8]=LCD_BGColor;
	ldi R24,16
	mul R24,R10
	movw R2,R0
	movw R24,R28
	add R2,R24
	adc R3,R25
	mov R30,R12
	clr R31
	adiw R30,8
	add R30,R2
	adc R31,R3
	lds R2,_LCD_BGColor
	std z+0,R2
L140:
	.dbline 564
L136:
	.dbline 558
	inc R12
L138:
	.dbline 558
	mov R24,R12
	cpi R24,8
	brsh X4
	xjmp L135
X4:
	.dbline 565
L132:
	.dbline 556
	inc R10
L134:
	.dbline 556
	mov R24,R10
	cpi R24,12
	brsh X5
	xjmp L131
X5:
	.dbline 566
; 		}
; 	}
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 567
; 	LCD_SendData(x);
	movw R30,R28
	subi R30,56  ; addi 200
	sbci R31,255
	ldd R16,z+0
	xcall _LCD_SendData
	.dbline 568
; 	LCD_SendData(x+11);
	movw R30,R28
	subi R30,56  ; addi 200
	sbci R31,255
	ldd R16,z+0
	subi R16,245    ; addi 11
	xcall _LCD_SendData
	.dbline 569
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 571
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 572
; 	LCD_SendData(y);
	mov R16,R14
	xcall _LCD_SendData
	.dbline 573
; 	LCD_SendData(y+15);
	mov R16,R14
	subi R16,241    ; addi 15
	xcall _LCD_SendData
	.dbline 574
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 576
; 	
; 	LCD_SendCommand(0x2c);
	ldi R16,44
	xcall _LCD_SendCommand
	.dbline 577
; 	for(row=0;row<16;row++)
	clr R10
	xjmp L144
L141:
	.dbline 578
; 		for(line=0;line<12;line++)
	clr R12
	xjmp L148
L145:
	.dbline 579
	ldi R24,16
	mul R24,R12
	movw R2,R0
	movw R24,R28
	add R2,R24
	adc R3,R25
	mov R30,R10
	clr R31
	add R30,R2
	adc R31,R3
	ldd R16,z+0
	xcall _LCD_SendData
L146:
	.dbline 578
	inc R12
L148:
	.dbline 578
	mov R24,R12
	cpi R24,12
	brlo L145
L142:
	.dbline 577
	inc R10
L144:
	.dbline 577
	mov R24,R10
	cpi R24,16
	brlo L141
	.dbline 580
; 			LCD_SendData(temp[line][row]);
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L120:
	adiw R28,63
	adiw R28,63
	adiw R28,63
	adiw R28,3  ; offset = 192
	xcall pop_gset5x
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l temp 0 A[192:12:16]c
	.dbsym r row 10 c
	.dbsym r line 12 c
	.dbsym r y 14 c
	.dbsym l x 200 c
	.dbsym l c 198 pA[24:24]kc
	.dbend
	.dbfunc e LCD_WriteChineseString _LCD_WriteChineseString fV
;              i -> R10
;              y -> R12
;              x -> R14
;            num -> y+7
;              c -> R2,R3
	.even
_LCD_WriteChineseString::
	st -y,r19
	st -y,r18
	xcall push_gset5x
	movw R2,R16
	sbiw R28,1
	ldd R14,y+9
	ldd R12,y+11
	.dbline -1
	.dbline 583
; }
; void LCD_WriteChineseString(const uchar (*c)[24], uchar num, uchar x, uchar y)
; {
	.dbline 585
; 	uchar i;
; 	for(i=0;i<num;i++)
	clr R10
	xjmp L153
L150:
	.dbline 586
; 	{
	.dbline 587
; 		LCD_WriteChineseChar(c, x, y);
	std y+0,R12
	mov R18,R14
	movw R16,R2
	push R16
	push R17
	xcall _LCD_WriteChineseChar
	pop R3
	pop R2
	.dbline 588
; 		c++;
	movw R24,R2
	adiw R24,24
	movw R2,R24
	.dbline 589
; 		x+=12;
	mov R24,R14
	subi R24,244    ; addi 12
	mov R14,R24
	.dbline 590
; 		if(x>=96)
	cpi R24,96
	brlo L154
	.dbline 591
; 		{
	.dbline 592
; 			x=0;
	clr R14
	.dbline 593
; 			y+=13;//行与行之间空一搁
	mov R24,R12
	subi R24,243    ; addi 13
	mov R12,R24
	.dbline 594
; 			if(y>=62)
	cpi R24,62
	brlo L156
	.dbline 595
; 			 	y=0;
	clr R12
L156:
	.dbline 596
; 		}
L154:
	.dbline 597
L151:
	.dbline 585
	inc R10
L153:
	.dbline 585
	ldd R0,y+7
	cp R10,R0
	brlo L150
	.dbline -2
L149:
	adiw R28,1
	xcall pop_gset5x
	adiw R28,2
	.dbline 0 ; func end
	ret
	.dbsym r i 10 c
	.dbsym r y 12 c
	.dbsym r x 14 c
	.dbsym l num 7 c
	.dbsym r c 2 pA[24:24]kc
	.dbend
	.dbfunc e LCD_EraseBlock _LCD_EraseBlock fV
;              y -> R10
;              x -> R14
;             y2 -> R12
;             x2 -> y+10
;             y1 -> R14
;             x1 -> y+6
	.even
_LCD_EraseBlock::
	xcall push_arg4
	xcall push_gset5x
	mov R14,R18
	ldd R12,y+12
	.dbline -1
	.dbline 600
; 	}
; }
; void LCD_EraseBlock(uchar x1,uchar y1, uchar x2, uchar y2)
; {
	.dbline 602
; 	uchar x, y;
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 603
; 	LCD_SendData(x1);
	ldd R16,y+6
	xcall _LCD_SendData
	.dbline 604
; 	LCD_SendData(x2);
	ldd R16,y+10
	xcall _LCD_SendData
	.dbline 605
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 607
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 608
; 	LCD_SendData(y1);
	mov R16,R14
	xcall _LCD_SendData
	.dbline 609
; 	LCD_SendData(y2);
	mov R16,R12
	xcall _LCD_SendData
	.dbline 610
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 612
; 	
; 	LCD_SendCommand(0x2c);		//memory write
	ldi R16,44
	xcall _LCD_SendCommand
	.dbline 613
; 	for(y = y1; y <= y2; y ++)
	mov R10,R14
	xjmp L162
L159:
	.dbline 614
; 		for(x = x1; x <= x2; x ++)
	ldd R14,y+6
	xjmp L166
L163:
	.dbline 615
	lds R16,_LCD_BGColor
	xcall _LCD_SendData
L164:
	.dbline 614
	inc R14
L166:
	.dbline 614
	ldd R0,y+10
	cp R0,R14
	brsh L163
L160:
	.dbline 613
	inc R10
L162:
	.dbline 613
	cp R12,R10
	brsh L159
	.dbline 616
; 			LCD_SendData(LCD_BGColor);
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L158:
	xcall pop_gset5x
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r y 10 c
	.dbsym r x 14 c
	.dbsym r y2 12 c
	.dbsym l x2 10 c
	.dbsym r y1 14 c
	.dbsym l x1 6 c
	.dbend
	.dbfunc e LCD_DrawPoint _LCD_DrawPoint fV
;              y -> R10
;              x -> R12
	.even
_LCD_DrawPoint::
	xcall push_gset4x
	mov R10,R18
	mov R12,R16
	.dbline -1
	.dbline 619
; }
; void LCD_DrawPoint(uchar x, uchar y)
; {
	.dbline 620
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 621
; 	LCD_SendData(x);
	mov R16,R12
	xcall _LCD_SendData
	.dbline 622
; 	LCD_SendData(x);
	mov R16,R12
	xcall _LCD_SendData
	.dbline 623
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 625
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 626
; 	LCD_SendData(y);
	mov R16,R10
	xcall _LCD_SendData
	.dbline 627
; 	LCD_SendData(y);
	mov R16,R10
	xcall _LCD_SendData
	.dbline 628
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 630
; 	
; 	LCD_SendCommand(0x2c);		//memory write
	ldi R16,44
	xcall _LCD_SendCommand
	.dbline 631
; 	LCD_SendData(LCD_PenColor);
	lds R16,_LCD_PenColor
	xcall _LCD_SendData
	.dbline 632
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L167:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e LCD_DrawLine _LCD_DrawLine fV
;              t -> R10
;              y -> R12
;              x -> R14
;             y2 -> y+12
;             x2 -> y+10
;             y1 -> y+8
;             x1 -> y+6
	.even
_LCD_DrawLine::
	xcall push_arg4
	xcall push_gset5x
	.dbline -1
	.dbline 636
; }
; 
; void LCD_DrawLine(uchar x1, uchar y1, uchar x2, uchar y2)
; {
	.dbline 638
; 	uchar x, y, t;
; 	if((x1 == x2) && (y1 == y2))
	ldd R0,y+6
	ldd R16,y+10
	cp R0,R16
	brne L169
	ldd R0,y+8
	ldd R16,y+12
	cp R0,R16
	brne L169
	.dbline 639
; 		LCD_DrawPoint(x1, y1);
	mov R18,R0
	ldd R16,y+6
	xcall _LCD_DrawPoint
	xjmp L170
L169:
	.dbline 640
; 	else if(fabs(y2 - y1) > fabs(x2 - x1))
	ldd R2,y+8
	clr R3
	ldd R16,y+12
	clr R17
	sub R16,R2
	sbc R17,R3
	xcall int2fp
	xcall _fabs
	movw R2,R16
	movw R4,R18
	ldd R6,y+6
	clr R7
	ldd R16,y+10
	clr R17
	sub R16,R6
	sbc R17,R7
	xcall int2fp
	push R2
	push R3
	push R4
	push R5
	xcall _fabs
	pop R5
	pop R4
	pop R3
	pop R2
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	xcall cmp32f
	brge L171
	.dbline 641
; 	{
	.dbline 642
; 		if(y1 > y2)
	ldd R0,y+12
	ldd R16,y+8
	cp R0,R16
	brsh L173
	.dbline 643
; 		{
	.dbline 644
; 			t = y1;
	mov R10,R16
	.dbline 645
; 			y1 = y2;
	std y+8,R0
	.dbline 646
; 			y2 = t;
	std y+12,R10
	.dbline 647
; 			t = x1;
	ldd R10,y+6
	.dbline 648
; 			x1 = x2;
	ldd R0,y+10
	std y+6,R0
	.dbline 649
; 			x2 = t;
	std y+10,R10
	.dbline 650
; 		}
L173:
	.dbline 651
; 		for(y = y1; y <= y2; y ++)
	ldd R12,y+8
	xjmp L178
L175:
	.dbline 652
	.dbline 653
	ldd R2,y+10
	ldd R0,y+6
	sub R2,R0
	mov R3,R12
	ldd R0,y+8
	sub R3,R0
	mul R3,R2
	mov R16,R0
	ldd R17,y+12
	ldd R0,y+8
	sub R17,R0
	xcall div8u
	mov R14,R16
	ldd R0,y+6
	add R14,R0
	.dbline 654
	mov R18,R12
	mov R16,R14
	xcall _LCD_DrawPoint
	.dbline 655
L176:
	.dbline 651
	inc R12
L178:
	.dbline 651
	ldd R0,y+12
	cp R0,R12
	brsh L175
	.dbline 656
; 		{
; 			x = (y - y1) * (x2 - x1) / (y2 - y1) + x1;
; 			LCD_DrawPoint(x, y);
; 		}
; 	}
	xjmp L172
L171:
	.dbline 658
; 	else
; 	{
	.dbline 659
; 		if(x1 > x2)
	ldd R0,y+10
	ldd R16,y+6
	cp R0,R16
	brsh L179
	.dbline 660
; 		{
	.dbline 661
; 			t = y1;
	ldd R10,y+8
	.dbline 662
; 			y1 = y2;
	ldd R0,y+12
	std y+8,R0
	.dbline 663
; 			y2 = t;
	std y+12,R10
	.dbline 664
; 			t = x1;
	ldd R10,y+6
	.dbline 665
; 			x1 = x2;
	ldd R0,y+10
	std y+6,R0
	.dbline 666
; 			x2 = t;
	std y+10,R10
	.dbline 667
; 		}
L179:
	.dbline 668
; 		for(x = x1; x <= x2; x ++)
	ldd R14,y+6
	xjmp L184
L181:
	.dbline 669
	.dbline 670
	ldd R2,y+12
	ldd R0,y+8
	sub R2,R0
	mov R3,R14
	ldd R0,y+6
	sub R3,R0
	mul R3,R2
	mov R16,R0
	ldd R17,y+10
	ldd R0,y+6
	sub R17,R0
	xcall div8u
	mov R12,R16
	ldd R0,y+8
	add R12,R0
	.dbline 671
	mov R18,R12
	mov R16,R14
	xcall _LCD_DrawPoint
	.dbline 672
L182:
	.dbline 668
	inc R14
L184:
	.dbline 668
	ldd R0,y+10
	cp R0,R14
	brsh L181
	.dbline 673
; 		{
; 			y = (x - x1) * (y2 - y1) / (x2 - x1) + y1;
; 			LCD_DrawPoint(x, y);
; 		}
; 	}
L172:
L170:
	.dbline -2
L168:
	xcall pop_gset5x
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r t 10 c
	.dbsym r y 12 c
	.dbsym r x 14 c
	.dbsym l y2 12 c
	.dbsym l x2 10 c
	.dbsym l y1 8 c
	.dbsym l x1 6 c
	.dbend
	.dbfunc e LCD_DrawRectangle _LCD_DrawRectangle fV
;             y2 -> R12
;             x2 -> y+9
;             y1 -> R14
;             x1 -> R10
	.even
_LCD_DrawRectangle::
	xcall push_gset5x
	mov R14,R18
	mov R10,R16
	sbiw R28,3
	ldd R12,y+11
	.dbline -1
	.dbline 677
; }
; 
; void LCD_DrawRectangle(uchar x1, uchar y1, uchar x2, uchar y2)
; {
	.dbline 678
; 	LCD_DrawLine(x1, y1, x2, y1);
	std y+2,R14
	ldd R0,y+9
	std y+0,R0
	mov R18,R14
	mov R16,R10
	xcall _LCD_DrawLine
	.dbline 679
; 	LCD_DrawLine(x2, y1, x2, y2);
	std y+2,R12
	ldd R0,y+9
	std y+0,R0
	mov R18,R14
	mov R16,R0
	xcall _LCD_DrawLine
	.dbline 680
; 	LCD_DrawLine(x2, y2, x1, y2);
	std y+2,R12
	std y+0,R10
	mov R18,R12
	ldd R16,y+9
	xcall _LCD_DrawLine
	.dbline 681
; 	LCD_DrawLine(x1, y2, x1, y1);
	std y+2,R14
	std y+0,R10
	mov R18,R12
	mov R16,R10
	xcall _LCD_DrawLine
	.dbline -2
L185:
	adiw R28,3
	xcall pop_gset5x
	.dbline 0 ; func end
	ret
	.dbsym r y2 12 c
	.dbsym l x2 9 c
	.dbsym r y1 14 c
	.dbsym r x1 10 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile D:\StudyRoom\学习AVR\3510测试ICC版\3510i.c
_LCD_PenColor::
	.blkb 1
	.dbsym e LCD_PenColor _LCD_PenColor c
_LCD_BGColor::
	.blkb 1
	.dbsym e LCD_BGColor _LCD_BGColor c

⌨️ 快捷键说明

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