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

📄 3510i.s

📁 3510 TFT彩屏的测试程序
💻 S
📖 第 1 页 / 共 4 页
字号:
	brlo L69
L66:
	.dbline 376
	inc R10
L68:
	.dbline 376
	mov R24,R10
	cpi R24,67
	brlo L65
	.dbline 379
; 			LCD_SendData(LCD_BGColor);
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L64:
	xcall pop_gset4x
	.dbline 0 ; func end
	ret
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e LCD_ReadPixel _LCD_ReadPixel fV
;              y -> R10
;              x -> R14
;              b -> R12,R13
;             y2 -> y+12
;             x2 -> y+10
;             y1 -> R14
;             x1 -> y+6
	.even
_LCD_ReadPixel::
	xcall push_arg4
	xcall push_gset5x
	mov R14,R18
	ldd R12,y+14
	ldd R13,y+15
	.dbline -1
	.dbline 383
; }
; 
; void LCD_ReadPixel(uchar x1, uchar y1, uchar x2, uchar y2, uchar *b)
; {
	.dbline 385
; 	uchar x, y;
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 386
; 	LCD_SendData(x1);
	ldd R16,y+6
	xcall _LCD_SendData
	.dbline 387
; 	LCD_SendData(x2);
	ldd R16,y+10
	xcall _LCD_SendData
	.dbline 388
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 390
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 391
; 	LCD_SendData(y1);
	mov R16,R14
	xcall _LCD_SendData
	.dbline 392
; 	LCD_SendData(y2);
	ldd R16,y+12
	xcall _LCD_SendData
	.dbline 393
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 395
; 	
; 	LCD_SendCommand(0x2e);		//RAM data read
	ldi R16,46
	xcall _LCD_SendCommand
	.dbline 397
; 	
; 	for(y = y1; y <= y2; y ++)
	mov R10,R14
	xjmp L77
L74:
	.dbline 398
; 		for(x = x1; x <= x2; x ++)
	ldd R14,y+6
	xjmp L81
L78:
	.dbline 399
	.dbline 400
	xcall _LCD_ReadDummy
	.dbline 401
	xcall _LCD_ReadData
	movw R30,R12
	st Z+,R16
	movw R12,R30
	.dbline 402
L79:
	.dbline 398
	inc R14
L81:
	.dbline 398
	ldd R0,y+10
	cp R0,R14
	brsh L78
L75:
	.dbline 397
	inc R10
L77:
	.dbline 397
	ldd R0,y+12
	cp R0,R10
	brsh L74
	.dbline 403
; 		{
; 			LCD_ReadDummy();
; 			*(b ++) = LCD_ReadData();
; 		}
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 405
; 
; 	LCD_SendCommand(0x00);		//NOP
	clr R16
	xcall _LCD_SendCommand
	.dbline 406
; 	LCD_SendData(0x00);
	clr R16
	xcall _LCD_SendData
	.dbline 407
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L73:
	xcall pop_gset5x
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym r y 10 c
	.dbsym r x 14 c
	.dbsym r b 12 pc
	.dbsym l y2 12 c
	.dbsym l x2 10 c
	.dbsym r y1 14 c
	.dbsym l x1 6 c
	.dbend
	.dbfunc e LCD_WritePixel _LCD_WritePixel fV
;              y -> R10
;              x -> R14
;             y2 -> R12
;             x2 -> y+12
;             y1 -> y+10
;             x1 -> y+8
;              b -> y+6
	.even
_LCD_WritePixel::
	xcall push_arg4
	xcall push_gset5x
	ldd R12,y+14
	.dbline -1
	.dbline 411
; }
; 
; void LCD_WritePixel(const unsigned char *b, uchar x1, uchar y1, uchar x2, uchar y2)
; {
	.dbline 413
; 	uchar x, y;
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 414
; 	LCD_SendData(x1);
	ldd R16,y+8
	xcall _LCD_SendData
	.dbline 415
; 	LCD_SendData(x2);
	ldd R16,y+12
	xcall _LCD_SendData
	.dbline 416
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 418
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 419
; 	LCD_SendData(y1);
	ldd R16,y+10
	xcall _LCD_SendData
	.dbline 420
; 	LCD_SendData(y2);
	mov R16,R12
	xcall _LCD_SendData
	.dbline 421
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 423
; 	
; 	LCD_SendCommand(0x2c);		//memory write
	ldi R16,44
	xcall _LCD_SendCommand
	.dbline 424
; 	for(y = y1; y <= y2; y ++)
	ldd R10,y+10
	xjmp L86
L83:
	.dbline 425
; 		for(x = x1; x <= x2; x ++)
	ldd R14,y+8
	xjmp L90
L87:
	.dbline 426
	.dbline 427
	ldd R2,y+6
	ldd R3,y+7
	movw R24,R2
	adiw R24,1
	std y+7,R25
	std y+6,R24
	movw R30,R2
	lpm R16,Z
	xcall _LCD_SendData
	.dbline 430
L88:
	.dbline 425
	inc R14
L90:
	.dbline 425
	ldd R0,y+12
	cp R0,R14
	brsh L87
L84:
	.dbline 424
	inc R10
L86:
	.dbline 424
	cp R12,R10
	brsh L83
	.dbline 431
; 		{
; 			LCD_SendData(*(b ++));
; 			///LCD_SendData(*(b ++));
; 			///LCD_SendData(*(b ++));
; 		}
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L82:
	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 12 c
	.dbsym l y1 10 c
	.dbsym l x1 8 c
	.dbsym l b 6 pkc
	.dbend
	.dbfunc e LCD_WriteEnglishChar _LCD_WriteEnglishChar fV
;           temp -> y+0
;            row -> R10
;           line -> R12
;              y -> R14
;              x -> y+56
;              c -> y+54
	.even
_LCD_WriteEnglishChar::
	xcall push_arg4
	xcall push_gset5x
	sbiw R28,48
	ldd R14,y+58
	.dbline -1
	.dbline 435
; }
; 
; void LCD_WriteEnglishChar(uchar c, uchar x, uchar y)
; {
	.dbline 438
; 	uchar row,line;
; 	uchar temp[6][8];
; 	c-=32;
	ldd R24,y+54
	subi R24,32
	std y+54,R24
	.dbline 439
; 	for(row=0;row<6;row++)
	clr R10
	xjmp L95
L92:
	.dbline 440
; 	{
	.dbline 441
; 		for(line=0;line<8;line++)
	clr R12
	xjmp L99
L96:
	.dbline 442
; 		{
	.dbline 443
; 			if(get_bit(font6x8[c][row],line))
	ldi R24,6
	ldd R0,y+54
	mul R24,R0
	movw R2,R0
	ldi R24,<_font6x8
	ldi R25,>_font6x8
	add R2,R24
	adc R3,R25
	mov R30,R10
	clr R31
	add R30,R2
	adc R31,R3
	lpm R30,Z
	ldi R16,1
	mov R17,R12
	xcall lsl8
	and R30,R16
	breq L100
	.dbline 444
; 				temp[row][line]=LCD_PenColor;
	ldi R24,8
	mul R24,R10
	movw R2,R0
	movw R24,R28
	add R2,R24
	adc R3,R25
	mov R30,R12
	clr R31
	add R30,R2
	adc R31,R3
	lds R2,_LCD_PenColor
	std z+0,R2
	xjmp L101
L100:
	.dbline 446
; 			else
; 				temp[row][line]=LCD_BGColor;
	ldi R24,8
	mul R24,R10
	movw R2,R0
	movw R24,R28
	add R2,R24
	adc R3,R25
	mov R30,R12
	clr R31
	add R30,R2
	adc R31,R3
	lds R2,_LCD_BGColor
	std z+0,R2
L101:
	.dbline 447
L97:
	.dbline 441
	inc R12
L99:
	.dbline 441
	mov R24,R12
	cpi R24,8
	brsh X0
	xjmp L96
X0:
	.dbline 448
L93:
	.dbline 439
	inc R10
L95:
	.dbline 439
	mov R24,R10
	cpi R24,6
	brsh X1
	xjmp L92
X1:
	.dbline 449
; 		}
; 	}
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 450
; 	LCD_SendData(x);
	ldd R16,y+56
	xcall _LCD_SendData
	.dbline 451
; 	LCD_SendData(x+5);
	ldd R16,y+56
	subi R16,251    ; addi 5
	xcall _LCD_SendData
	.dbline 452
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 454
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 455
; 	LCD_SendData(y);
	mov R16,R14
	xcall _LCD_SendData
	.dbline 456
; 	LCD_SendData(y+7);
	mov R16,R14
	subi R16,249    ; addi 7
	xcall _LCD_SendData
	.dbline 457
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 459
; 	
; 	LCD_SendCommand(0x2c);
	ldi R16,44
	xcall _LCD_SendCommand
	.dbline 460
; 	for(row=0;row<8;row++)
	clr R10
	xjmp L105
L102:
	.dbline 461
; 		for(line=0;line<6;line++)
	clr R12
	xjmp L109
L106:
	.dbline 462
	ldi R24,8
	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
L107:
	.dbline 461
	inc R12
L109:
	.dbline 461
	mov R24,R12
	cpi R24,6
	brlo L106
L103:
	.dbline 460
	inc R10
L105:
	.dbline 460
	mov R24,R10
	cpi R24,8
	brlo L102
	.dbline 463
; 			LCD_SendData(temp[line][row]);
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline -2
L91:
	adiw R28,48
	xcall pop_gset5x
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l temp 0 A[48:6:8]c
	.dbsym r row 10 c
	.dbsym r line 12 c
	.dbsym r y 14 c
	.dbsym l x 56 c
	.dbsym l c 54 c
	.dbend
	.dbfunc e LCD_WriteEnglishString _LCD_WriteEnglishString fV
;              y -> R10
;              x -> R12
;         string -> R14,R15
	.even
_LCD_WriteEnglishString::
	xcall push_gset5x
	mov R12,R18
	movw R14,R16
	sbiw R28,1
	ldd R10,y+7
	.dbline -1
	.dbline 466
; }
; void LCD_WriteEnglishString(uchar *string, uchar x, uchar y)
; {
	xjmp L112
L111:
	.dbline 468
; 	while(*string)
; 	{
	.dbline 469
; 		LCD_WriteEnglishChar(*string, x, y);
	std y+0,R10
	mov R18,R12
	movw R30,R14
	ldd R16,z+0
	xcall _LCD_WriteEnglishChar
	.dbline 470
; 		string++;
	movw R24,R14
	adiw R24,1
	movw R14,R24
	.dbline 471
; 		x+=6;
	mov R24,R12
	subi R24,250    ; addi 6
	mov R12,R24
	.dbline 472
; 		if(x>=92)
	cpi R24,92
	brlo L114
	.dbline 473
; 		{
	.dbline 474
; 			x=0;
	clr R12
	.dbline 475
; 			y+=8;
	mov R24,R10
	subi R24,248    ; addi 8
	mov R10,R24
	.dbline 476
; 			if((*string)==32)//32 is space char
	movw R30,R14
	ldd R24,z+0
	cpi R24,32
	brne L116
	.dbline 477
; 				string++;
	movw R24,R30
	adiw R24,1
	movw R14,R24
L116:
	.dbline 478
; 			if(y>=67)
	mov R24,R10
	cpi R24,67
	brlo L118
	.dbline 479
; 			 	y=0;
	clr R10
L118:
	.dbline 480
; 		}
L114:
	.dbline 481
L112:
	.dbline 467
	movw R30,R14
	ldd R2,z+0
	tst R2
	brne L111
	.dbline -2
L110:
	adiw R28,1
	xcall pop_gset5x
	.dbline 0 ; func end
	ret
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbsym r string 14 pc
	.dbend
	.dbfunc e LCD_WriteChineseChar _LCD_WriteChineseChar fV
;           temp -> y+0
;            row -> R10
;           line -> R12
;              y -> R14
;              x -> y+200
;              c -> y+198
	.even
_LCD_WriteChineseChar::
	xcall push_arg4
	xcall push_gset5x
	sbiw R28,63
	sbiw R28,63
	sbiw R28,63
	sbiw R28,3  ; offset = 192
	movw R30,R28
	subi R30,54  ; addi 202
	sbci R31,255
	ldd R14,z+0
	.dbline -1
	.dbline 543
; 	}
; }
; //16*16的字
; /*void LCD_WriteChineseChar(uchar (*c)[32], uchar x, uchar y)
; {
; 	uchar row,line;
; 	uchar temp[16][16];
; 	for(row=0;row<16;row++)
; 	{
; 		for(line=0;line<8;line++)
; 		{
; 			if(get_bit((*c)[row],line))
; 				temp[row][line]=LCD_PenColor;
; 			else
; 				temp[row][line]=LCD_BGColor;
; 		}
; 	}
; 	for(row=0;row<16;row++)
; 	{
; 		for(line=0;line<8;line++)
; 		{
; 			if(get_bit((*c)[row+16],line))
; 				temp[row][line+8]=LCD_PenColor;
; 			else
; 				temp[row][line+8]=LCD_BGColor;
; 		}
; 	}
; 	LCD_SendCommand(0x2a);		//column address set
; 	LCD_SendData(x);
; 	LCD_SendData(x+15);
; 	LCD_DataOver();
; 
; 	LCD_SendCommand(0x2b);		//page address set
; 	LCD_SendData(y);
; 	LCD_SendData(y+15);
; 	LCD_DataOver();
; 	
; 	LCD_SendCommand(0x2c);
; 	for(row=0;row<16;row++)
; 		for(line=0;line<16;line++)
; 			LCD_SendData(temp[line][row]);
; 	LCD_DataOver();
; }
; void LCD_WriteChineseString(uchar (*c)[32], uchar num, uchar x, uchar y)
; {
; 	uchar i;
; 	for(i=0;i<num;i++)
; 	{
; 		LCD_WriteChineseChar(c, x, y);
; 		c++;
; 		x+=16;
; 		if(x>=96)
; 		{
; 			x=0;
; 			y+=16;
; 			if(y>=62)
; 			 	y=0;
; 		}
; 	}
; }*/
; //12x12
; void LCD_WriteChineseChar(const uchar (*c)[24], uchar x, uchar y)
; {
	.dbline 546
; 	uchar row,line;
; 	uchar temp[12][16];
; 	for(row=0;row<12;row++)
	clr R10
	xjmp L124
L121:
	.dbline 547
; 	{
	.dbline 548
; 		for(line=0;line<8;line++)
	clr R12
	xjmp L128
L125:
	.dbline 549
; 		{
	.dbline 550
; 			if(get_bit((*c)[row],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
	lpm R30,Z
	and R30,R16
	breq L129
	.dbline 551
; 				temp[row][line]=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
	add R30,R2
	adc R31,R3
	lds R2,_LCD_PenColor
	std z+0,R2
	xjmp L130
L129:
	.dbline 553
; 			else
; 				temp[row][line]=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
	add R30,R2
	adc R31,R3
	lds R2,_LCD_BGColor
	std z+0,R2
L130:
	.dbline 554
L126:
	.dbline 548
	inc R12
L128:
	.dbline 548
	mov R24,R12
	cpi R24,8
	brsh X2
	xjmp L125
X2:
	.dbline 555
L122:
	.dbline 546
	inc R10
L124:
	.dbline 546
	mov R24,R10
	cpi R24,12
	brsh X3
	xjmp L121
X3:
	.dbline 556
; 		}
; 	}
; 	for(row=0;row<12;row++)
	clr R10
	xjmp L134
L131:
	.dbline 557
; 	{
	.dbline 558
; 		for(line=0;line<8;line++)
	clr R12
	xjmp L138
L135:

⌨️ 快捷键说明

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