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

📄 3510i.s

📁 3510 TFT彩屏的测试程序
💻 S
📖 第 1 页 / 共 4 页
字号:
	.dbline -1
	.dbline 155
; //done
; }
; 
; void LCD_ReadDummy(void)
; {
	.dbline 156
; 	clr_bit(LCD_SIO_DDR, LCD_SIO);		//set SDI.DDR = 0
	cbi 0x17,5
	.dbline 157
; 	set_bit(LCD_SIO_PORT, LCD_SIO);	
	sbi 0x18,5
	.dbline 158
; 	clr_bit(LCD_CS_PORT, LCD_CS);		//set CS = L
	cbi 0x18,4
	.dbline 159
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 160
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline -2
L41:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LCD_ReadData _LCD_ReadData fc
;              r -> R16
	.even
_LCD_ReadData::
	.dbline -1
	.dbline 164
; }
; 
; uchar LCD_ReadData(void)
; {
	.dbline 165
; 	uchar r = 0;
	clr R16
	.dbline 166
; 	clr_bit(LCD_SIO_DDR, LCD_SIO);		//set SDI.DDR = 0
	cbi 0x17,5
	.dbline 167
; 	set_bit(LCD_SIO_PORT, LCD_SIO);	
	sbi 0x18,5
	.dbline 168
; 	clr_bit(LCD_CS_PORT, LCD_CS);		//set CS = L
	cbi 0x18,4
	.dbline 170
; //Bit 0(MSB)
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 171
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 172
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L43
	.dbline 173
; 		r |= 0x80;
	ori R16,128
	xjmp L44
L43:
	.dbline 175
; 	else
; 		r &= ~0x80;
	andi R16,127
L44:
	.dbline 177
; //Bit 1
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 178
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 179
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L45
	.dbline 180
; 		r |= 0x40;
	ori R16,64
	xjmp L46
L45:
	.dbline 182
; 	else
; 		r &= ~0x40;
	andi R16,191
L46:
	.dbline 184
; //Bit 2
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 185
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 186
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L47
	.dbline 187
; 		r |= 0x20;
	ori R16,32
	xjmp L48
L47:
	.dbline 189
; 	else
; 		r &= ~0x20;
	andi R16,223
L48:
	.dbline 191
; //Bit 3
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 192
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 193
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L49
	.dbline 194
; 		r |= 0x10;
	ori R16,16
	xjmp L50
L49:
	.dbline 196
; 	else
; 		r &= ~0x10;
	andi R16,239
L50:
	.dbline 198
; //Bit 4
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 199
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 200
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L51
	.dbline 201
; 		r |= 0x08;
	ori R16,8
	xjmp L52
L51:
	.dbline 203
; 	else
; 		r &= ~0x08;
	andi R16,247
L52:
	.dbline 205
; //Bit 5
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 206
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 207
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L53
	.dbline 208
; 		r |= 0x04;
	ori R16,4
	xjmp L54
L53:
	.dbline 210
; 	else
; 		r &= ~0x04;
	andi R16,251
L54:
	.dbline 212
; //Bit 6
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 213
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 214
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L55
	.dbline 215
; 		r |= 0x02;
	ori R16,2
	xjmp L56
L55:
	.dbline 217
; 	else
; 		r &= ~0x02;
	andi R16,253
L56:
	.dbline 219
; //Bit 7(LSB)
; 	clr_bit(LCD_SCL_PORT, LCD_SCL);
	cbi 0x18,7
	.dbline 220
; 	set_bit(LCD_SCL_PORT, LCD_SCL);
	sbi 0x18,7
	.dbline 221
; 	if(set_bit(LCD_SIO_PIN, LCD_SIO))
	in R24,0x16
	ori R24,32
	out 0x16,R24
	tst R24
	breq L57
	.dbline 222
; 		r |= 0x01;
	ori R16,1
	xjmp L58
L57:
	.dbline 224
; 	else
; 		r &= ~0x01;
	andi R16,254
L58:
	.dbline 226
; //done
; 	return r;
	.dbline -2
L42:
	.dbline 0 ; func end
	ret
	.dbsym r r 16 c
	.dbend
	.dbfunc e LCD_Initialize _LCD_Initialize fV
;              i -> R10
	.even
_LCD_Initialize::
	xcall push_gset3x
	.dbline -1
	.dbline 230
; }
; 
; void LCD_Initialize(void)
; {
	.dbline 233
; 	uchar i;
; 
; 	set_bit(LCD_RST_PORT, LCD_RST);		//set RST = H
	sbi 0x18,3
	.dbline 234
; 	set_bit(LCD_RST_DDR, LCD_RST);	//set RST.DDR = 1
	sbi 0x17,3
	.dbline 235
; 	set_bit(LCD_CS_PORT, LCD_CS);		//set CS = H
	sbi 0x18,4
	.dbline 236
; 	set_bit(LCD_CS_DDR, LCD_CS);	//set CS.DDR = 1
	sbi 0x17,4
	.dbline 237
; 	clr_bit(LCD_SIO_PORT, LCD_SIO);		//set SDI = L
	cbi 0x18,5
	.dbline 238
; 	clr_bit(LCD_SIO_DDR, LCD_SIO);	//set SDI.DDR = 0
	cbi 0x17,5
	.dbline 239
; 	set_bit(LCD_SCL_PORT, LCD_SCL);		//set SCK = H
	sbi 0x18,7
	.dbline 240
; 	set_bit(LCD_SCL_DDR, LCD_SCL);	//set SCK.DDR = 1
	sbi 0x17,7
	.dbline 242
; 
; 	LCD_Reset();
	xcall _LCD_Reset
	.dbline 244
; 
; 	LCD_SendCommand(0x01);		//software reset
	ldi R16,1
	xcall _LCD_SendCommand
	.dbline 245
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 246
; 	LCD_Delay();
	xcall _LCD_Delay
	.dbline 248
; 
; 	LCD_SendCommand(0xc6);		//initial escape
	ldi R16,198
	xcall _LCD_SendCommand
	.dbline 249
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 251
; 
; 	LCD_SendCommand(0xb9);		//refresh set
	ldi R16,185
	xcall _LCD_SendCommand
	.dbline 252
; 	LCD_SendData(0x00);
	clr R16
	xcall _LCD_SendData
	.dbline 253
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 255
; 
; 	LCD_SendCommand(0xb6);		//display control
	ldi R16,182
	xcall _LCD_SendCommand
	.dbline 256
; 	LCD_SendData(0x80);
	ldi R16,128
	xcall _LCD_SendData
	.dbline 257
; 	LCD_SendData(0x80);
	ldi R16,128
	xcall _LCD_SendData
	.dbline 258
; 	LCD_SendData(0x81);
	ldi R16,129
	xcall _LCD_SendData
	.dbline 261
; 	//LCD_SendData(0x7f);
; 	//LCD_SendData(0x14);
; 	LCD_SendData(84);
	ldi R16,84
	xcall _LCD_SendData
	.dbline 262
; 	LCD_SendData(69);
	ldi R16,69
	xcall _LCD_SendData
	.dbline 263
; 	LCD_SendData(82);
	ldi R16,82
	xcall _LCD_SendData
	.dbline 264
; 	LCD_SendData(67);
	ldi R16,67
	xcall _LCD_SendData
	.dbline 265
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 267
; 
; 	LCD_SendCommand(0xb3);		//gray scale position set
	ldi R16,179
	xcall _LCD_SendCommand
	.dbline 268
; 	LCD_SendData(1);
	ldi R16,1
	xcall _LCD_SendData
	.dbline 269
; 	LCD_SendData(2);
	ldi R16,2
	xcall _LCD_SendData
	.dbline 270
; 	LCD_SendData(4);
	ldi R16,4
	xcall _LCD_SendData
	.dbline 271
; 	LCD_SendData(8);
	ldi R16,8
	xcall _LCD_SendData
	.dbline 272
; 	LCD_SendData(16);
	ldi R16,16
	xcall _LCD_SendData
	.dbline 273
; 	LCD_SendData(30);
	ldi R16,30
	xcall _LCD_SendData
	.dbline 274
; 	LCD_SendData(40);
	ldi R16,40
	xcall _LCD_SendData
	.dbline 275
; 	LCD_SendData(50);
	ldi R16,50
	xcall _LCD_SendData
	.dbline 276
; 	LCD_SendData(60);
	ldi R16,60
	xcall _LCD_SendData
	.dbline 277
; 	LCD_SendData(70);
	ldi R16,70
	xcall _LCD_SendData
	.dbline 278
; 	LCD_SendData(80);
	ldi R16,80
	xcall _LCD_SendData
	.dbline 279
; 	LCD_SendData(90);
	ldi R16,90
	xcall _LCD_SendData
	.dbline 280
; 	LCD_SendData(100);
	ldi R16,100
	xcall _LCD_SendData
	.dbline 281
; 	LCD_SendData(110);
	ldi R16,110
	xcall _LCD_SendData
	.dbline 282
; 	LCD_SendData(127);
	ldi R16,127
	xcall _LCD_SendData
	.dbline 283
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 285
; 
; 	LCD_SendCommand(0xb5);		//gamma curve set
	ldi R16,181
	xcall _LCD_SendCommand
	.dbline 286
; 	LCD_SendData(0x01);
	ldi R16,1
	xcall _LCD_SendData
	.dbline 287
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 289
; 	
; 	LCD_SendCommand(0x36);		//memery access control
	ldi R16,54
	xcall _LCD_SendCommand
	.dbline 290
; 	LCD_SendData(0x00);
	clr R16
	xcall _LCD_SendData
	.dbline 291
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 293
; 
; 	LCD_SendCommand(0xbd);		//common driver output select//很重要的
	ldi R16,189
	xcall _LCD_SendCommand
	.dbline 294
; 	LCD_SendData(0x04);
	ldi R16,4
	xcall _LCD_SendData
	.dbline 295
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 297
; 
; 	LCD_SendCommand(0xbe);		//power control
	ldi R16,190
	xcall _LCD_SendCommand
	.dbline 298
; 	LCD_SendData(0x04);
	ldi R16,4
	xcall _LCD_SendData
	.dbline 299
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 301
; 
; 	LCD_SendCommand(0x11);		//sleep out
	ldi R16,17
	xcall _LCD_SendCommand
	.dbline 302
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 304
; 	
; 	LCD_SendCommand(0xba);		//voltage control
	ldi R16,186
	xcall _LCD_SendCommand
	.dbline 305
; 	LCD_SendData(127);
	ldi R16,127
	xcall _LCD_SendData
	.dbline 306
; 	LCD_SendData(3);
	ldi R16,3
	xcall _LCD_SendData
	.dbline 307
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 309
; 
; 	LCD_SendCommand(0xb7);		//temperature gradient set
	ldi R16,183
	xcall _LCD_SendCommand
	.dbline 310
; 	for(i = 0; i < 14; i ++)
	clr R10
	xjmp L63
L60:
	.dbline 311
	clr R16
	xcall _LCD_SendData
L61:
	.dbline 310
	inc R10
L63:
	.dbline 310
	mov R24,R10
	cpi R24,14
	brlo L60
	.dbline 312
; 		LCD_SendData(0x00);
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 314
; 
; 	LCD_SendCommand(0x29);		//display ON
	ldi R16,41
	xcall _LCD_SendCommand
	.dbline 315
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 317
; 
; 	LCD_SendCommand(0x03);		//booster voltage ON
	ldi R16,3
	xcall _LCD_SendCommand
	.dbline 318
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 319
; 	LCD_Delay();
	xcall _LCD_Delay
	.dbline 321
; 
; 	LCD_SendCommand(0x20);		//display inversion OFF
	ldi R16,32
	xcall _LCD_SendCommand
	.dbline 322
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 324
; 	
; 	LCD_SendCommand(0x3a);		//interface pixel format
	ldi R16,58
	xcall _LCD_SendCommand
	.dbline 325
; 	LCD_SendData(0x02);
	ldi R16,2
	xcall _LCD_SendData
	.dbline 326
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 328
; 	
; 	LCD_SendCommand(0x2d);		//colour set
	ldi R16,45
	xcall _LCD_SendCommand
	.dbline 330
; //red
; 	LCD_SendData(0x00);
	clr R16
	xcall _LCD_SendData
	.dbline 331
; 	LCD_SendData(0x02);
	ldi R16,2
	xcall _LCD_SendData
	.dbline 332
; 	LCD_SendData(0x03);
	ldi R16,3
	xcall _LCD_SendData
	.dbline 333
; 	LCD_SendData(0x04);
	ldi R16,4
	xcall _LCD_SendData
	.dbline 334
; 	LCD_SendData(0x05);
	ldi R16,5
	xcall _LCD_SendData
	.dbline 335
; 	LCD_SendData(0x06);
	ldi R16,6
	xcall _LCD_SendData
	.dbline 336
; 	LCD_SendData(0x08);
	ldi R16,8
	xcall _LCD_SendData
	.dbline 338
; //green
; 	LCD_SendData(0x0f);
	ldi R16,15
	xcall _LCD_SendData
	.dbline 339
; 	LCD_SendData(0x00);
	clr R16
	xcall _LCD_SendData
	.dbline 340
; 	LCD_SendData(0x02);
	ldi R16,2
	xcall _LCD_SendData
	.dbline 341
; 	LCD_SendData(0x03);
	ldi R16,3
	xcall _LCD_SendData
	.dbline 342
; 	LCD_SendData(0x04);
	ldi R16,4
	xcall _LCD_SendData
	.dbline 343
; 	LCD_SendData(0x05);
	ldi R16,5
	xcall _LCD_SendData
	.dbline 344
; 	LCD_SendData(0x06);
	ldi R16,6
	xcall _LCD_SendData
	.dbline 345
; 	LCD_SendData(0x08);
	ldi R16,8
	xcall _LCD_SendData
	.dbline 346
; 	LCD_SendData(0x0f);
	ldi R16,15
	xcall _LCD_SendData
	.dbline 348
; //blue
; 	LCD_SendData(0x00);
	clr R16
	xcall _LCD_SendData
	.dbline 349
; 	LCD_SendData(0x03);
	ldi R16,3
	xcall _LCD_SendData
	.dbline 350
; 	LCD_SendData(0x06);
	ldi R16,6
	xcall _LCD_SendData
	.dbline 351
; 	LCD_SendData(0x0f);
	ldi R16,15
	xcall _LCD_SendData
	.dbline 352
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 354
; 
; 	LCD_SendCommand(0x25);		//write contrast
	ldi R16,37
	xcall _LCD_SendCommand
	.dbline 355
; 	LCD_SendData(71);
	ldi R16,71
	xcall _LCD_SendData
	.dbline 356
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 358
; 	
; 	LCD_BGColor = 0x00;
	clr R2
	sts _LCD_BGColor,R2
	.dbline 359
; 	LCD_PenColor = 0xff;
	ldi R24,255
	sts _LCD_PenColor,R24
	.dbline -2
L59:
	xcall pop_gset3x
	.dbline 0 ; func end
	ret
	.dbsym r i 10 c
	.dbend
	.dbfunc e LCD_ClearScreen _LCD_ClearScreen fV
;              y -> R10
;              x -> R12
	.even
_LCD_ClearScreen::
	xcall push_gset4x
	.dbline -1
	.dbline 363
; }
; 
; void LCD_ClearScreen(void)
; {
	.dbline 365
; 	uchar x, y;
; 	LCD_SendCommand(0x2a);		//column address set
	ldi R16,42
	xcall _LCD_SendCommand
	.dbline 366
; 	LCD_SendData(0);
	clr R16
	xcall _LCD_SendData
	.dbline 367
; 	LCD_SendData(97);
	ldi R16,97
	xcall _LCD_SendData
	.dbline 368
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 370
; 
; 	LCD_SendCommand(0x2b);		//page address set
	ldi R16,43
	xcall _LCD_SendCommand
	.dbline 371
; 	LCD_SendData(0);
	clr R16
	xcall _LCD_SendData
	.dbline 372
; 	LCD_SendData(66);
	ldi R16,66
	xcall _LCD_SendData
	.dbline 373
; 	LCD_DataOver();
	sbi 0x18,4
	.dbline 375
; 	
; 	LCD_SendCommand(0x2c);		//memory write
	ldi R16,44
	xcall _LCD_SendCommand
	.dbline 376
; 	for(y = 0; y < 67; y ++)
	clr R10
	xjmp L68
L65:
	.dbline 377
; 		for(x = 0; x < 98; x ++)
	clr R12
	xjmp L72
L69:
	.dbline 378
	lds R16,_LCD_BGColor
	xcall _LCD_SendData
L70:
	.dbline 377
	inc R12
L72:
	.dbline 377
	mov R24,R12
	cpi R24,98

⌨️ 快捷键说明

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