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

📄 gui_basic.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 03EE                   .dbline 239
 03EE 788E              std y+24,R7
 03F0 6F8A              std y+23,R6
 03F2                   .dbline 240
 03F2           ;             GUI_RLine(x0, y0, y1, color);
 03F2 09A0              ldd R0,y+33
 03F4 0A82              std y+2,R0
 03F6 0D8C              ldd R0,y+29
 03F8 1E8C              ldd R1,y+30
 03FA 1982              std y+1,R1
 03FC 0882              std y+0,R0
 03FE 298D              ldd R18,y+25
 0400 3A8D              ldd R19,y+26
 0402 8301              movw R16,R6
 0404 0F93              push R16
 0406 1F93              push R17
 0408 0E940000          xcall _GUI_RLine
 040C 7F90              pop R7
 040E 6F90              pop R6
 0410                   .dbline 241
 0410           ;             if(wx>=wy) break;
 0410 2B80              ldd R2,y+3
 0412 3C80              ldd R3,y+4
 0414 6214              cp R6,R2
 0416 7304              cpc R7,R3
 0418 0CF0              brlt L62
 041A                   .dbline 241
 041A 4DC1              xjmp L48
 041C           L62:
 041C                   .dbline 242
 041C C301              movw R24,R6
 041E 0196              adiw R24,1
 0420 3C01              movw R6,R24
 0422                   .dbline 243
 0422           L60:
 0422                   .dbline 238
 0422 E5CF              xjmp L59
 0424           X2:
 0424                   .dbline 245
 0424           ;             wx++;
 0424           ;          }
 0424           ;          
 0424           ;                return;
 0424 48C1              xjmp L48
 0426           L56:
 0426                   .dbline 247
 0426           ;       }
 0426           ;    }
 0426           L54:
 0426                   .dbline 249
 0426           ;    
 0426           ;    if(dy>0)                                                   // 判断y轴方向
 0426 2224              clr R2
 0428 3324              clr R3
 042A 4B84              ldd R4,y+11
 042C 5C84              ldd R5,y+12
 042E 2414              cp R2,R4
 0430 3504              cpc R3,R5
 0432 1CF4              brge L64
 0434                   .dbline 250
 0434           ;    {  dy_sym = 1;                                     // dy>0,设置dy_sym=1
 0434                   .dbline 250
 0434 EE24              clr R14
 0436 E394              inc R14
 0438                   .dbline 251
 0438           ;    }
 0438 3AC0              xjmp L65
 043A           L64:
 043A                   .dbline 253
 043A           ;    else
 043A           ;    {  if(dy<0)
 043A                   .dbline 253
 043A 8B85              ldd R24,y+11
 043C 9C85              ldd R25,y+12
 043E 8030              cpi R24,0
 0440 E0E0              ldi R30,0
 0442 9E07              cpc R25,R30
 0444 1CF4              brge L66
 0446                   .dbline 254
 0446           ;       {  dy_sym = -1;                         // dy<0,设置dy_sym=-1
 0446                   .dbline 254
 0446 8FEF              ldi R24,255
 0448 E82E              mov R14,R24
 044A                   .dbline 255
 044A           ;       }
 044A 31C0              xjmp L67
 044C           L66:
 044C                   .dbline 257
 044C           ;       else
 044C           ;       {  /* dy==0,画水平线,或一点 */
 044C                   .dbline 258
 044C           ;          wx = y0-wx;
 044C 298C              ldd R2,y+25
 044E 3A8C              ldd R3,y+26
 0450 2618              sub R2,R6
 0452 3708              sbc R3,R7
 0454 3101              movw R6,R2
 0456                   .dbline 259
 0456           ;          if(wx<0) wx = 0;
 0456 C101              movw R24,R2
 0458 8030              cpi R24,0
 045A E0E0              ldi R30,0
 045C 9E07              cpc R25,R30
 045E 14F4              brge L68
 0460                   .dbline 259
 0460 6624              clr R6
 0462 7724              clr R7
 0464           L68:
 0464                   .dbline 260
 0464           ;          wy = y0+wy;
 0464 2B80              ldd R2,y+3
 0466 3C80              ldd R3,y+4
 0468 498C              ldd R4,y+25
 046A 5A8C              ldd R5,y+26
 046C 420C              add R4,R2
 046E 531C              adc R5,R3
 0470 5C82              std y+4,R5
 0472 4B82              std y+3,R4
 0474 1AC0              xjmp L71
 0476           L70:
 0476                   .dbline 263
 0476           ;          
 0476           ;          while(1)
 0476           ;          {  y0 = wx;
 0476                   .dbline 263
 0476 7A8E              std y+26,R7
 0478 698E              std y+25,R6
 047A                   .dbline 264
 047A           ;             GUI_HLine(x0, y0, x1, color);
 047A 09A0              ldd R0,y+33
 047C 0A82              std y+2,R0
 047E 0B8C              ldd R0,y+27
 0480 1C8C              ldd R1,y+28
 0482 1982              std y+1,R1
 0484 0882              std y+0,R0
 0486 9301              movw R18,R6
 0488 0F89              ldd R16,y+23
 048A 188D              ldd R17,y+24
 048C 2F93              push R18
 048E 3F93              push R19
 0490 0E940000          xcall _GUI_HLine
 0494 7F90              pop R7
 0496 6F90              pop R6
 0498                   .dbline 265
 0498           ;             if(wx>=wy) break;
 0498 2B80              ldd R2,y+3
 049A 3C80              ldd R3,y+4
 049C 6214              cp R6,R2
 049E 7304              cpc R7,R3
 04A0 0CF0              brlt L73
 04A2                   .dbline 265
 04A2 09C1              xjmp L48
 04A4           L73:
 04A4                   .dbline 266
 04A4 C301              movw R24,R6
 04A6 0196              adiw R24,1
 04A8 3C01              movw R6,R24
 04AA                   .dbline 267
 04AA           L71:
 04AA                   .dbline 262
 04AA E5CF              xjmp L70
 04AC           X3:
 04AC                   .dbline 268
 04AC           ;             wx++;
 04AC           ;          }
 04AC           ;                return;
 04AC 04C1              xjmp L48
 04AE           L67:
 04AE                   .dbline 270
 04AE           ;       }
 04AE           ;    }
 04AE           L65:
 04AE                   .dbline 273
 04AE           ;     
 04AE           ;    /* 将dx、dy取绝对值 */
 04AE           ;    dx = dx_sym * dx;
 04AE 2985              ldd R18,y+9
 04B0 3A85              ldd R19,y+10
 04B2 062F              mov R16,R22
 04B4 1127              clr R17
 04B6 07FD              sbrc R16,7
 04B8 1095              com R17
 04BA 0E940000          xcall empy16s
 04BE 1A87              std y+10,R17
 04C0 0987              std y+9,R16
 04C2                   .dbline 274
 04C2           ;    dy = dy_sym * dy;
 04C2 2B85              ldd R18,y+11
 04C4 3C85              ldd R19,y+12
 04C6 0E2D              mov R16,R14
 04C8 1127              clr R17
 04CA 07FD              sbrc R16,7
 04CC 1095              com R17
 04CE 0E940000          xcall empy16s
 04D2 1C87              std y+12,R17
 04D4 0B87              std y+11,R16
 04D6                   .dbline 277
 04D6           ;  
 04D6           ;    /* 计算2倍的dx及dy值 */
 04D6           ;    dx_x2 = dx*2;
 04D6 2985              ldd R18,y+9
 04D8 3A85              ldd R19,y+10
 04DA 02E0              ldi R16,2
 04DC 10E0              ldi R17,0
 04DE 0E940000          xcall empy16s
 04E2 1E83              std y+6,R17
 04E4 0D83              std y+5,R16
 04E6                   .dbline 278
 04E6           ;    dy_x2 = dy*2;
 04E6 2B85              ldd R18,y+11
 04E8 3C85              ldd R19,y+12
 04EA 02E0              ldi R16,2
 04EC 10E0              ldi R17,0
 04EE 0E940000          xcall empy16s
 04F2 1887              std y+8,R17
 04F4 0F83              std y+7,R16
 04F6                   .dbline 281
 04F6           ;    
 04F6           ;    /* 使用Bresenham法进行画直线 */
 04F6           ;    if(dx>=dy)                                         // 对于dx>=dy,则使用x轴为基准
 04F6 2B84              ldd R2,y+11
 04F8 3C84              ldd R3,y+12
 04FA 4984              ldd R4,y+9
 04FC 5A84              ldd R5,y+10
 04FE 4214              cp R4,R2
 0500 5304              cpc R5,R3
 0502 0CF4              brge X4
 0504 6DC0              xjmp L75
 0506           X4:
 0506                   .dbline 282
 0506           ;    {  di = dy_x2 - dx;
 0506                   .dbline 282
 0506 6801              movw R12,R16
 0508 C418              sub R12,R4
 050A D508              sbc R13,R5
 050C 43C0              xjmp L78
 050E           L77:
 050E                   .dbline 284
 050E           ;       while(x0!=x1)
 050E           ;       {  /* x轴向增长,则宽度在y方向,即画垂直线 */
 050E                   .dbline 285
 050E           ;          draw_a = y0-wx;
 050E 498D              ldd R20,y+25
 0510 5A8D              ldd R21,y+26
 0512 4619              sub R20,R6
 0514 5709              sbc R21,R7
 0516                   .dbline 286
 0516           ;          if(draw_a<0) draw_a = 0;
 0516 4030              cpi R20,0
 0518 E0E0              ldi R30,0
 051A 5E07              cpc R21,R30
 051C 14F4              brge L80
 051E                   .dbline 286
 051E 4427              clr R20
 0520 5527              clr R21
 0522           L80:
 0522                   .dbline 287
 0522           ;          draw_b = y0+wy;
 0522 2B80              ldd R2,y+3
 0524 3C80              ldd R3,y+4
 0526 A98C              ldd R10,y+25
 0528 BA8C              ldd R11,y+26
 052A A20C              add R10,R2
 052C B31C              adc R11,R3
 052E                   .dbline 288
 052E           ;          GUI_RLine(x0, draw_a, draw_b, color);
 052E 09A0              ldd R0,y+33
 0530 0A82              std y+2,R0
 0532 B982              std y+1,R11
 0534 A882              std y+0,R10
 0536 9A01              movw R18,R20
 0538 0F89              ldd R16,y+23
 053A 188D              ldd R17,y+24
 053C 6F92              push R6
 053E 7F92              push R7
 0540 0E940000          xcall _GUI_RLine
 0544 7F90              pop R7
 0546 6F90              pop R6
 0548                   .dbline 290
 0548           ;          
 0548           ;          x0 += dx_sym;                                
 0548 262E              mov R2,R22
 054A 3324              clr R3
 054C 27FC              sbrc R2,7
 054E 3094              com R3
 0550 0F88              ldd R0,y+23
 0552 188C              ldd R1,y+24
 0554 020C              add R0,R2
 0556 131C              adc R1,R3
 0558 188E              std y+24,R1
 055A 0F8A              std y+23,R0
 055C                   .dbline 291
 055C           ;          if(di<0)
 055C C601              movw R24,R12
 055E 8030              cpi R24,0
 0560 E0E0              ldi R30,0
 0562 9E07              cpc R25,R30
 0564 2CF4              brge L82
 0566                   .dbline 292
 0566           ;          {  di += dy_x2;                      // 计算出下一步的决策值
 0566                   .dbline 292
 0566 2F80              ldd R2,y+7
 0568 3884              ldd R3,y+8
 056A C20C              add R12,R2
 056C D31C              adc R13,R3
 056E                   .dbline 293
 056E           ;          }
 056E 12C0              xjmp L83
 0570           L82:
 0570                   .dbline 295
 0570           ;          else
 0570           ;          {  di += dy_x2 - dx_x2;
 0570                   .dbline 295
 0570 2D80              ldd R2,y+5
 0572 3E80              ldd R3,y+6
 0574 4F80              ldd R4,y+7
 0576 5884              ldd R5,y+8
 0578 4218              sub R4,R2
 057A 5308              sbc R5,R3
 057C C40C              add R12,R4
 057E D51C              adc R13,R5
 0580                   .dbline 296
 0580           ;             y0 += dy_sym;
 0580 2E2C              mov R2,R14
 0582 3324              clr R3
 0584 27FC              sbrc R2,7
 0586 3094              com R3
 0588 098C              ldd R0,y+25
 058A 1A8C              ldd R1,y+26

⌨️ 快捷键说明

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