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

📄 gui_basic.lis

📁 ssd1325控制器液晶的驱动程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 058C 020C              add R0,R2
 058E 131C              adc R1,R3
 0590 1A8E              std y+26,R1
 0592 098E              std y+25,R0
 0594                   .dbline 297
 0594           ;          }
 0594           L83:
 0594                   .dbline 298
 0594           L78:
 0594                   .dbline 283
 0594 0F88              ldd R0,y+23
 0596 188C              ldd R1,y+24
 0598 0B8D              ldd R16,y+27
 059A 1C8D              ldd R17,y+28
 059C 0016              cp R0,R16
 059E 1106              cpc R1,R17
 05A0 09F0              breq X5
 05A2 B5CF              xjmp L77
 05A4           X5:
 05A4                   .dbline 299
 05A4           ;       }
 05A4           ;       draw_a = y0-wx;
 05A4 498D              ldd R20,y+25
 05A6 5A8D              ldd R21,y+26
 05A8 4619              sub R20,R6
 05AA 5709              sbc R21,R7
 05AC                   .dbline 300
 05AC           ;       if(draw_a<0) draw_a = 0;
 05AC 4030              cpi R20,0
 05AE E0E0              ldi R30,0
 05B0 5E07              cpc R21,R30
 05B2 14F4              brge L84
 05B4                   .dbline 300
 05B4 4427              clr R20
 05B6 5527              clr R21
 05B8           L84:
 05B8                   .dbline 301
 05B8           ;       draw_b = y0+wy;
 05B8 2B80              ldd R2,y+3
 05BA 3C80              ldd R3,y+4
 05BC A98C              ldd R10,y+25
 05BE BA8C              ldd R11,y+26
 05C0 A20C              add R10,R2
 05C2 B31C              adc R11,R3
 05C4                   .dbline 302
 05C4           ;       GUI_RLine(x0, draw_a, draw_b, color);
 05C4 09A0              ldd R0,y+33
 05C6 0A82              std y+2,R0
 05C8 B982              std y+1,R11
 05CA A882              std y+0,R10
 05CC 9A01              movw R18,R20
 05CE 0F89              ldd R16,y+23
 05D0 188D              ldd R17,y+24
 05D2 6F92              push R6
 05D4 7F92              push R7
 05D6 0E940000          xcall _GUI_RLine
 05DA 7F90              pop R7
 05DC 6F90              pop R6
 05DE                   .dbline 303
 05DE           ;    }
 05DE 6BC0              xjmp L76
 05E0           L75:
 05E0                   .dbline 305
 05E0           ;    else                                                               // 对于dx<dy,则使用y轴为基准
 05E0           ;    {  di = dx_x2 - dy;
 05E0                   .dbline 305
 05E0 2B84              ldd R2,y+11
 05E2 3C84              ldd R3,y+12
 05E4 CD80              ldd R12,y+5
 05E6 DE80              ldd R13,y+6
 05E8 C218              sub R12,R2
 05EA D308              sbc R13,R3
 05EC 43C0              xjmp L87
 05EE           L86:
 05EE                   .dbline 307
 05EE           ;       while(y0!=y1)
 05EE           ;       {  /* y轴向增长,则宽度在x方向,即画水平线 */
 05EE                   .dbline 308
 05EE           ;          draw_a = x0-wx;
 05EE 4F89              ldd R20,y+23
 05F0 588D              ldd R21,y+24
 05F2 4619              sub R20,R6
 05F4 5709              sbc R21,R7
 05F6                   .dbline 309
 05F6           ;          if(draw_a<0) draw_a = 0;
 05F6 4030              cpi R20,0
 05F8 E0E0              ldi R30,0
 05FA 5E07              cpc R21,R30
 05FC 14F4              brge L89
 05FE                   .dbline 309
 05FE 4427              clr R20
 0600 5527              clr R21
 0602           L89:
 0602                   .dbline 310
 0602           ;          draw_b = x0+wy;
 0602 2B80              ldd R2,y+3
 0604 3C80              ldd R3,y+4
 0606 AF88              ldd R10,y+23
 0608 B88C              ldd R11,y+24
 060A A20C              add R10,R2
 060C B31C              adc R11,R3
 060E                   .dbline 311
 060E           ;          GUI_HLine(draw_a, y0, draw_b, color);
 060E 09A0              ldd R0,y+33
 0610 0A82              std y+2,R0
 0612 B982              std y+1,R11
 0614 A882              std y+0,R10
 0616 298D              ldd R18,y+25
 0618 3A8D              ldd R19,y+26
 061A 8A01              movw R16,R20
 061C 6F92              push R6
 061E 7F92              push R7
 0620 0E940000          xcall _GUI_HLine
 0624 7F90              pop R7
 0626 6F90              pop R6
 0628                   .dbline 313
 0628           ;          
 0628           ;          y0 += dy_sym;
 0628 2E2C              mov R2,R14
 062A 3324              clr R3
 062C 27FC              sbrc R2,7
 062E 3094              com R3
 0630 098C              ldd R0,y+25
 0632 1A8C              ldd R1,y+26
 0634 020C              add R0,R2
 0636 131C              adc R1,R3
 0638 1A8E              std y+26,R1
 063A 098E              std y+25,R0
 063C                   .dbline 314
 063C           ;          if(di<0)
 063C C601              movw R24,R12
 063E 8030              cpi R24,0
 0640 E0E0              ldi R30,0
 0642 9E07              cpc R25,R30
 0644 2CF4              brge L91
 0646                   .dbline 315
 0646           ;          {  di += dx_x2;
 0646                   .dbline 315
 0646 2D80              ldd R2,y+5
 0648 3E80              ldd R3,y+6
 064A C20C              add R12,R2
 064C D31C              adc R13,R3
 064E                   .dbline 316
 064E           ;          }
 064E 12C0              xjmp L92
 0650           L91:
 0650                   .dbline 318
 0650           ;          else
 0650           ;          {  di += dx_x2 - dy_x2;
 0650                   .dbline 318
 0650 2F80              ldd R2,y+7
 0652 3884              ldd R3,y+8
 0654 4D80              ldd R4,y+5
 0656 5E80              ldd R5,y+6
 0658 4218              sub R4,R2
 065A 5308              sbc R5,R3
 065C C40C              add R12,R4
 065E D51C              adc R13,R5
 0660                   .dbline 319
 0660           ;             x0 += dx_sym;
 0660 262E              mov R2,R22
 0662 3324              clr R3
 0664 27FC              sbrc R2,7
 0666 3094              com R3
 0668 0F88              ldd R0,y+23
 066A 188C              ldd R1,y+24
 066C 020C              add R0,R2
 066E 131C              adc R1,R3
 0670 188E              std y+24,R1
 0672 0F8A              std y+23,R0
 0674                   .dbline 320
 0674           ;          }
 0674           L92:
 0674                   .dbline 321
 0674           L87:
 0674                   .dbline 306
 0674 098C              ldd R0,y+25
 0676 1A8C              ldd R1,y+26
 0678 0D8D              ldd R16,y+29
 067A 1E8D              ldd R17,y+30
 067C 0016              cp R0,R16
 067E 1106              cpc R1,R17
 0680 09F0              breq X6
 0682 B5CF              xjmp L86
 0684           X6:
 0684                   .dbline 322
 0684           ;       }
 0684           ;       draw_a = x0-wx;
 0684 4F89              ldd R20,y+23
 0686 588D              ldd R21,y+24
 0688 4619              sub R20,R6
 068A 5709              sbc R21,R7
 068C                   .dbline 323
 068C           ;       if(draw_a<0) draw_a = 0;
 068C 4030              cpi R20,0
 068E E0E0              ldi R30,0
 0690 5E07              cpc R21,R30
 0692 14F4              brge L93
 0694                   .dbline 323
 0694 4427              clr R20
 0696 5527              clr R21
 0698           L93:
 0698                   .dbline 324
 0698 2B80              ldd R2,y+3
 069A 3C80              ldd R3,y+4
 069C AF88              ldd R10,y+23
 069E B88C              ldd R11,y+24
 06A0 A20C              add R10,R2
 06A2 B31C              adc R11,R3
 06A4                   .dbline 325
 06A4 09A0              ldd R0,y+33
 06A6 0A82              std y+2,R0
 06A8 B982              std y+1,R11
 06AA A882              std y+0,R10
 06AC 298D              ldd R18,y+25
 06AE 3A8D              ldd R19,y+26
 06B0 8A01              movw R16,R20
 06B2 0E940000          xcall _GUI_HLine
 06B6                   .dbline 326
 06B6           L76:
 06B6                   .dbline -2
 06B6           L48:
 06B6 2D96              adiw R28,13
 06B8 0E940000          xcall pop_gset5
 06BC 2496              adiw R28,4
 06BE                   .dbline 0 ; func end
 06BE 0895              ret
 06C0                   .dbsym l dy 11 I
 06C0                   .dbsym l dx 9 I
 06C0                   .dbsym l dy_x2 7 I
 06C0                   .dbsym l dx_x2 5 I
 06C0                   .dbsym r dy_sym 14 C
 06C0                   .dbsym r dx_sym 22 C
 06C0                   .dbsym l wy 3 I
 06C0                   .dbsym r di 12 I
 06C0                   .dbsym r draw_b 10 I
 06C0                   .dbsym r wx 6 I
 06C0                   .dbsym r draw_a 20 I
 06C0                   .dbsym l color 33 c
 06C0                   .dbsym r with 20 c
 06C0                   .dbsym l y1 29 i
 06C0                   .dbsym l x1 27 i
 06C0                   .dbsym l y0 25 i
 06C0                   .dbsym l x0 23 i
 06C0                   .dbend
 06C0                   .dbfunc e GUI_LineS _GUI_LineS fV
 06C0           ;              i -> R20
 06C0           ;             y0 -> R22,R23
 06C0           ;             x0 -> R10,R11
 06C0           ;             y1 -> R12,R13
 06C0           ;             x1 -> R14,R15
 06C0           ;          color -> y+17
 06C0           ;             no -> y+15
 06C0           ;         points -> R4,R5
                        .even
 06C0           _GUI_LineS::
 06C0 3A93              st -y,r19
 06C2 2A93              st -y,r18
 06C4 0E940000          xcall push_gset5
 06C8 2801              movw R4,R16
 06CA 2597              sbiw R28,5
 06CC                   .dbline -1
 06CC                   .dbline 343
 06CC           ;       draw_b = x0+wy;
 06CC           ;       GUI_HLine(draw_a, y0, draw_b, color);
 06CC           ;    } 
 06CC           ;   
 06CC           ; }
 06CC           ; #endif
 06CC           ; 
 06CC           ; 
 06CC           ; 
 06CC           ; /****************************************************************************
 06CC           ; * 名称:GUI_LineS()
 06CC           ; * 功能:多个点之间的连续连线。从第一点连到第二点,再连到第三点...
 06CC           ; * 入口参数: points  多个点坐标数据的指针,数据排列为(x0,y0)、(x1,y1)、(x2,y2)...
 06CC           ; *           no      点数目,至少要大于1
 06CC           ; *           color     显示颜色
 06CC           ; * 出口参数:无
 06CC           ; * 说明:操作失败原因是指定地址超出有效范围。
 06CC           ; ****************************************************************************/
 06CC           ; void  GUI_LineS(uint32 const *points, uint8 no, TCOLOR color)
 06CC           ; {  uint32  x0, y0;
 06CC                   .dbline 348
 06CC           ;    uint32  x1, y1;
 06CC           ;    uint8  i;
 06CC           ; 
 06CC           ;    /* 入口参数过滤 */
 06CC           ;    if(0==no) return;
 06CC 0F84              ldd R0,y+15
 06CE 0020              tst R0
 06D0 09F4              brne L96
 06D2                   .dbline 348
 06D2 42C0              xjmp L95
 06D4           L96:
 06D4                   .dbline 349
 06D4           ;    if(1==no)                                          // 单点
 06D4 8F85              ldd R24,y+15
 06D6 8130              cpi R24,1
 06D8 99F4              brne L98
 06DA                   .dbline 350
 06DA           ;    {  x0 = *points++;
 06DA                   .dbline 350
 06DA 1201              movw R2,R4
 06DC C101              movw R24,R2
 06DE 0296              adiw R24,2
 06E0 F101              movw R30,R2
 06E2 A590              lpm R10,Z+
 06E4 B490              lpm R11,Z
 06E6                   .dbline 351
 06E6           ;       y0 = *points;
 06E6 FC01              movw R30,R24
 06E8 6591              lpm R22,Z+
 06EA 7491              lpm R23,Z
 06EC                   .dbline 352
 06EC           ;       GUI_Point(x0, y0, color);
 06EC 0988              ldd R0,y+17
 06EE 0882              std y+0,R0
 06F0 9B01              movw R18,R22
 06F2 8501              movw R16,R10
 06F4 8F93              push R24
 06F6 9F93              push R25
 06F8 0E940000          xcall _GUI_Point
 06FC 5F90              pop R5
 06FE

⌨️ 快捷键说明

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