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

📄 gui12864.s

📁 3D LCD for running graphical lCDs
💻 S
📖 第 1 页 / 共 4 页
字号:
	xcall mod16u
	movw R30,R16
	add R30,R2
	adc R31,R3
	elpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	ldd R18,y+16
	clr R19
	add R18,R22
	adc R19,R23
	ldd R16,y+20
	clr R17
	xcall _LcdDisplaySeg
	.dbline 366
; 					Delay10ms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay10ms
	.dbline 367
; 				}
L93:
	.dbline 368
; 				temp2++;
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 369
; 			}
L89:
	.dbline 357
	movw R24,R12
	adiw R24,1
	movw R12,R24
L91:
	.dbline 357
	cp R12,R20
	cpc R13,R21
	brsh X39
	xjmp L88
X39:
X33:
	.dbline 370
; 		}
	xjmp L87
L86:
	.dbline 372
; 		else
; 		{
	.dbline 373
; 			temp2 = 0;
	clr R22
	clr R23
	.dbline 374
; 			for(temp1= step - dislength; temp1<step; temp1++)
	movw R12,R20
	ldd R0,y+4
	ldd R1,y+5
	sub R12,R0
	sbc R13,R1
	xjmp L98
L95:
	.dbline 375
; 			{
	.dbline 376
; 				LcdDisplaySeg(y,x0 + temp2,font6x8[*(p + temp1 / 6) - 32][temp1 % 6]);
	ldi R18,6
	ldi R19,0
	movw R16,R12
	xcall div16u
	movw R30,R16
	ldd R0,y+22
	ldd R1,y+23
	add R30,R0
	adc R31,R1
	ldd R2,z+0
	ldi R24,6
	mul R24,R2
	movw R2,R0
	ldi R24,<_font6x8-192
	ldi R25,>_font6x8-192
	add R2,R24
	adc R3,R25
	ldi R18,6
	ldi R19,0
	movw R16,R12
	xcall mod16u
	movw R30,R16
	add R30,R2
	adc R31,R3
	elpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	ldd R18,y+16
	clr R19
	add R18,R22
	adc R19,R23
	ldd R16,y+20
	clr R17
	xcall _LcdDisplaySeg
	.dbline 377
; 				Delay10ms(10);
	ldi R16,10
	ldi R17,0
	xcall _Delay10ms
	.dbline 378
; 				temp2++;
	subi R22,255  ; offset = 1
	sbci R23,255
	.dbline 379
; 			}
L96:
	.dbline 374
	movw R24,R12
	adiw R24,1
	movw R12,R24
L98:
	.dbline 374
	cp R12,R20
	cpc R13,R21
	brsh X40
	xjmp L95
X40:
X34:
	.dbline 380
; 		}
L87:
L78:
	.dbline 381
; 	}
L74:
	.dbline 336
	movw R24,R10
	adiw R24,1
	movw R10,R24
L76:
	.dbline 336
	cp R10,R14
	cpc R11,R15
	brsh X41
	xjmp L73
X41:
X35:
	.dbline -2
L69:
	.dbline 0 ; func end
	adiw R28,6
	xcall pop_xgsetF0FC
	adiw R28,4
	ret
	.dbsym l temp3 3 i
	.dbsym l a 3 c
	.dbsym l n 3 c
	.dbsym r totallength 14 i
	.dbsym l dislength 4 i
	.dbsym r i 10 i
	.dbsym l textlength 2 i
	.dbsym r temp2 22 i
	.dbsym r step 20 i
	.dbsym r temp1 12 i
	.dbsym l color 24 c
	.dbsym l p 22 pc
	.dbsym l y 20 c
	.dbsym l x1 18 c
	.dbsym l x0 16 c
	.dbend
	.dbfunc e GuiDisBattery _GuiDisBattery fV
;           temp -> R20
;          level -> y+8
;              y -> R10
;              x -> R12
	.even
_GuiDisBattery::
	xcall push_xgset303C
	mov R10,R18
	mov R12,R16
	sbiw R28,2
	.dbline -1
	.dbline 392
; }
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisBattery
; *  DESCRIPTION: Display Battery Icon
; *       level- 0 warn,1 low,2 20%,3 40%,4 60%,5 80%,6 full
; *       x - 0-112
; *       y - 0-7		  
; /************************************************************/
; void GuiDisBattery(unsigned char x,unsigned char y,unsigned char level)
; {
	.dbline 394
;     unsigned char temp;
; 	for(temp=0; temp<16; temp++)
	clr R20
	xjmp L104
L101:
	.dbline 395
; 	{
	.dbline 396
; 	    LcdDisplaySeg(y,x+temp,battery[level][temp]);
	ldi R24,16
	ldd R0,y+8
	mul R24,R0
	movw R2,R0
	ldi R24,<_battery
	ldi R25,>_battery
	add R2,R24
	adc R3,R25
	mov R30,R20
	clr R31
	add R30,R2
	adc R31,R3
	elpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	mov R2,R20
	clr R3
	mov R18,R12
	clr R19
	add R18,R2
	adc R19,R3
	mov R16,R10
	clr R17
	xcall _LcdDisplaySeg
	.dbline 397
; 	}
L102:
	.dbline 394
	inc R20
L104:
	.dbline 394
	cpi R20,16
	brlo L101
X42:
	.dbline -2
L100:
	.dbline 0 ; func end
	adiw R28,2
	xjmp pop_xgset303C
	.dbsym r temp 20 c
	.dbsym l level 8 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e GuiDisUsb _GuiDisUsb fV
;           temp -> R20
;              y -> R10
;              x -> R12
	.even
_GuiDisUsb::
	xcall push_xgset303C
	mov R10,R18
	mov R12,R16
	sbiw R28,2
	.dbline -1
	.dbline 405
; }
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisUsb
; *  DESCRIPTION: Display USB Icon  
; /************************************************************/
; void GuiDisUsb(unsigned char x,unsigned char y)
; {
	.dbline 407
;     unsigned char temp;
; 	for(temp=0; temp<13; temp++)
	clr R20
	xjmp L109
L106:
	.dbline 408
; 	{
	.dbline 409
; 	    LcdDisplaySeg(y,x+temp,~usb[temp]);
	ldi R24,<_usb
	ldi R25,>_usb
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	elpm R2,Z
	clr R3
	com R2
	com R3
	std y+1,R3
	std y+0,R2
	mov R2,R20
	clr R3
	mov R18,R12
	clr R19
	add R18,R2
	adc R19,R3
	mov R16,R10
	clr R17
	xcall _LcdDisplaySeg
	.dbline 410
; 	}
L107:
	.dbline 407
	inc R20
L109:
	.dbline 407
	cpi R20,13
	brlo L106
X43:
	.dbline -2
L105:
	.dbline 0 ; func end
	adiw R28,2
	xjmp pop_xgset303C
	.dbsym r temp 20 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e GuiDisAcin _GuiDisAcin fV
;           temp -> R20
;              y -> R10
;              x -> R12
	.even
_GuiDisAcin::
	xcall push_xgset303C
	mov R10,R18
	mov R12,R16
	sbiw R28,2
	.dbline -1
	.dbline 418
; }
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisAcin
; *  DESCRIPTION: Display AC Input Icon
; /************************************************************/
; void GuiDisAcin(unsigned char x,unsigned char y)
; {
	.dbline 420
;     unsigned char temp;
; 	for(temp=0; temp<6; temp++)
	clr R20
	xjmp L114
L111:
	.dbline 421
; 	{
	.dbline 422
; 	    LcdDisplaySeg(y,x+temp,acin[temp]);
	ldi R24,<_acin
	ldi R25,>_acin
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	elpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	mov R2,R20
	clr R3
	mov R18,R12
	clr R19
	add R18,R2
	adc R19,R3
	mov R16,R10
	clr R17
	xcall _LcdDisplaySeg
	.dbline 423
; 	}
L112:
	.dbline 420
	inc R20
L114:
	.dbline 420
	cpi R20,6
	brlo L111
X44:
	.dbline -2
L110:
	.dbline 0 ; func end
	adiw R28,2
	xjmp pop_xgset303C
	.dbsym r temp 20 c
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
	.dbfunc e GuiDisMainMenu _GuiDisMainMenu fV
;          temp1 -> R20
	.even
_GuiDisMainMenu::
	st -y,R20
	sbiw R28,5
	.dbline -1
	.dbline 432
; }
; 
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisMainMenu
; *  DESCRIPTION: Display MainMenu Square
; /************************************************************/
; void GuiDisMainMenu(void)
; {
	.dbline 434
;      unsigned char temp1;
; 	 for(temp1=0; temp1<128; temp1++)
	clr R20
	xjmp L119
L116:
	.dbline 435
;      {
	.dbline 436
; 	     LcdDisplaySeg(0,temp1,0XFF);
	ldi R24,255
	ldi R25,0
	std y+1,R25
	std y+0,R24
	mov R18,R20
	clr R19
	clr R16
	clr R17
	xcall _LcdDisplaySeg
	.dbline 437
; 		 LcdDisplaySeg(1,temp1,0X07);
	ldi R24,7
	ldi R25,0
	std y+1,R25
	std y+0,R24
	mov R18,R20
	clr R19
	ldi R16,1
	ldi R17,0
	xcall _LcdDisplaySeg
	.dbline 438
; 	 }
L117:
	.dbline 434
	inc R20
L119:
	.dbline 434
	cpi R20,128
	brlo L116
X45:
	.dbline 439
; 	 GuiDrawSquare(0,0,127,54,1);
	ldi R24,1
	std y+4,R24
	ldi R24,54
	std y+2,R24
	ldi R24,127
	std y+0,R24
	clr R18
	clr R16
	xcall _GuiDrawSquare
	.dbline -2
L115:
	.dbline 0 ; func end
	adiw R28,5
	ld R20,y+
	ret
	.dbsym r temp1 20 c
	.dbend
	.dbfunc e GuiDisShortIcon _GuiDisShortIcon fV
;          temp1 -> R20
;          temp2 -> R22
;           type -> <dead>
;              y -> R12
;              x -> R10
	.even
_GuiDisShortIcon::
	xcall push_xgsetF03C
	mov R12,R18
	mov R10,R16
	sbiw R28,2
	.dbline -1
	.dbline 452
; }
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisShortIcon
; *  DESCRIPTION: Display Short-Cut Icon
; *     0:
; *     1:
; *     2:
; *     3:
; *     4:
; /************************************************************/
; void GuiDisShortIcon(unsigned char x,unsigned char y,unsigned char type)
; {
	.dbline 454
;     unsigned char temp1,temp2;
; 	for(temp1=0; temp1<2; temp1++)
	clr R20
	xjmp L124
L121:
	.dbline 455
; 	{
	.dbline 456
; 	    for(temp2=0; temp2<16; temp2++)
	clr R22
	xjmp L128
L125:
	.dbline 457
; 		{
	.dbline 458
; 		    LcdDisplaySeg(y+temp1,x+temp2,~shorticon1[temp1][temp2]);		
	ldi R24,16
	mul R24,R20
	movw R2,R0
	ldi R24,<_shorticon1
	ldi R25,>_shorticon1
	add R2,R24
	adc R3,R25
	mov R30,R22
	clr R31
	add R30,R2
	adc R31,R3
	elpm R2,Z
	clr R3
	com R2
	com R3
	std y+1,R3
	std y+0,R2
	mov R2,R22
	clr R3
	mov R18,R10
	clr R19
	add R18,R2
	adc R19,R3
	mov R2,R20
	clr R3
	mov R16,R12
	clr R17
	add R16,R2
	adc R17,R3
	xcall _LcdDisplaySeg
	.dbline 459
; 		}
L126:
	.dbline 456
	inc R22
L128:
	.dbline 456
	cpi R22,16
	brlo L125
X46:
	.dbline 460
; 	}
L122:
	.dbline 454
	inc R20
L124:
	.dbline 454
	cpi R20,2
	brlo L121
X47:
	.dbline -2
L120:
	.dbline 0 ; func end
	adiw R28,2
	xjmp pop_xgsetF03C
	.dbsym r temp1 20 c
	.dbsym r temp2 22 c
	.dbsym l type 10 c
	.dbsym r y 12 c
	.dbsym r x 10 c
	.dbend
	.dbfunc e GuiDisMenuIcon _GuiDisMenuIcon fV
;          temp1 -> R20
;          temp2 -> R22
;           type -> <dead>
;              y -> R12
;              x -> R10
	.even
_GuiDisMenuIcon::
	xcall push_xgsetF03C
	mov R12,R18
	mov R10,R16
	sbiw R28,2
	.dbline -1
	.dbline 468
; }
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisMenuIcon
; *  DESCRIPTION: Display MainMenu Name
; /************************************************************/
; void GuiDisMenuIcon(unsigned char x,unsigned char y,unsigned char type)
; {
	.dbline 470
;     unsigned char temp1,temp2;
; 	for(temp1=0; temp1<2; temp1++)
	clr R20
	xjmp L133
L130:
	.dbline 471
; 	{
	.dbline 472
; 	    for(temp2=0; temp2<34; temp2++)
	clr R22
	xjmp L137
L134:
	.dbline 473
; 		{
	.dbline 474
; 		    LcdDisplaySeg(y+temp1,x+temp2,~menuicon1[temp1][temp2]);		
	ldi R24,34
	mul R24,R20
	movw R2,R0
	ldi R24,<_menuicon1
	ldi R25,>_menuicon1
	add R2,R24
	adc R3,R25
	mov R30,R22
	clr R31
	add R30,R2
	adc R31,R3
	elpm R2,Z
	clr R3
	com R2
	com R3
	std y+1,R3
	std y+0,R2
	mov R2,R22
	clr R3
	mov R18,R10
	clr R19
	add R18,R2
	adc R19,R3
	mov R2,R20
	clr R3
	mov R16,R12
	clr R17
	add R16,R2
	adc R17,R3
	xcall _LcdDisplaySeg
	.dbline 475
; 		}
L135:
	.dbline 472
	inc R22
L137:
	.dbline 472
	cpi R22,34
	brlo L134
X48:
	.dbline 476
; 	}
L131:
	.dbline 470
	inc R20
L133:
	.dbline 470
	cpi R20,2
	brlo L130
X49:
	.dbline -2
L129:
	.dbline 0 ; func end
	adiw R28,2
	xjmp pop_xgsetF03C
	.dbsym r temp1 20 c
	.dbsym r temp2 22 c
	.dbsym l type 10 c
	.dbsym r y 12 c
	.dbsym r x 10 c
	.dbend
	.dbfunc e GuiDisTemp _GuiDisTemp fV
;           sign -> R14
;           temp -> R20
;          value -> R22
;              y -> R10
;              x -> R12
	.even
_GuiDisTemp::
	xcall push_xgsetF0FC
	mov R10,R18
	mov R12,R16
	sbiw R28,3
	ldd R22,y+13
	.dbline -1
	.dbline 485
; }
; 
; /************************************************************
; *  FUNCTION NAME: GuiDisTemp
; *  DESCRIPTION: Display temperature icon and value
; *  temperature display range from -99 to +99
; /************************************************************/
; void GuiDisTemp(unsigned char x,unsigned char y,signed char value)
; {
	.dbline 488
;     unsigned char temp;	 
; 	signed char sign;	 	  			 	  /* 写SIGNED才表明书有符号数 */
; 	for(temp=0; temp<11; temp++)
	clr R20
	xjmp L142
L139:
	.dbline 489
; 	{
	.dbline 490
; 	    LcdDisplaySeg(y,x+temp,~temperature[temp]);
	ldi R24,<_temperature
	ldi R25,>_temperature
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	elpm R2,Z
	clr R3
	com R2
	com R3
	std y+1,R3
	std y+0,R2
	mov R2,R20
	clr R3
	mov R18,R12
	clr R19
	add R18,R2
	adc R19,R3
	mov R16,R10
	clr R17
	xcall _LcdDisplaySeg
	.dbline 491
; 	}
L140:
	.dbline 488
	inc R20
L142:
	.dbline 488
	cpi R20,11
	brlo L139
X50:
	.dbline 492
; 	if(value > 0)
	clr R2
	cp R2,R22
	brge L143
X51:
	.dbline 493
; 	{
	.dbline 494
; 	    GuiDisCharF3(x/6 + 2,y,'+',1);
	ldi R24,1
	std y+2,R24
	ldi R24,43
	std y+0,R24
	mov R18,R10
	ldi R17,6
	mov R16,R12
	xcall div8u
	subi R16,254    ; addi 2
	xcall _GuiDisCharF3
	.dbline 495
; 		sign = 1;
	clr R14
	inc R14
	.dbline 496
; 	}
	xjmp L144
L143:
	.dbline 497
; 	else if(value < 0)
	cpi R22,0
	brge L145
X52:
	.dbline 498
; 	{
	.dbline 499
; 	    GuiDisCharF3(x/6 + 2,y,'-',1);
	ldi R24,1
	std y+2,R24
	ldi R24,45
	std y+0,R24
	mov R18,R10
	ldi R17,6
	mov R16,R12
	xcall div8u
	subi R16,254    ; addi 2
	xcall _GuiDisCharF3
	.dbline 500
; 		sign = -1;
	ldi R24,255
	mov R14,R24
	.dbline 501
; 	} 
	xjmp L146
L145:
	.dbline 503
; 	else
; 	{
	.dbline 504
; 	    GuiDisCharF3(x/6 + 2,y,' ',1);
	ldi R24,1
	std y+2,R24
	ldi R24,32
	std y+0,R24
	mov R18,R10
	ldi R17,6
	mov R16,R12
	xcall div8u
	subi R16,254    ; addi 2
	xcall _GuiDisCharF3
	.dbline 505
; 		sign = 0;
	clr R14
	.dbline 506
; 	}  
L146:
L144:
	.dbline 507
; 	value = sign * value;
	mov R17,R22
	mov R16,R14
	muls R16,R17
	mov R22,R0
	.dbline 508
; 	GuiDisCharF3(x/6 + 3,y,(value/10 + 0X30),1);
	ldi R24,1
	std y+2,R24
	ldi R17,10
	mov R16,R22
	xcall div8s
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	mov R18,R10
	ldi R17,6
	mov R16,R12
	xcall div8u
	subi R16,253    ; addi 3
	xcall _GuiDisCharF3
	.dbline 509
;     GuiDisCharF3(x/6 + 4,y,(value%10 + 0X30),1);
	ldi R24,1
	std y+2,R24
	ldi R17,10
	mov R16,R22
	xcall mod8s
	mov R24,R16
	subi R24,208    ; addi 48
	std y+0,R24
	mov R18,R10
	ldi R17,6
	mov R16,R12
	xcall div8u
	subi R16,252    ; addi 4
	xcall _GuiDisCharF3
	.dbline 510
; 	for(temp=12; temp<17; temp++)
	ldi R20,12
	xjmp L150
L147:
	.dbline 511
; 	{
	.dbline 512
; 	    LcdDisplaySeg(y,x+21+temp,temperature[temp]);
	ldi R24,<_temperature
	ldi R25,>_temperature
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	elpm R2,Z
	clr R3
	std y+1,R3
	std y+0,R2
	mov R2,R20
	clr R3
	mov R18,R12
	clr R19
	subi R18,235  ; offset = 21
	sbci R19,255
	add R18,R2
	adc R19,R3
	mov R16,R10
	clr R17
	xcall _LcdDisplaySeg
	.dbline 513
; 	}
L148:
	.dbline 510
	inc R20
L150:
	.dbline 510
	cpi R20,17
	brlo L147
X53:
	.dbline -2
L138:
	.dbline 0 ; func end
	adiw R28,3
	xjmp pop_xgsetF0FC
	.dbsym r sign 14 C
	.dbsym r temp 20 c
	.dbsym r value 22 C
	.dbsym r y 10 c
	.dbsym r x 12 c
	.dbend
; }

⌨️ 快捷键说明

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