📄 gui.s
字号:
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 + -