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

📄 graphic.lis

📁 AVR控制12864液晶画圆弧,在AVR单片机的控制下完成圆弧的绘制。
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 03E2           ;    y = radius;
 03E2 AF84              ldd R10,y+15
 03E4 BB24              clr R11
 03E6                   .dbline 214
 03E6           ;    tSwitch = 3 - 2 * radius;
 03E6 82E0              ldi R24,2
 03E8 0A2C              mov R0,R10
 03EA 809D              mul R24,R0
 03EC 43E0              ldi R20,3
 03EE 50E0              ldi R21,0
 03F0 4019              sub R20,R0
 03F2 5109              sbc R21,R1
 03F4 7FC0              xjmp L83
 03F6           L82:
 03F6                   .dbline 217
 03F6           ; 
 03F6           ;    while (x <= y) 
 03F6           ;     { lcd_dot(xCenter + x, yCenter + y, mode);
 03F6                   .dbline 217
 03F6 E882              std y+0,R14
 03F8 2D85              ldd R18,y+13
 03FA 3327              clr R19
 03FC 2A0D              add R18,R10
 03FE 3B1D              adc R19,R11
 0400 0B85              ldd R16,y+11
 0402 1127              clr R17
 0404 0C0D              add R16,R12
 0406 1D1D              adc R17,R13
 0408 58DE              xcall _lcd_dot
 040A                   .dbline 218
 040A           ;       lcd_dot(xCenter + x, yCenter - y, mode);
 040A E882              std y+0,R14
 040C 2D85              ldd R18,y+13
 040E 3327              clr R19
 0410 2A19              sub R18,R10
 0412 3B09              sbc R19,R11
 0414 0B85              ldd R16,y+11
 0416 1127              clr R17
 0418 0C0D              add R16,R12
 041A 1D1D              adc R17,R13
 041C 4EDE              xcall _lcd_dot
 041E                   .dbline 220
 041E           ;       
 041E           ;       lcd_dot(xCenter - x, yCenter + y, mode);
 041E E882              std y+0,R14
 0420 2D85              ldd R18,y+13
 0422 3327              clr R19
 0424 2A0D              add R18,R10
 0426 3B1D              adc R19,R11
 0428 0B85              ldd R16,y+11
 042A 1127              clr R17
 042C 0C19              sub R16,R12
 042E 1D09              sbc R17,R13
 0430 44DE              xcall _lcd_dot
 0432                   .dbline 221
 0432           ;       lcd_dot(xCenter - x, yCenter - y, mode);
 0432 E882              std y+0,R14
 0434 2D85              ldd R18,y+13
 0436 3327              clr R19
 0438 2A19              sub R18,R10
 043A 3B09              sbc R19,R11
 043C 0B85              ldd R16,y+11
 043E 1127              clr R17
 0440 0C19              sub R16,R12
 0442 1D09              sbc R17,R13
 0444 3ADE              xcall _lcd_dot
 0446                   .dbline 223
 0446           ;       
 0446           ;       lcd_dot(yCenter + y - d, yCenter + x, mode);
 0446 E882              std y+0,R14
 0448 2D85              ldd R18,y+13
 044A 3327              clr R19
 044C 2C0D              add R18,R12
 044E 3D1D              adc R19,R13
 0450 0D85              ldd R16,y+13
 0452 1127              clr R17
 0454 0A0D              add R16,R10
 0456 1B1D              adc R17,R11
 0458 262E              mov R2,R22
 045A 3324              clr R3
 045C 0219              sub R16,R2
 045E 1309              sbc R17,R3
 0460 2CDE              xcall _lcd_dot
 0462                   .dbline 224
 0462           ;       lcd_dot(yCenter + y - d, yCenter - x, mode);
 0462 E882              std y+0,R14
 0464 2D85              ldd R18,y+13
 0466 3327              clr R19
 0468 2C19              sub R18,R12
 046A 3D09              sbc R19,R13
 046C 0D85              ldd R16,y+13
 046E 1127              clr R17
 0470 0A0D              add R16,R10
 0472 1B1D              adc R17,R11
 0474 262E              mov R2,R22
 0476 3324              clr R3
 0478 0219              sub R16,R2
 047A 1309              sbc R17,R3
 047C 1EDE              xcall _lcd_dot
 047E                   .dbline 226
 047E           ;    
 047E           ;       lcd_dot(yCenter - y - d, yCenter + x, mode);
 047E E882              std y+0,R14
 0480 2D85              ldd R18,y+13
 0482 3327              clr R19
 0484 2C0D              add R18,R12
 0486 3D1D              adc R19,R13
 0488 0D85              ldd R16,y+13
 048A 1127              clr R17
 048C 0A19              sub R16,R10
 048E 1B09              sbc R17,R11
 0490 262E              mov R2,R22
 0492 3324              clr R3
 0494 0219              sub R16,R2
 0496 1309              sbc R17,R3
 0498 10DE              xcall _lcd_dot
 049A                   .dbline 227
 049A           ;       lcd_dot(yCenter - y - d, yCenter - x, mode);
 049A E882              std y+0,R14
 049C 2D85              ldd R18,y+13
 049E 3327              clr R19
 04A0 2C19              sub R18,R12
 04A2 3D09              sbc R19,R13
 04A4 0D85              ldd R16,y+13
 04A6 1127              clr R17
 04A8 0A19              sub R16,R10
 04AA 1B09              sbc R17,R11
 04AC 262E              mov R2,R22
 04AE 3324              clr R3
 04B0 0219              sub R16,R2
 04B2 1309              sbc R17,R3
 04B4 02DE              xcall _lcd_dot
 04B6                   .dbline 229
 04B6           ; 
 04B6           ;       if (tSwitch<0) 
 04B6 4030              cpi R20,0
 04B8 E0E0              ldi R30,0
 04BA 5E07              cpc R21,R30
 04BC 54F4              brge L85
 04BE                   .dbline 230
 04BE           ;          tSwitch += (4 * x + 6);
 04BE 04E0              ldi R16,4
 04C0 10E0              ldi R17,0
 04C2 9601              movw R18,R12
 04C4 0E940000          xcall empy16s
 04C8 C801              movw R24,R16
 04CA 0696              adiw R24,6
 04CC 480F              add R20,R24
 04CE 591F              adc R21,R25
 04D0 0EC0              xjmp L86
 04D2           L85:
 04D2                   .dbline 232
 04D2           ;       else 
 04D2           ;        { tSwitch += (4 * (x - y) + 10);
 04D2                   .dbline 232
 04D2 9601              movw R18,R12
 04D4 2A19              sub R18,R10
 04D6 3B09              sbc R19,R11
 04D8 04E0              ldi R16,4
 04DA 10E0              ldi R17,0
 04DC 0E940000          xcall empy16s
 04E0 C801              movw R24,R16
 04E2 0A96              adiw R24,10
 04E4 480F              add R20,R24
 04E6 591F              adc R21,R25
 04E8                   .dbline 233
 04E8           ;          y--;
 04E8 C501              movw R24,R10
 04EA 0197              sbiw R24,1
 04EC 5C01              movw R10,R24
 04EE                   .dbline 234
 04EE           ;        }
 04EE           L86:
 04EE                   .dbline 235
 04EE C601              movw R24,R12
 04F0 0196              adiw R24,1
 04F2 6C01              movw R12,R24
 04F4                   .dbline 236
 04F4           L83:
 04F4                   .dbline 216
 04F4 AC14              cp R10,R12
 04F6 BD04              cpc R11,R13
 04F8 0CF0              brlt X5
 04FA 7DCF              xjmp L82
 04FC           X5:
 04FC                   .dbline -2
 04FC           L81:
 04FC 2196              adiw R28,1
 04FE 0E940000          xcall pop_gset5
 0502 2496              adiw R28,4
 0504                   .dbline 0 ; func end
 0504 0895              ret
 0506                   .dbsym r tSwitch 20 I
 0506                   .dbsym r d 22 c
 0506                   .dbsym r y 10 I
 0506                   .dbsym r x 12 I
 0506                   .dbsym r mode 14 c
 0506                   .dbsym l radius 15 c
 0506                   .dbsym l yCenter 13 c
 0506                   .dbsym l xCenter 11 c
 0506                   .dbend
 0506                   .dbfunc e lcd_rect _lcd_rect fV
 0506           ;           mode -> R14
 0506           ;         height -> R12
 0506           ;          width -> R22
 0506           ;              y -> R20
 0506           ;              x -> R10
                        .even
 0506           _lcd_rect::
 0506 0E940000          xcall push_gset5
 050A 422F              mov R20,R18
 050C A02E              mov R10,R16
 050E 2597              sbiw R28,5
 0510 6F85              ldd R22,y+15
 0512 C988              ldd R12,y+17
 0514 EB88              ldd R14,y+19
 0516                   .dbline -1
 0516                   .dbline 241
 0516           ;       x++;
 0516           ;     }
 0516           ;  }
 0516           ; 
 0516           ; 
 0516           ; void lcd_rect(uint8_t x, uint8_t y, uint8_t width, uint8_t height, uint8_t mode) 
 0516           ;  { width--;
 0516                   .dbline 241
 0516 6A95              dec R22
 0518                   .dbline 242
 0518           ;    height--;
 0518 CA94              dec R12
 051A                   .dbline 243
 051A           ;    lcd_line(x, y, x+width, y, mode);  // top
 051A EC82              std y+4,R14
 051C 4A83              std y+2,R20
 051E 2A2C              mov R2,R10
 0520 260E              add R2,R22
 0522 2882              std y+0,R2
 0524 242F              mov R18,R20
 0526 0A2D              mov R16,R10
 0528 0CDE              xcall _lcd_line
 052A                   .dbline 244
 052A           ;    lcd_line(x, y, x, y+height, mode); // left
 052A EC82              std y+4,R14
 052C 242E              mov R2,R20
 052E 2C0C              add R2,R12
 0530 2A82              std y+2,R2
 0532 A882              std y+0,R10
 0534 242F              mov R18,R20
 0536 0A2D              mov R16,R10
 0538 04DE              xcall _lcd_line
 053A                   .dbline 245
 053A           ;    lcd_line(x, y+height, x+width, y+height, mode);    // bottom
 053A EC82              std y+4,R14
 053C 242E              mov R2,R20
 053E 2C0C              add R2,R12
 0540 2A82              std y+2,R2
 0542 4A2C              mov R4,R10
 0544 460E              add R4,R22
 0546 4882              std y+0,R4
 0548 222D              mov R18,R2
 054A 0A2D              mov R16,R10
 054C FADD              xcall _lcd_line
 054E                   .dbline 246
 054E           ;    lcd_line(x+width, y, x+width, y+height, mode);             // right
 054E EC82              std y+4,R14
 0550 242E              mov R2,R20
 0552 2C0C              add R2,R12
 0554 2A82              std y+2,R2
 0556 2A2C              mov R2,R10
 0558 260E              add R2,R22
 055A 2882              std y+0,R2
 055C 242F              mov R18,R20
 055E 022D              mov R16,R2
 0560 F0DD              xcall _lcd_line
 0562                   .dbline -2
 0562           L87:
 0562 2596              adiw R28,5
 0564 0E940000          xcall pop_gset5
 0568                   .dbline 0 ; func end
 0568 0895              ret
 056A                   .dbsym r mode 14 c
 056A                   .dbsym r height 12 c
 056A                   .dbsym r width 22 c
 056A                   .dbsym r y 20 c
 056A                   .dbsym r x 10 c
 056A                   .dbend
 056A                   .dbfunc e lcd_box _lcd_box fV
 056A           ;              i -> R20
 056A           ;           mode -> R22
 056A           ;         height -> R10
 056A           ;          width -> R12
 056A           ;              y -> R14
 056A           ;              x -> y+15
                        .even
 056A           _lcd_box::
 056A 0E940000          xcall push_arg4
 056E 0E940000          xcall push_gset5
 0572 E22E              mov R14,R18
 0574 2597              sbiw R28,5
 0576 CB88              ldd R12,y+19
 0578 AD88              ldd R10,y+21
 057A 6F89              ldd R22,y+23
 057C                   .dbline -1
 057C                   .dbline 250
 057C           ;  }
 057C           ; 
 057C           ; void lcd_box( uint8_t x, uint8_t y, uint8_t width,  uint8_t height,  uint8_t mode) 
 057C           ;  { uint8_t i;
 057C                   .dbline 251
 057C           ;    if (!width) return; 
 057C CC20              tst R12
 057E 09F4              brne L89
 0580                   .dbline 251
 0580 10C0              xjmp L88
 0582           L89:
 0582                   .dbline 253
 0582           ; 
 0582           ;    width--;
 0582 CA94              dec R12
 0584                   .dbline 255
 0584           ;       
 0584           ;    for (i=y;i<y+height;i++) 
 0584 4E2D              mov R20,R14
 0586 09C0              xjmp L94
 0588           L91:
 0588                   .dbline 256
 0588 6C83              std y+4,R22
 058A 4A83              std y+2,R20
 058C 2F84              ldd R2,y+15
 058E 2C0C              add R2,R12
 0590 2882              std y+0,R2
 0592 242F              mov R18,R20
 0594 0F85              ldd R16,y+15
 0596 D5DD              xcall _lcd_line
 0598           L92:
 0598                   .dbline 255
 0598 4395              inc R20
 059A           L94:
 059A                   .dbline 255
 059A 2E2C              mov R2,R14
 059C 2A0C              add R2,R10
 059E 4215              cp R20,R2
 05A0 98F3              brlo L91
 05A2                   .dbline -2
 05A2           L88:
 05A2 2596              adiw R28,5
 05A4 0E940000          xcall pop_gset5
 05A8 2496              adiw R28,4
 05AA                   .dbline 0 ; func end
 05AA 0895              ret
 05AC                   .dbsym r i 20 c
 05AC                   .dbsym r mode 22 c
 05AC                   .dbsym r height 10 c
 05AC                   .dbsym r width 12 c
 05AC                   .dbsym r y 14 c
 05AC                   .dbsym l x 15 c
 05AC                   .dbend

⌨️ 快捷键说明

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