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

📄 1335.lis

📁 AVR单片机
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0556                   .dbsym r tx 14 I
 0556                   .dbsym r fy 12 I
 0556                   .dbsym r fx 10 I
 0556                   .dbsym l show 23 c
 0556                   .dbsym r outer_radius 22 I
 0556                   .dbsym r inner_radius 12 I
 0556                   .dbsym r degree 20 I
 0556                   .dbsym l y 15 I
 0556                   .dbsym r x 14 I
 0556                   .dbend
 0556                   .dbfunc e lcd_circle _lcd_circle fV
 0556           ;              p -> R12,R13
 0556           ;             yc -> R22,R23
 0556           ;             xc -> R20,R21
 0556           ;           show -> R10
 0556           ;         radius -> R12,R13
 0556           ;              y -> y+13
 0556           ;              x -> y+11
                        .even
 0556           _lcd_circle::
 0556 0E940000          xcall push_arg4
 055A 0E940000          xcall push_xgsetF0FC
 055E 2197              sbiw R28,1
 0560 CF84              ldd R12,y+15
 0562 D888              ldd R13,y+16
 0564 A988              ldd R10,y+17
 0566                   .dbline -1
 0566                   .dbline 321
 0566           ; }
 0566           ; 
 0566           ; 
 0566           ; /***********************************************************************
 0566           ; Draws a circle with center at x,y with given radius.
 0566           ; Set show to 1 to draw pixel, set to 0 to hide pixel.
 0566           ; ***********************************************************************/
 0566           ; void lcd_circle(int x, int y, int radius, unsigned char show)
 0566           ; {
 0566                   .dbline 322
 0566           ;   int xc = 0;
 0566 4427              clr R20
 0568 5527              clr R21
 056A                   .dbline 323
 056A           ;   int yc = radius;
 056A B601              movw R22,R12
 056C                   .dbline 324
 056C           ;   int p = 3 - (radius<<1);
 056C 1601              movw R2,R12
 056E 220C              lsl R2
 0570 331C              rol R3
 0572 83E0              ldi R24,3
 0574 90E0              ldi R25,0
 0576 6C01              movw R12,R24
 0578 C218              sub R12,R2
 057A D308              sbc R13,R3
 057C 71C0              xjmp L61
 057E           L60:
 057E                   .dbline 326
 057E           ;   while (xc <= yc)  
 057E           ;   {
 057E                   .dbline 327
 057E           ;     lcd_pixel(x + xc, y + yc, show);
 057E A882              std y+0,R10
 0580 2D85              ldd R18,y+13
 0582 3E85              ldd R19,y+14
 0584 260F              add R18,R22
 0586 371F              adc R19,R23
 0588 0B85              ldd R16,y+11
 058A 1C85              ldd R17,y+12
 058C 040F              add R16,R20
 058E 151F              adc R17,R21
 0590 37DE              xcall _lcd_pixel
 0592                   .dbline 328
 0592           ;     lcd_pixel(x + xc, y - yc, show);
 0592 A882              std y+0,R10
 0594 2D85              ldd R18,y+13
 0596 3E85              ldd R19,y+14
 0598 261B              sub R18,R22
 059A 370B              sbc R19,R23
 059C 0B85              ldd R16,y+11
 059E 1C85              ldd R17,y+12
 05A0 040F              add R16,R20
 05A2 151F              adc R17,R21
 05A4 2DDE              xcall _lcd_pixel
 05A6                   .dbline 329
 05A6           ;     lcd_pixel(x - xc, y + yc, show);
 05A6 A882              std y+0,R10
 05A8 2D85              ldd R18,y+13
 05AA 3E85              ldd R19,y+14
 05AC 260F              add R18,R22
 05AE 371F              adc R19,R23
 05B0 0B85              ldd R16,y+11
 05B2 1C85              ldd R17,y+12
 05B4 041B              sub R16,R20
 05B6 150B              sbc R17,R21
 05B8 23DE              xcall _lcd_pixel
 05BA                   .dbline 330
 05BA           ;     lcd_pixel(x - xc, y - yc, show);
 05BA A882              std y+0,R10
 05BC 2D85              ldd R18,y+13
 05BE 3E85              ldd R19,y+14
 05C0 261B              sub R18,R22
 05C2 370B              sbc R19,R23
 05C4 0B85              ldd R16,y+11
 05C6 1C85              ldd R17,y+12
 05C8 041B              sub R16,R20
 05CA 150B              sbc R17,R21
 05CC 19DE              xcall _lcd_pixel
 05CE                   .dbline 331
 05CE           ;     lcd_pixel(x + yc, y + xc, show);
 05CE A882              std y+0,R10
 05D0 2D85              ldd R18,y+13
 05D2 3E85              ldd R19,y+14
 05D4 240F              add R18,R20
 05D6 351F              adc R19,R21
 05D8 0B85              ldd R16,y+11
 05DA 1C85              ldd R17,y+12
 05DC 060F              add R16,R22
 05DE 171F              adc R17,R23
 05E0 0FDE              xcall _lcd_pixel
 05E2                   .dbline 332
 05E2           ;     lcd_pixel(x + yc, y - xc, show);
 05E2 A882              std y+0,R10
 05E4 2D85              ldd R18,y+13
 05E6 3E85              ldd R19,y+14
 05E8 241B              sub R18,R20
 05EA 350B              sbc R19,R21
 05EC 0B85              ldd R16,y+11
 05EE 1C85              ldd R17,y+12
 05F0 060F              add R16,R22
 05F2 171F              adc R17,R23
 05F4 05DE              xcall _lcd_pixel
 05F6                   .dbline 333
 05F6           ;     lcd_pixel(x - yc, y + xc, show);
 05F6 A882              std y+0,R10
 05F8 2D85              ldd R18,y+13
 05FA 3E85              ldd R19,y+14
 05FC 240F              add R18,R20
 05FE 351F              adc R19,R21
 0600 0B85              ldd R16,y+11
 0602 1C85              ldd R17,y+12
 0604 061B              sub R16,R22
 0606 170B              sbc R17,R23
 0608 FBDD              xcall _lcd_pixel
 060A                   .dbline 334
 060A           ;     lcd_pixel(x - yc, y - xc, show);
 060A A882              std y+0,R10
 060C 2D85              ldd R18,y+13
 060E 3E85              ldd R19,y+14
 0610 241B              sub R18,R20
 0612 350B              sbc R19,R21
 0614 0B85              ldd R16,y+11
 0616 1C85              ldd R17,y+12
 0618 061B              sub R16,R22
 061A 170B              sbc R17,R23
 061C F1DD              xcall _lcd_pixel
 061E                   .dbline 335
 061E           ;     if (p < 0)
 061E C601              movw R24,R12
 0620 8030              cpi R24,0
 0622 E0E0              ldi R30,0
 0624 9E07              cpc R25,R30
 0626 64F4              brge L63
 0628           X12:
 0628                   .dbline 336
 0628           ;       p += (xc++ << 2) + 6;
 0628 1A01              movw R2,R20
 062A 4F5F              subi R20,255  ; offset = 1
 062C 5F4F              sbci R21,255
 062E C101              movw R24,R2
 0630 880F              lsl R24
 0632 991F              rol R25
 0634 880F              lsl R24
 0636 991F              rol R25
 0638 0696              adiw R24,6
 063A C80E              add R12,R24
 063C D91E              adc R13,R25
 063E 10C0              xjmp L64
 0640           L63:
 0640                   .dbline 338
 0640           ;     else
 0640           ;       p += ((xc++ - yc--)<<2) + 10;
 0640 1A01              movw R2,R20
 0642 4F5F              subi R20,255  ; offset = 1
 0644 5F4F              sbci R21,255
 0646 7B01              movw R14,R22
 0648 6150              subi R22,1
 064A 7040              sbci R23,0
 064C C101              movw R24,R2
 064E 8E19              sub R24,R14
 0650 9F09              sbc R25,R15
 0652 880F              lsl R24
 0654 991F              rol R25
 0656 880F              lsl R24
 0658 991F              rol R25
 065A 0A96              adiw R24,10
 065C C80E              add R12,R24
 065E D91E              adc R13,R25
 0660           L64:
 0660                   .dbline 339
 0660           ;   }
 0660           L61:
 0660                   .dbline 325
 0660 6417              cp R22,R20
 0662 7507              cpc R23,R21
 0664 0CF0              brlt X14
 0666 8BCF              xjmp L60
 0668           X14:
 0668           X13:
 0668                   .dbline -2
 0668           L59:
 0668                   .dbline 0 ; func end
 0668 2196              adiw R28,1
 066A 0E940000          xcall pop_xgsetF0FC
 066E 2496              adiw R28,4
 0670 0895              ret
 0672                   .dbsym r p 12 I
 0672                   .dbsym r yc 22 I
 0672                   .dbsym r xc 20 I
 0672                   .dbsym r show 10 c
 0672                   .dbsym r radius 12 I
 0672                   .dbsym l y 13 I
 0672                   .dbsym l x 11 I
 0672                   .dbend
 0672                   .dbfunc e lcd_line _lcd_line fV
 0672           ;          stepy -> R12,R13
 0672           ;          stepx -> R14,R15
 0672           ;             dx -> R22,R23
 0672           ;             dy -> R20,R21
 0672           ;       fraction -> R10,R11
 0672           ;           show -> y+19
 0672           ;             y2 -> y+17
 0672           ;             x2 -> y+15
 0672           ;             y1 -> y+13
 0672           ;             x1 -> y+11
                        .even
 0672           _lcd_line::
 0672 0E940000          xcall push_arg4
 0676 0E940000          xcall push_xgsetF0FC
 067A 2197              sbiw R28,1
 067C                   .dbline -1
 067C                   .dbline 348
 067C           ; }
 067C           ; 
 067C           ; 
 067C           ; /***********************************************************************
 067C           ; Draws a line from x1,y1 go x2,y2. Line can be drawn in any direction.
 067C           ; Set show to 1 to draw pixel, set to 0 to hide pixel.
 067C           ; ***********************************************************************/
 067C           ; void lcd_line(int x1, int y1, int x2, int y2, unsigned char show) 
 067C           ; {
 067C                   .dbline 349
 067C           ;   int dy = y2 - y1;
 067C 4989              ldd R20,y+17
 067E 5A89              ldd R21,y+18
 0680 0D84              ldd R0,y+13
 0682 1E84              ldd R1,y+14
 0684 4019              sub R20,R0
 0686 5109              sbc R21,R1
 0688                   .dbline 350
 0688           ;   int dx = x2 - x1;
 0688 6F85              ldd R22,y+15
 068A 7889              ldd R23,y+16
 068C 0B84              ldd R0,y+11
 068E 1C84              ldd R1,y+12
 0690 6019              sub R22,R0
 0692 7109              sbc R23,R1
 0694                   .dbline 352
 0694           ;   int stepx, stepy, fraction;
 0694           ;   if (dy < 0) 
 0694 4030              cpi R20,0
 0696 E0E0              ldi R30,0
 0698 5E07              cpc R21,R30
 069A 44F4              brge L66
 069C           X15:
 069C                   .dbline 353
 069C           ;   {
 069C                   .dbline 354
 069C           ;     dy = -dy;
 069C 4095              com R20
 069E 5095              com R21
 06A0 4F5F              subi R20,0xFF
 06A2 5F4F              sbci R21,0xFF
 06A4                   .dbline 355
 06A4           ;     stepy = -1;
 06A4 8FEF              ldi R24,-1
 06A6 9FEF              ldi R25,-1
 06A8 6C01              movw R12,R24
 06AA                   .dbline 356
 06AA           ;   }
 06AA 03C0              xjmp L67
 06AC           L66:
 06AC                   .dbline 358
 06AC           ;   else 
 06AC           ;   {
 06AC                   .dbline 359
 06AC           ;     stepy = 1;
 06AC 81E0              ldi R24,1
 06AE 90E0              ldi R25,0
 06B0 6C01              movw R12,R24
 06B2                   .dbline 360
 06B2           ;   }
 06B2           L67:
 06B2                   .dbline 361
 06B2           ;   if (dx < 0)
 06B2 6030              cpi R22,0
 06B4 E0E0              ldi R30,0
 06B6 7E07              cpc R23,R30
 06B8 44F4              brge L68
 06BA           X16:
 06BA                   .dbline 362
 06BA           ;   {
 06BA                   .dbline 363
 06BA           ;     dx = -dx;
 06BA 6095              com R22
 06BC 7095              com R23
 06BE 6F5F              subi R22,0xFF
 06C0 7F4F              sbci R23,0xFF
 06C2                   .dbline 364
 06C2           ;     stepx = -1;
 06C2 8FEF              ldi R24,-1
 06C4 9FEF              ldi R25,-1
 06C6 7C01              movw R14,R24
 06C8                   .dbline 365
 06C8           ;   }
 06C8 03C0              xjmp L69
 06CA           L68:
 06

⌨️ 快捷键说明

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