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

📄 gui.s

📁 ICCAVR编写128*64液晶程序测试已经通过
💻 S
📖 第 1 页 / 共 5 页
字号:
	cpc R5,R23
	brlt L88
	ldi R20,64
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+57
	ldd R3,z+58
	ldd R4,z+59
	ldd R5,z+60
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt L88
	.dbline 568
;       {
	.dbline 569
;          GUI_Point(draw_x3, draw_y3, color);
	std y+0,R10
	movw R30,R28
	ldd R18,z+57
	movw R30,R28
	ldd R16,z+25
	xcall _GUI_Point
	.dbline 570
;       }
L88:
	.dbline 571
;       if( (draw_x4<=GUI_LCM_XMAX)&&(draw_y4>=0) )
	ldi R20,128
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+45
	ldd R3,z+46
	ldd R4,z+47
	ldd R5,z+48
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt L90
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+13
	ldd R3,z+14
	ldd R4,z+15
	ldd R5,z+16
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlt L90
	.dbline 572
;       {
	.dbline 573
;          GUI_Point(draw_x4, draw_y4, color);
	std y+0,R10
	movw R30,R28
	ldd R18,z+13
	movw R30,R28
	ldd R16,z+45
	xcall _GUI_Point
	.dbline 574
;       }
L90:
	.dbline 575
;       if( (draw_x5>=0)&&(draw_y5>=0) )
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+49
	ldd R3,z+50
	ldd R4,z+51
	ldd R5,z+52
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlt L92
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+17
	ldd R3,z+18
	ldd R4,z+19
	ldd R5,z+20
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlt L92
	.dbline 576
;       {
	.dbline 577
;          GUI_Point(draw_x5, draw_y5, color);
	std y+0,R10
	movw R30,R28
	ldd R18,z+17
	movw R30,R28
	ldd R16,z+49
	xcall _GUI_Point
	.dbline 578
;       }
L92:
	.dbline 579
;       if( (draw_x6<=GUI_LCM_XMAX)&&(draw_y6<=GUI_LCM_YMAX) )
	ldi R20,128
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	adiw R30,61
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt L94
	ldi R20,64
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+29
	ldd R3,z+30
	ldd R4,z+31
	ldd R5,z+32
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt L94
	.dbline 580
;       {
	.dbline 581
;          GUI_Point(draw_x6, draw_y6, color);
	std y+0,R10
	movw R30,R28
	ldd R18,z+29
	movw R30,R28
	ldd R16,z+61
	xcall _GUI_Point
	.dbline 582
;       }
L94:
	.dbline 583
;       if( (draw_x7>=0)&&(draw_y7<=GUI_LCM_YMAX) )
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	subi R30,191  ; addi 65
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlt L96
	ldi R20,64
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	ldd R2,z+33
	ldd R3,z+34
	ldd R4,z+35
	ldd R5,z+36
	cp R20,R2
	cpc R21,R3
	cpc R22,R4
	cpc R23,R5
	brlt L96
	.dbline 584
;       {
	.dbline 585
;          GUI_Point(draw_x7, draw_y7, color);
	std y+0,R10
	movw R30,R28
	ldd R18,z+33
	movw R30,R28
	subi R30,191  ; addi 65
	sbci R31,255
	ldd R16,z+0
	xcall _GUI_Point
	.dbline 586
;       }
L96:
	.dbline 587
L78:
	.dbline 523
	movw R30,R28
	subi R30,187  ; addi 69
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	ldd R6,z+1
	ldd R7,z+2
	ldd R8,z+3
	ldd R9,z+4
	cp R6,R2
	cpc R7,R3
	cpc R8,R4
	cpc R9,R5
	brge X4
	xjmp L77
X4:
	.dbline -2
L64:
	adiw R28,63
	adiw R28,30  ; offset = 93
	xcall pop_gset3
	adiw R28,4
	.dbline 0 ; func end
	ret
	.dbsym l di 73 L
	.dbsym l yy 69 L
	.dbsym l draw_x7 65 L
	.dbsym l draw_x6 61 L
	.dbsym l draw_y3 57 L
	.dbsym l draw_y1 53 L
	.dbsym l draw_x5 49 L
	.dbsym l draw_x4 45 L
	.dbsym l draw_y2 41 L
	.dbsym l draw_y0 37 L
	.dbsym l draw_y7 33 L
	.dbsym l draw_y6 29 L
	.dbsym l draw_x3 25 L
	.dbsym l draw_x1 21 L
	.dbsym l draw_y5 17 L
	.dbsym l draw_y4 13 L
	.dbsym l draw_x2 9 L
	.dbsym l draw_x0 5 L
	.dbsym l xx 1 L
	.dbsym r color 10 c
	.dbsym l r 107 l
	.dbsym l y0 103 l
	.dbsym l x0 99 l
	.dbend
	.dbfunc e GUI_CircleFill _GUI_CircleFill fV
;             di -> y+87
;             yy -> y+83
;        draw_x6 -> y+79
;        draw_y2 -> y+75
;        draw_y0 -> y+71
;        draw_x4 -> y+67
;        draw_y6 -> y+63
;        draw_y3 -> y+59
;        draw_y1 -> y+55
;        draw_y4 -> y+51
;        draw_x2 -> y+47
;        draw_x0 -> y+43
;             xx -> y+39
;        draw_y7 -> y+35
;        draw_y5 -> y+31
;        draw_x7 -> y+27
;        draw_x5 -> y+23
;        fill_x0 -> y+19
;        draw_x3 -> y+15
;        draw_x1 -> y+11
;        fill_x1 -> y+7
;        fill_y0 -> y+3
;          color -> R10
;              r -> y+121
;             y0 -> y+117
;             x0 -> y+113
	.even
_GUI_CircleFill::
	xcall push_arg4
	xcall push_gset3
	sbiw R28,63
	sbiw R28,44  ; offset = 107
	movw R30,R28
	subi R30,131  ; addi 125
	sbci R31,255
	ldd R10,z+0
	.dbline -1
	.dbline 601
;    }
; }
; 
; /****************************************************************************
; * 名称:GUI_CircleFill()
; * 功能:指定圆心位置及半径,画圆并填充,填充色与边框色一样。
; * 入口参数:x0		圆心的x坐标值
; *           y0		圆心的y坐标值
; *           r           圆的半径
; *           color	填充颜色
; * 出口参数:无
; * 说明:操作失败原因是指定地址超出有效范围。
; ****************************************************************************/
; void  GUI_CircleFill(uint32 x0, uint32 y0, uint32 r, TCOLOR color)
; {
	.dbline 617
;    int32  draw_x0, draw_y0;			        // 刽图点坐标变量
;    int32  draw_x1, draw_y1;	
;    int32  draw_x2, draw_y2;	
;    int32  draw_x3, draw_y3;	
;    int32  draw_x4, draw_y4;	
;    int32  draw_x5, draw_y5;	
;    int32  draw_x6, draw_y6;	
;    int32  draw_x7, draw_y7;	
;    int32  fill_x0, fill_y0;			        // 填充所需的变量,使用垂直线填充
;    int32  fill_x1;
;    int32  xx, yy;					// 画圆控制变量
;  
;    int32  di;						// 决策变量
;    
;    /* 参数过滤 */
;    if(0==r)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	subi R30,135  ; addi 121
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne L99
	.dbline 618
;       return;
	xjmp L98
L99:
	.dbline 621
;    
;    /* 计算出4个特殊点(0、90、180、270度),进行显示 */
;    draw_x0 = draw_x1 = x0;
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+11,R2
	std z+12,R3
	std z+13,R4
	std z+14,R5
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+43,R2
	std z+44,R3
	std z+45,R4
	std z+46,R5
	.dbline 622
;    draw_y0 = draw_y1 = y0 + r;
	movw R30,R28
	subi R30,135  ; addi 121
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,139  ; addi 117
	sbci R31,255
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	subi R30,165  ; addi 91
	sbci R31,255
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	movw R30,R28
	subi R30,165  ; addi 91
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+55,R2
	std z+56,R3
	std z+57,R4
	std z+58,R5
	movw R30,R28
	subi R30,165  ; addi 91
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,185  ; addi 71
	sbci R31,255
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 623
;    if(draw_y0<GUI_LCM_YMAX)
	ldi R20,64
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	subi R30,185  ; addi 71
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L101
	.dbline 624
;    {
	.dbline 625
;       GUI_Point(draw_x0, draw_y0, color);	// 90度
	std y+0,R10
	movw R30,R28
	subi R30,185  ; addi 71
	sbci R31,255
	ldd R18,z+0
	movw R30,R28
	ldd R16,z+43
	xcall _GUI_Point
	.dbline 626
;    }
L101:
	.dbline 628
;     	
;    draw_x2 = draw_x3 = x0;
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+15,R2
	std z+16,R3
	std z+17,R4
	std z+18,R5
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+47,R2
	std z+48,R3
	std z+49,R4
	std z+50,R5
	.dbline 629
;    draw_y2 = draw_y3 = y0 - r;
	movw R30,R28
	subi R30,135  ; addi 121
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,139  ; addi 117
	sbci R31,255
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R30,R28
	subi R30,161  ; addi 95
	sbci R31,255
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	movw R30,R28
	subi R30,161  ; addi 95
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+59,R2
	std z+60,R3
	std z+61,R4
	std z+62,R5
	movw R30,R28
	subi R30,161  ; addi 95
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,181  ; addi 75
	sbci R31,255
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 630
;    if(draw_y2>=0)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	subi R30,181  ; addi 75
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brlt L103
	.dbline 631
;    {
	.dbline 632
;       GUI_Point(draw_x2, draw_y2, color);	// 270度
	std y+0,R10
	movw R30,R28
	subi R30,181  ; addi 75
	sbci R31,255
	ldd R18,z+0
	movw R30,R28
	ldd R16,z+47
	xcall _GUI_Point
	.dbline 633
;    }
L103:
	.dbline 635
;   	
;    draw_x4 = draw_x6 = x0 + r;
	movw R30,R28
	subi R30,135  ; addi 121
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	movw R30,R28
	subi R30,157  ; addi 99
	sbci R31,255
	std z+0,R6
	std z+1,R7
	std z+2,R8
	std z+3,R9
	movw R30,R28
	subi R30,157  ; addi 99
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,177  ; addi 79
	sbci R31,255
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	movw R30,R28
	subi R30,157  ; addi 99
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,189  ; addi 67
	sbci R31,255
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	.dbline 636
;    draw_y4 = draw_y6 = y0;
	movw R30,R28
	subi R30,139  ; addi 117
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	adiw R30,63
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	movw R30,R28
	subi R30,139  ; addi 117
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+51,R2
	std z+52,R3
	std z+53,R4
	std z+54,R5
	.dbline 637
;    if(draw_x4<GUI_LCM_XMAX) 
	ldi R20,128
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	subi R30,189  ; addi 67
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brge L105
	.dbline 638
;    {
	.dbline 639
;       GUI_Point(draw_x4, draw_y4, color);	// 0度
	std y+0,R10
	movw R30,R28
	ldd R18,z+51
	movw R30,R28
	subi R30,189  ; addi 67
	sbci R31,255
	ldd R16,z+0
	xcall _GUI_Point
	.dbline 640
;       fill_x1 = draw_x4;
	movw R30,R28
	subi R30,189  ; addi 67
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+7,R2
	std z+8,R3
	std z+9,R4
	std z+10,R5
	.dbline 641
;    }
	xjmp L106
L105:
	.dbline 643
;    else
;    {
	.dbline 644
;       fill_x1 = GUI_LCM_XMAX;
	ldi R20,128
	ldi R21,0
	ldi R22,0
	ldi R23,0
	movw R30,R28
	std z+7,R20
	std z+8,R21
	std z+9,R22
	std z+10,R23
	.dbline 645
;    }
L106:
	.dbline 646
;    fill_y0 = y0;							// 设置填充线条起始点fill_x0
	movw R30,R28
	subi R30,139  ; addi 117
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	std z+3,R2
	std z+4,R3
	std z+5,R4
	std z+6,R5
	.dbline 647
;    fill_x0 = x0 - r;						// 设置填充线条结束点fill_y1
	movw R30,R28
	subi R30,135  ; addi 121
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	ldd R6,z+0
	ldd R7,z+1
	ldd R8,z+2
	ldd R9,z+3
	sub R6,R2
	sbc R7,R3
	sbc R8,R4
	sbc R9,R5
	movw R30,R28
	std z+1

⌨️ 快捷键说明

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