📄 1335.lis
字号:
02F2 L44:
02F2 .dbline 295
02F2 A882 std y+0,R10
02F4 9601 movw R18,R12
02F6 8A01 movw R16,R20
02F8 83DF xcall _lcd_pixel
02FA L45:
02FA .dbline 295
02FA 4F5F subi R20,255 ; offset = 1
02FC 5F4F sbci R21,255
02FE L47:
02FE .dbline 295
02FE E416 cp R14,R20
0300 F506 cpc R15,R21
0302 BCF7 brge L44
0304 X9:
0304 .dbline 296
0304 ; for (i=y1; i<=y2; i++) lcd_pixel(x1,i,show);
0304 4B85 ldd R20,y+11
0306 5C85 ldd R21,y+12
0308 06C0 xjmp L51
030A L48:
030A .dbline 296
030A A882 std y+0,R10
030C 9A01 movw R18,R20
030E 8B01 movw R16,R22
0310 77DF xcall _lcd_pixel
0312 L49:
0312 .dbline 296
0312 4F5F subi R20,255 ; offset = 1
0314 5F4F sbci R21,255
0316 L51:
0316 .dbline 296
0316 C416 cp R12,R20
0318 D506 cpc R13,R21
031A BCF7 brge L48
031C X10:
031C .dbline 297
031C ; for (i=y1; i<=y2; i++) lcd_pixel(x2,i,show);
031C 4B85 ldd R20,y+11
031E 5C85 ldd R21,y+12
0320 06C0 xjmp L55
0322 L52:
0322 .dbline 297
0322 A882 std y+0,R10
0324 9A01 movw R18,R20
0326 8701 movw R16,R14
0328 6BDF xcall _lcd_pixel
032A L53:
032A .dbline 297
032A 4F5F subi R20,255 ; offset = 1
032C 5F4F sbci R21,255
032E L55:
032E .dbline 297
032E C416 cp R12,R20
0330 D506 cpc R13,R21
0332 BCF7 brge L52
0334 X11:
0334 .dbline -2
0334 L39:
0334 .dbline 0 ; func end
0334 2196 adiw R28,1
0336 0E940000 xcall pop_xgsetF0FC
033A 2296 adiw R28,2
033C 0895 ret
033E .dbsym r i 20 I
033E .dbsym r show 10 c
033E .dbsym r y2 12 I
033E .dbsym r x2 14 I
033E .dbsym l y1 11 I
033E .dbsym r x1 22 I
033E .dbend
033E .dbfunc e lcd_degree_line _lcd_degree_line fV
033E ; ty -> R20,R21
033E ; tx -> R14,R15
033E ; fy -> R12,R13
033E ; fx -> R10,R11
033E ; show -> y+23
033E ; outer_radius -> R22,R23
033E ; inner_radius -> R12,R13
033E ; degree -> R20,R21
033E ; y -> y+15
033E ; x -> R14,R15
.even
033E _lcd_degree_line::
033E 3A93 st -y,r19
0340 2A93 st -y,r18
0342 0E940000 xcall push_xgsetF0FC
0346 7801 movw R14,R16
0348 2597 sbiw R28,5
034A 4989 ldd R20,y+17
034C 5A89 ldd R21,y+18
034E CB88 ldd R12,y+19
0350 DC88 ldd R13,y+20
0352 6D89 ldd R22,y+21
0354 7E89 ldd R23,y+22
0356 .dbline -1
0356 .dbline 306
0356 ; }
0356 ;
0356 ;
0356 ; /***********************************************************************
0356 ; Draws a line from x,y at given degree from inner_radius to outer_radius.
0356 ; Set show to 1 to draw pixel, set to 0 to hide pixel.
0356 ; ***********************************************************************/
0356 ; void lcd_degree_line(int x, int y, int degree, int inner_radius, int outer_radius, unsigned char show)
0356 ; {
0356 .dbline 308
0356 ; int fx,fy,tx,ty;
0356 ; fx = x + fround(inner_radius * sin(degree * 3.14 / 180));
0356 00E0 ldi R16,<L57
0358 10E0 ldi R17,>L57
035A 0E940000 xcall elpm32
035E 1801 movw R2,R16
0360 2901 movw R4,R18
0362 8A01 movw R16,R20
0364 0E940000 xcall int2fp
0368 3A93 st -y,R19
036A 2A93 st -y,R18
036C 1A93 st -y,R17
036E 0A93 st -y,R16
0370 8101 movw R16,R2
0372 9201 movw R18,R4
0374 0E940000 xcall fpmule2
0378 1801 movw R2,R16
037A 2901 movw R4,R18
037C 00E0 ldi R16,<L58
037E 10E0 ldi R17,>L58
0380 0E940000 xcall elpm32
0384 3A93 st -y,R19
0386 2A93 st -y,R18
0388 1A93 st -y,R17
038A 0A93 st -y,R16
038C 8101 movw R16,R2
038E 9201 movw R18,R4
0390 0E940000 xcall fpdiv2
0394 0E940000 xcall _sinf
0398 1801 movw R2,R16
039A 2901 movw R4,R18
039C 8601 movw R16,R12
039E 0E940000 xcall int2fp
03A2 5A92 st -y,R5
03A4 4A92 st -y,R4
03A6 3A92 st -y,R3
03A8 2A92 st -y,R2
03AA 0E940000 xcall fpmule2
03AE 0E940000 xcall _froundf
03B2 1801 movw R2,R16
03B4 2901 movw R4,R18
03B6 8701 movw R16,R14
03B8 0E940000 xcall int2fp
03BC 5A92 st -y,R5
03BE 4A92 st -y,R4
03C0 3A92 st -y,R3
03C2 2A92 st -y,R2
03C4 0E940000 xcall fpadd2
03C8 0E940000 xcall fpint
03CC 5801 movw R10,R16
03CE .dbline 309
03CE ; fy = y - fround(inner_radius * cos(degree * 3.14 / 180));
03CE 00E0 ldi R16,<L57
03D0 10E0 ldi R17,>L57
03D2 0E940000 xcall elpm32
03D6 1801 movw R2,R16
03D8 2901 movw R4,R18
03DA 8A01 movw R16,R20
03DC 0E940000 xcall int2fp
03E0 3A93 st -y,R19
03E2 2A93 st -y,R18
03E4 1A93 st -y,R17
03E6 0A93 st -y,R16
03E8 8101 movw R16,R2
03EA 9201 movw R18,R4
03EC 0E940000 xcall fpmule2
03F0 1801 movw R2,R16
03F2 2901 movw R4,R18
03F4 00E0 ldi R16,<L58
03F6 10E0 ldi R17,>L58
03F8 0E940000 xcall elpm32
03FC 3A93 st -y,R19
03FE 2A93 st -y,R18
0400 1A93 st -y,R17
0402 0A93 st -y,R16
0404 8101 movw R16,R2
0406 9201 movw R18,R4
0408 0E940000 xcall fpdiv2
040C 0E940000 xcall _cosf
0410 1801 movw R2,R16
0412 2901 movw R4,R18
0414 8601 movw R16,R12
0416 0E940000 xcall int2fp
041A 5A92 st -y,R5
041C 4A92 st -y,R4
041E 3A92 st -y,R3
0420 2A92 st -y,R2
0422 0E940000 xcall fpmule2
0426 0E940000 xcall _froundf
042A 1801 movw R2,R16
042C 2901 movw R4,R18
042E 0F85 ldd R16,y+15
0430 1889 ldd R17,y+16
0432 0E940000 xcall int2fp
0436 5A92 st -y,R5
0438 4A92 st -y,R4
043A 3A92 st -y,R3
043C 2A92 st -y,R2
043E 0E940000 xcall fpsub2
0442 0E940000 xcall fpint
0446 6801 movw R12,R16
0448 .dbline 310
0448 ; tx = x + fround(outer_radius * sin(degree * 3.14 / 180));
0448 00E0 ldi R16,<L57
044A 10E0 ldi R17,>L57
044C 0E940000 xcall elpm32
0450 1801 movw R2,R16
0452 2901 movw R4,R18
0454 8A01 movw R16,R20
0456 0E940000 xcall int2fp
045A 3A93 st -y,R19
045C 2A93 st -y,R18
045E 1A93 st -y,R17
0460 0A93 st -y,R16
0462 8101 movw R16,R2
0464 9201 movw R18,R4
0466 0E940000 xcall fpmule2
046A 1801 movw R2,R16
046C 2901 movw R4,R18
046E 00E0 ldi R16,<L58
0470 10E0 ldi R17,>L58
0472 0E940000 xcall elpm32
0476 3A93 st -y,R19
0478 2A93 st -y,R18
047A 1A93 st -y,R17
047C 0A93 st -y,R16
047E 8101 movw R16,R2
0480 9201 movw R18,R4
0482 0E940000 xcall fpdiv2
0486 0E940000 xcall _sinf
048A 1801 movw R2,R16
048C 2901 movw R4,R18
048E 8B01 movw R16,R22
0490 0E940000 xcall int2fp
0494 5A92 st -y,R5
0496 4A92 st -y,R4
0498 3A92 st -y,R3
049A 2A92 st -y,R2
049C 0E940000 xcall fpmule2
04A0 0E940000 xcall _froundf
04A4 1801 movw R2,R16
04A6 2901 movw R4,R18
04A8 8701 movw R16,R14
04AA 0E940000 xcall int2fp
04AE 5A92 st -y,R5
04B0 4A92 st -y,R4
04B2 3A92 st -y,R3
04B4 2A92 st -y,R2
04B6 0E940000 xcall fpadd2
04BA 0E940000 xcall fpint
04BE 7801 movw R14,R16
04C0 .dbline 311
04C0 ; ty = y - fround(outer_radius * cos(degree * 3.14 / 180));
04C0 00E0 ldi R16,<L57
04C2 10E0 ldi R17,>L57
04C4 0E940000 xcall elpm32
04C8 1801 movw R2,R16
04CA 2901 movw R4,R18
04CC 8A01 movw R16,R20
04CE 0E940000 xcall int2fp
04D2 3A93 st -y,R19
04D4 2A93 st -y,R18
04D6 1A93 st -y,R17
04D8 0A93 st -y,R16
04DA 8101 movw R16,R2
04DC 9201 movw R18,R4
04DE 0E940000 xcall fpmule2
04E2 1801 movw R2,R16
04E4 2901 movw R4,R18
04E6 00E0 ldi R16,<L58
04E8 10E0 ldi R17,>L58
04EA 0E940000 xcall elpm32
04EE 3A93 st -y,R19
04F0 2A93 st -y,R18
04F2 1A93 st -y,R17
04F4 0A93 st -y,R16
04F6 8101 movw R16,R2
04F8 9201 movw R18,R4
04FA 0E940000 xcall fpdiv2
04FE 0E940000 xcall _cosf
0502 1801 movw R2,R16
0504 2901 movw R4,R18
0506 8B01 movw R16,R22
0508 0E940000 xcall int2fp
050C 5A92 st -y,R5
050E 4A92 st -y,R4
0510 3A92 st -y,R3
0512 2A92 st -y,R2
0514 0E940000 xcall fpmule2
0518 0E940000 xcall _froundf
051C 1801 movw R2,R16
051E 2901 movw R4,R18
0520 0F85 ldd R16,y+15
0522 1889 ldd R17,y+16
0524 0E940000 xcall int2fp
0528 5A92 st -y,R5
052A 4A92 st -y,R4
052C 3A92 st -y,R3
052E 2A92 st -y,R2
0530 0E940000 xcall fpsub2
0534 0E940000 xcall fpint
0538 A801 movw R20,R16
053A .dbline 312
053A ; lcd_line(fx,fy,tx,ty,show);
053A 0F88 ldd R0,y+23
053C 0C82 std y+4,R0
053E 5B83 std y+3,R21
0540 4A83 std y+2,R20
0542 F982 std y+1,R15
0544 E882 std y+0,R14
0546 9601 movw R18,R12
0548 8501 movw R16,R10
054A 93D0 xcall _lcd_line
054C .dbline -2
054C L56:
054C .dbline 0 ; func end
054C 2596 adiw R28,5
054E 0E940000 xcall pop_xgsetF0FC
0552 2296 adiw R28,2
0554 0895 ret
0556 .dbsym r ty 20 I
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -