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

📄 display.s

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 S
📖 第 1 页 / 共 5 页
字号:
	.dbline 412
; 				else write_LCD(RIGHT,DATA,ch_w); 
	std y+0,R14
	ldi R18,1
	ldi R16,1
	xcall _write_LCD
L97:
	.dbline 413
L90:
	.dbline 401
	inc R12
L92:
	.dbline 401
	cp R12,R22
	brsh X4
	xjmp L89
X4:
	.dbline 414
; 			}
; 			SetPageCol(uPage+1,uCol);
	ldd R18,y+1
	ldd R16,y+2
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 415
; 			for(j=0;j<width;j++)
	clr R12
	xjmp L101
L98:
	.dbline 416
; 			{
	.dbline 417
; 				SetPageCol(uPage+1,uCol+j);
	ldd R18,y+1
	add R18,R12
	ldd R16,y+2
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 419
; 				
; 				ch_r=ASC_16[k].Msk[j];
	ldi R24,17
	mul R24,R20
	movw R2,R0
	ldi R24,<_ASC_16+1
	ldi R25,>_ASC_16+1
	add R2,R24
	adc R3,R25
	mov R30,R12
	clr R31
	add R30,R2
	adc R31,R3
	lpm R10,Z
	.dbline 420
; 				ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
	ldi R24,17
	mul R24,R20
	movw R2,R0
	ldi R24,<_ASC_16+1
	ldi R25,>_ASC_16+1
	add R2,R24
	adc R3,R25
	mov R30,R12
	clr R31
	adiw R30,8
	add R30,R2
	adc R31,R3
	lpm R14,Z
	.dbline 421
; 				ch_r=ch_r>>4;
	mov R24,R10
	swap R24
	andi R24,#0x0F
	mov R10,R24
	.dbline 422
; 				ch_w=ch_w<<4; 
	mov R24,R14
	andi R24,#0x0F
	swap R24
	mov R14,R24
	.dbline 423
; 				ch_w|=ch_r;
	or R14,R10
	.dbline 424
; 				SetPageCol(uPage+1,uCol+j);
	ldd R18,y+1
	add R18,R12
	ldd R16,y+2
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 425
; 				if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
	ldd R24,y+1
	add R24,R12
	cpi R24,64
	brsh L104
	.dbline 425
	std y+0,R14
	ldi R18,1
	clr R16
	xcall _write_LCD
	xjmp L105
L104:
	.dbline 426
; 				else write_LCD(RIGHT,DATA,ch_w); 
	std y+0,R14
	ldi R18,1
	ldi R16,1
	xcall _write_LCD
L105:
	.dbline 427
L99:
	.dbline 415
	inc R12
L101:
	.dbline 415
	cp R12,R22
	brsh X5
	xjmp L98
X5:
	.dbline 428
; 			}
; 		}
L72:
	.dbline 429
; 	}
L64:
	.dbline 430
; 	SetPageCol(uPage,uCol+width);
	ldd R18,y+1
	add R18,R22
	ldd R16,y+2
	xcall _SetPageCol
	.dbline -2
	.dbline 431
; }
L57:
	adiw R28,3
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym r width 22 c
	.dbsym r len 22 c
	.dbsym l uPage 2 c
	.dbsym r ch_r 10 c
	.dbsym l uCol 1 c
	.dbsym r ch_w 14 c
	.dbsym r k 20 c
	.dbsym r j 12 c
	.dbsym r c 10 c
	.dbend
	.dbfunc e disp_hz _disp_hz fV
;          uPage -> y+1
;           ch_r -> R22
;              k -> R10
;           uCol -> R12
;           ch_w -> R14
;              j -> R20
;             hz -> R20,R21
	.even
_disp_hz::
	xcall push_gset5
	movw R20,R16
	sbiw R28,2
	.dbline -1
	.dbline 435
; 
; 
; void disp_hz(unsigned char *hz)
; {
	.dbline 437
; 	unsigned char k,j,uPage,uCol,ch_r,ch_w;
; 	uPage = GetPage();
	xcall _GetPage
	std y+1,R16
	.dbline 438
; 	uCol = GetCol();
	xcall _GetCol
	mov R12,R16
	.dbline 439
; 	for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
	clr R10
	xjmp L110
L107:
	.dbline 440
; 	{
	.dbline 441
; 		if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
	ldi R24,26
	mul R24,R10
	movw R2,R0
	ldi R24,<_GB_16
	ldi R25,>_GB_16
	movw R30,R2
	add R30,R24
	adc R31,R25
	lpm R30,Z
	movw R26,R20
	ld R4,x
	cp R4,R30
	brne L111
	ldi R24,<_GB_16+1
	ldi R25,>_GB_16+1
	movw R30,R2
	add R30,R24
	adc R31,R25
	lpm R30,Z
	adiw R26,1
	ld R2,x
	cp R2,R30
	brne L111
	.dbline 442
; 			break;
	xjmp L109
L111:
	.dbline 443
L108:
	.dbline 439
	inc R10
L110:
	.dbline 439
	mov R24,R10
	cpi R24,18
	brlo L107
L109:
	.dbline 445
; 	}
; 
; 	if(CurOffset==1) 
	lds R24,_CurOffset
	cpi R24,1
	breq X6
	xjmp L114
X6:
	.dbline 446
; 	{
	.dbline 447
; 	for(j=0;j<ASC_HZ_WIDTH;j++)
	clr R20
	xjmp L119
L116:
	.dbline 448
; 	{
	.dbline 449
; 		SetPageCol(uPage,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	xcall _SetPageCol
	.dbline 450
; 		ch_w=GB_16[k].Msk[j];
	ldi R24,26
	mul R24,R10
	movw R2,R0
	ldi R24,<_GB_16+2
	ldi R25,>_GB_16+2
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	add R30,R2
	adc R31,R3
	lpm R14,Z
	.dbline 451
; 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w);
	mov R24,R12
	add R24,R20
	cpi R24,64
	brsh L121
	.dbline 451
	std y+0,R14
	ldi R18,1
	clr R16
	xcall _write_LCD
	xjmp L122
L121:
	.dbline 452
; 		else write_LCD(RIGHT,DATA,ch_w);
	std y+0,R14
	ldi R18,1
	ldi R16,1
	xcall _write_LCD
L122:
	.dbline 453
L117:
	.dbline 447
	inc R20
L119:
	.dbline 447
	cpi R20,12
	brlo L116
	.dbline 454
; 	}
; 	SetPageCol(uPage+1,uCol);
	mov R18,R12
	ldd R16,y+1
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 456
; 
; 	for(j=0;j<ASC_HZ_WIDTH;j++)
	clr R20
	xjmp L126
L123:
	.dbline 457
; 	{
	.dbline 458
; 		SetPageCol(uPage+1,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 459
; 		if(uCol+j<64) ch_r=read_LCD(LEFT);
	mov R24,R12
	add R24,R20
	cpi R24,64
	brsh L127
	.dbline 459
	clr R16
	xcall _read_LCD
	mov R22,R16
	xjmp L128
L127:
	.dbline 460
; 		else ch_r=read_LCD(RIGHT);
	ldi R16,1
	xcall _read_LCD
	mov R22,R16
L128:
	.dbline 461
; 		ch_r&=0xf0;
	andi R22,240
	.dbline 462
; 		ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j]&0x0f; 
	ldi R24,26
	mul R24,R10
	movw R2,R0
	ldi R24,<_GB_16+2
	ldi R25,>_GB_16+2
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	adiw R30,12
	add R30,R2
	adc R31,R3
	lpm R30,Z
	andi R30,15
	mov R14,R30
	.dbline 463
; 		ch_w|=ch_r;
	or R14,R22
	.dbline 464
; 		SetPageCol(uPage+1,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 465
; 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
	mov R24,R12
	add R24,R20
	cpi R24,64
	brsh L130
	.dbline 465
	std y+0,R14
	ldi R18,1
	clr R16
	xcall _write_LCD
	xjmp L131
L130:
	.dbline 466
; 		else write_LCD(RIGHT,DATA,ch_w);
	std y+0,R14
	ldi R18,1
	ldi R16,1
	xcall _write_LCD
L131:
	.dbline 467
L124:
	.dbline 456
	inc R20
L126:
	.dbline 456
	cpi R20,12
	brsh X7
	xjmp L123
X7:
	.dbline 468
; 	}
; 	SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
	mov R18,R12
	subi R18,244    ; addi 12
	ldd R16,y+1
	xcall _SetPageCol
	.dbline 469
; 	}
	xjmp L115
L114:
	.dbline 472
; 
; 	else //汉字上半部是写半个字节
; 	{
	.dbline 473
; 	for(j=0;j<ASC_HZ_WIDTH;j++)
	clr R20
	xjmp L135
L132:
	.dbline 474
; 	{
	.dbline 475
; 		SetPageCol(uPage,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	xcall _SetPageCol
	.dbline 476
; 		if(uCol+j<64) ch_r=read_LCD(LEFT);
	mov R24,R12
	add R24,R20
	cpi R24,64
	brsh L136
	.dbline 476
	clr R16
	xcall _read_LCD
	mov R22,R16
	xjmp L137
L136:
	.dbline 477
; 		else ch_r=read_LCD(RIGHT);
	ldi R16,1
	xcall _read_LCD
	mov R22,R16
L137:
	.dbline 478
; 		ch_r&=0x0f;
	andi R22,15
	.dbline 479
; 		ch_w=GB_16[k].Msk[j];
	ldi R24,26
	mul R24,R10
	movw R2,R0
	ldi R24,<_GB_16+2
	ldi R25,>_GB_16+2
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	add R30,R2
	adc R31,R3
	lpm R14,Z
	.dbline 480
; 		ch_w=ch_w<<4;
	mov R24,R14
	andi R24,#0x0F
	swap R24
	mov R14,R24
	.dbline 481
; 		ch_w|=ch_r;
	or R14,R22
	.dbline 482
; 		SetPageCol(uPage,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	xcall _SetPageCol
	.dbline 483
; 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
	mov R24,R12
	add R24,R20
	cpi R24,64
	brsh L139
	.dbline 483
	std y+0,R14
	ldi R18,1
	clr R16
	xcall _write_LCD
	xjmp L140
L139:
	.dbline 484
; 		else write_LCD(RIGHT,DATA,ch_w); 
	std y+0,R14
	ldi R18,1
	ldi R16,1
	xcall _write_LCD
L140:
	.dbline 485
L133:
	.dbline 473
	inc R20
L135:
	.dbline 473
	cpi R20,12
	brsh X8
	xjmp L132
X8:
	.dbline 486
; 	}
; 	SetPageCol(uPage+1,uCol);
	mov R18,R12
	ldd R16,y+1
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 487
; 	for(j=0;j<ASC_HZ_WIDTH;j++)
	clr R20
	xjmp L144
L141:
	.dbline 488
; 	{
	.dbline 489
; 		SetPageCol(uPage+1,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 491
; 
; 		ch_r=GB_16[k].Msk[j];
	ldi R24,26
	mul R24,R10
	movw R2,R0
	ldi R24,<_GB_16+2
	ldi R25,>_GB_16+2
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	add R30,R2
	adc R31,R3
	lpm R22,Z
	.dbline 492
; 		ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j];
	ldi R24,26
	mul R24,R10
	movw R2,R0
	ldi R24,<_GB_16+2
	ldi R25,>_GB_16+2
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	adiw R30,12
	add R30,R2
	adc R31,R3
	lpm R14,Z
	.dbline 493
; 		ch_r=ch_r>>4;
	mov R24,R22
	swap R24
	andi R24,#0x0F
	mov R22,R24
	.dbline 494
; 		ch_w=ch_w<<4; 
	mov R24,R14
	andi R24,#0x0F
	swap R24
	mov R14,R24
	.dbline 495
; 		ch_w|=ch_r;
	or R14,R22
	.dbline 496
; 		SetPageCol(uPage+1,uCol+j);
	mov R18,R12
	add R18,R20
	ldd R16,y+1
	subi R16,255    ; addi 1
	xcall _SetPageCol
	.dbline 497
; 		if(uCol+j<64)	write_LCD(LEFT,DATA,ch_w); 
	mov R24,R12
	add R24,R20
	cpi R24,64
	brsh L147
	.dbline 497
	std y+0,R14
	ldi R18,1
	clr R16
	xcall _write_LCD
	xjmp L148
L147:
	.dbline 498
; 		else write_LCD(RIGHT,DATA,ch_w); 
	std y+0,R14
	ldi R18,1
	ldi R16,1
	xcall _write_LCD
L148:
	.dbline 499
L142:
	.dbline 487
	inc R20
L144:
	.dbline 487
	cpi R20,12
	brsh X9
	xjmp L141
X9:
	.dbline 500
	mov R18,R12
	subi R18,244    ; addi 12
	ldd R16,y+1
	xcall _SetPageCol
	.dbline 501
L115:
	.dbline -2
	.dbline 502
; 	}
; 	SetPageCol(uPage,uCol+ASC_HZ_WIDTH);
; 	}
; }
L106:
	adiw R28,2
	xcall pop_gset5
	.dbline 0 ; func end
	ret
	.dbsym l uPage 1 c
	.dbsym r ch_r 22 c
	.dbsym r k 10 c
	.dbsym r uCol 12 c
	.dbsym r ch_w 14 c
	.dbsym r j 20 c
	.dbsym r hz 20 pc
	.dbend
	.dbfunc e disp_str _disp_str fV
;              i -> R20
;              p -> R22,R23
	.even
_disp_str::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 505
; 
; void disp_str(unsigned char *p)
; {
	.dbline 506
; 	unsigned char i=0;
	clr R20
	xjmp L151
L150:
	.dbline 508
; 	while(p[i]>0)
; 	{
	.dbline 509
; 		if(p[i] < 128)
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	ldd R24,z+0
	cpi R24,128
	brsh L153
	.dbline 510
; 		{	/* ASCII */
	.dbline 511
; 			disp_ch(p[i]);
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	ldd R16,z+0
	xcall _disp_ch
	.dbline 512
; 		}
	xjmp L154
L153:
	.dbline 514
; 		else
; 		{	/* 中文 */
	.dbline 515
; 			disp_hz(&p[i]);
	mov R16,R20
	clr R17
	add R16,R22
	adc R17,R23
	xcall _disp_hz
	.dbline 516
; 			i++;
	inc R20
	.dbline 517
; 		}
L154:
	.dbline 518
	inc R20
	.dbline 519
L151:
	.dbline 507
	mov R30,R20
	clr R31
	add R30,R22
	adc R31,R23
	ldd R2,z+0
	clr R3
	cp R3,R2
	brlo L150
	.dbline -2
	.dbline 520
; 		i++;
; 	}
; }
L149:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r p 22 pc
	.dbend
	.dbfunc e pixel _pixel fV
;             ch -> R22,R23
;              y -> R20,R21
;           flag -> R10
;             yy -> R14
;             xx -> R12
	.even
_pixel::
	xcall push_gset5
	mov R14,R18
	mov R12,R16
	sbiw R28,1
	ldd R10,y+11
	.dbline -1
	.dbline 527
; 
; /*************************************/
; /*             绘点函数              */
; /*************************************/
; /* XX--(0-128) YY--(0-63) FLAG=1绘点   FLAG=0 清点 */
; void pixel(unsigned char xx,unsigned char yy,unsigned char flag)
; {
	.dbline 529
; 	unsigned int y,ch;
; 	ch=yy%8;  //余数
	ldi R18,8
	ldi R19,0
	mov R16,R14
	clr R17
	xcall mod16s
	movw R22,R16
	.dbline 531
; 
; 	y=1;
	ldi R20,1
	ldi R21,0
	.dbline 532
; 	for(;ch!=0;)
	xjmp L159
L156:

⌨️ 快捷键说明

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