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

📄 gui.lis

📁 ICCAVR编写128*64液晶程序测试已经通过
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00EA           L16:
 00EA                   .dbline 107
 00EA           ;    if(y0>y1)                                          // 若y0>y1,则y0与y1交换
 00EA 6C15              cp R22,R12
 00EC 80F4              brsh L18
 00EE                   .dbline 108
 00EE           ;    {
 00EE                   .dbline 109
 00EE           ;       i = y0;
 00EE 2C2C              mov R2,R12
 00F0 3324              clr R3
 00F2 4424              clr R4
 00F4 5524              clr R5
 00F6 FE01              movw R30,R28
 00F8 2382              std z+3,R2
 00FA 3482              std z+4,R3
 00FC 4582              std z+5,R4
 00FE 5682              std z+6,R5
 0100                   .dbline 110
 0100           ;       y0 = y1;
 0100 C62E              mov R12,R22
 0102                   .dbline 111
 0102           ;       y1 = i;
 0102 FE01              movw R30,R28
 0104 2380              ldd R2,z+3
 0106 3480              ldd R3,z+4
 0108 4580              ldd R4,z+5
 010A 5680              ldd R5,z+6
 010C 622D              mov R22,R2
 010E                   .dbline 112
 010E           ;    }
 010E           L18:
 010E                   .dbline 115
 010E           ;    
 010E           ;    /* 判断是否只是直线 */
 010E           ;    if(y0==y1) 
 010E C616              cp R12,R22
 0110 39F4              brne L20
 0112                   .dbline 116
 0112           ;    {
 0112                   .dbline 117
 0112           ;       GUI_HLine(x0, y0, x1, color);
 0112 4A83              std y+2,R20
 0114 B982              std y+1,R11
 0116 A882              std y+0,R10
 0118 2C2D              mov R18,R12
 011A 8701              movw R16,R14
 011C 71DF              xcall _GUI_HLine
 011E                   .dbline 118
 011E           ;       return;
 011E 12C0              xjmp L15
 0120           L20:
 0120                   .dbline 120
 0120           ;    }
 0120           ;    if(x0==x1) 
 0120 EA14              cp R14,R10
 0122 FB04              cpc R15,R11
 0124 69F4              brne L25
 0126                   .dbline 121
 0126           ;    {
 0126                   .dbline 122
 0126           ;       GUI_RLine(x0, y0, y1, color);
 0126 4A83              std y+2,R20
 0128 6883              std y+0,R22
 012A 2C2D              mov R18,R12
 012C 8701              movw R16,R14
 012E 86DF              xcall _GUI_RLine
 0130                   .dbline 123
 0130           ;       return;
 0130 09C0              xjmp L15
 0132           L24:
 0132                   .dbline 127
 0132                   .dbline 128
 0132 4A83              std y+2,R20
 0134 B982              std y+1,R11
 0136 A882              std y+0,R10
 0138 2C2D              mov R18,R12
 013A 8701              movw R16,R14
 013C 61DF              xcall _GUI_HLine
 013E                   .dbline 129
 013E C394              inc R12
 0140                   .dbline 130
 0140           L25:
 0140                   .dbline 126
 0140           ;    }
 0140           ; 
 0140           ;    while(y0<=y1)                                              
 0140 6C15              cp R22,R12
 0142 B8F7              brsh L24
 0144                   .dbline -2
 0144           L15:
 0144 2796              adiw R28,7
 0146 0E940000          xcall pop_gset5
 014A                   .dbline 0 ; func end
 014A 0895              ret
 014C                   .dbsym l i 3 l
 014C                   .dbsym r color 20 c
 014C                   .dbsym r y1 22 c
 014C                   .dbsym r x1 10 i
 014C                   .dbsym r y0 12 c
 014C                   .dbsym r x0 14 i
 014C                   .dbend
 014C                   .dbfunc e GUI_Square _GUI_Square fV
 014C           ;          color -> y+21
 014C           ;           with -> y+17
 014C           ;             y0 -> y+13
 014C           ;             x0 -> y+9
                        .even
 014C           _GUI_Square::
 014C 0E940000          xcall push_arg4
 0150 0E940000          xcall push_gset2
 0154 2597              sbiw R28,5
 0156                   .dbline -1
 0156                   .dbline 144
 0156           ;    {
 0156           ;       GUI_HLine(x0, y0, x1, color);                           // 当前画水平线
 0156           ;       y0++;                                                   // 下一行
 0156           ;    }
 0156           ; }
 0156           ; 
 0156           ; /****************************************************************************
 0156           ; * 名称:GUI_Square()
 0156           ; * 功能:画正方形。
 0156           ; * 入口参数:x0                正方形左上角的x坐标值
 0156           ; *           y0                正方形左上角的y坐标值
 0156           ; *           with        正方形的边长
 0156           ; *           color     显示颜色
 0156           ; * 出口参数:无
 0156           ; * 说明:操作失败原因是指定地址超出有效范围。
 0156           ; ****************************************************************************/
 0156           ; void  GUI_Square(uint32 x0, uint32 y0, uint32  with, TCOLOR  color)
 0156           ; {
 0156                   .dbline 145
 0156           ;    if(with==0)
 0156 40E0              ldi R20,0
 0158 50E0              ldi R21,0
 015A 60E0              ldi R22,0
 015C 70E0              ldi R23,0
 015E FE01              movw R30,R28
 0160 2188              ldd R2,z+17
 0162 3288              ldd R3,z+18
 0164 4388              ldd R4,z+19
 0166 5488              ldd R5,z+20
 0168 2416              cp R2,R20
 016A 3506              cpc R3,R21
 016C 4606              cpc R4,R22
 016E 5706              cpc R5,R23
 0170 09F4              brne L28
 0172                   .dbline 146
 0172           ;       return;
 0172 55C0              xjmp L27
 0174           L28:
 0174                   .dbline 147
 0174           ;    if( (x0+with) > GUI_LCM_XMAX )
 0174 FE01              movw R30,R28
 0176 2188              ldd R2,z+17
 0178 3288              ldd R3,z+18
 017A 4388              ldd R4,z+19
 017C 5488              ldd R5,z+20
 017E FE01              movw R30,R28
 0180 6184              ldd R6,z+9
 0182 7284              ldd R7,z+10
 0184 8384              ldd R8,z+11
 0186 9484              ldd R9,z+12
 0188 620C              add R6,R2
 018A 731C              adc R7,R3
 018C 841C              adc R8,R4
 018E 951C              adc R9,R5
 0190 40E8              ldi R20,128
 0192 50E0              ldi R21,0
 0194 60E0              ldi R22,0
 0196 70E0              ldi R23,0
 0198 4615              cp R20,R6
 019A 5705              cpc R21,R7
 019C 6805              cpc R22,R8
 019E 7905              cpc R23,R9
 01A0 08F4              brsh L30
 01A2                   .dbline 148
 01A2           ;       return;
 01A2 3DC0              xjmp L27
 01A4           L30:
 01A4                   .dbline 149
 01A4           ;    if( (y0+with) > GUI_LCM_YMAX )
 01A4 FE01              movw R30,R28
 01A6 2188              ldd R2,z+17
 01A8 3288              ldd R3,z+18
 01AA 4388              ldd R4,z+19
 01AC 5488              ldd R5,z+20
 01AE FE01              movw R30,R28
 01B0 6584              ldd R6,z+13
 01B2 7684              ldd R7,z+14
 01B4 8784              ldd R8,z+15
 01B6 9088              ldd R9,z+16
 01B8 620C              add R6,R2
 01BA 731C              adc R7,R3
 01BC 841C              adc R8,R4
 01BE 951C              adc R9,R5
 01C0 40E4              ldi R20,64
 01C2 50E0              ldi R21,0
 01C4 60E0              ldi R22,0
 01C6 70E0              ldi R23,0
 01C8 4615              cp R20,R6
 01CA 5705              cpc R21,R7
 01CC 6805              cpc R22,R8
 01CE 7905              cpc R23,R9
 01D0 08F4              brsh L32
 01D2                   .dbline 150
 01D2           ;       return;
 01D2 25C0              xjmp L27
 01D4           L32:
 01D4                   .dbline 151
 01D4           ;    GUI_Rectangle(x0, y0, x0+with, y0+with, color);
 01D4 0D88              ldd R0,y+21
 01D6 0C82              std y+4,R0
 01D8 FE01              movw R30,R28
 01DA 2188              ldd R2,z+17
 01DC 3288              ldd R3,z+18
 01DE 4388              ldd R4,z+19
 01E0 5488              ldd R5,z+20
 01E2 FE01              movw R30,R28
 01E4 6584              ldd R6,z+13
 01E6 7684              ldd R7,z+14
 01E8 8784              ldd R8,z+15
 01EA 9088              ldd R9,z+16
 01EC 620C              add R6,R2
 01EE 731C              adc R7,R3
 01F0 841C              adc R8,R4
 01F2 951C              adc R9,R5
 01F4 6A82              std y+2,R6
 01F6 FE01              movw R30,R28
 01F8 2188              ldd R2,z+17
 01FA 3288              ldd R3,z+18
 01FC FE01              movw R30,R28
 01FE 4184              ldd R4,z+9
 0200 5284              ldd R5,z+10
 0202 420C              add R4,R2
 0204 531C              adc R5,R3
 0206 5982              std y+1,R5
 0208 4882              std y+0,R4
 020A FE01              movw R30,R28
 020C 2584              ldd R2,z+13
 020E 3684              ldd R3,z+14
 0210 4784              ldd R4,z+15
 0212 5088              ldd R5,z+16
 0214 222D              mov R18,R2
 0216 FE01              movw R30,R28
 0218 0185              ldd R16,z+9
 021A 1285              ldd R17,z+10
 021C 27DF              xcall _GUI_Rectangle
 021E                   .dbline -2
 021E           L27:
 021E 2596              adiw R28,5
 0220 0E940000          xcall pop_gset2
 0224 2496              adiw R28,4
 0226                   .dbline 0 ; func end
 0226 0895              ret
 0228                   .dbsym l color 21 c
 0228                   .dbsym l with 17 l
 0228                   .dbsym l y0 13 l
 0228                   .dbsym l x0 9 l
 0228                   .dbend
 0228                   .dbfunc e GUI_Line _GUI_Line fV
 0228           ;             dy -> y+19
 0228           ;             dx -> y+15
 0228           ;          dy_x2 -> y+11
 0228           ;          dx_x2 -> y+7
 0228           ;         dy_sym -> R10
 0228           ;         dx_sym -> R12
 0228           ;             di -> y+3
 0228           ;          color -> R14
 0228           ;             y1 -> y+45
 0228           ;             x1 -> y+41
 0228           ;             y0 -> y+37
 0228           ;             x0 -> y+33
                        .even
 0228           _GUI_Line::
 0228 0E940000          xcall push_arg4
 022C 0E940000          xcall push_gset5
 0230 6797              sbiw R28,23
 0232 E9A8              ldd R14,y+49
 0234                   .dbline -1
 0234                   .dbline 168
 0234           ; }
 0234           ; 
 0234           ; 
 0234           ; 
 0234           ; /****************************************************************************
 0234           ; * 名称:GUI_Line()
 0234           ; * 功能:画任意两点之间的直线。
 0234           ; * 入口参数:x0                直线起点的x坐标值
 0234           ; *           y0                直线起点的y坐标值
 0234           ; *           x1          直线终点的x坐标值
 0234           ; *           y1          直线终点的y坐标值
 0234           ; *           color     显示颜色(对于黑白色LCM,为0时灭,为1时显示)
 0234           ; * 出口参数:无
 0234           ; * 说明:操作失败原因是指定地址超出有效范围。
 0234           ; ****************************************************************************/
 0234           ; void  GUI_Line(uint32 x0, uint32 y0, uint32 x1, uint32 y1, TCOLOR color)
 0234           ; {
 0234                   .dbline 177
 0234           ;    int32   dx;                                                // 直线x轴差值变量
 0234           ;    int32   dy;                                        // 直线y轴差值变量
 0234           ;    int8    dx_sym;                                    // x轴增长方向,为-1时减值方向,为1时增值方向
 0234           ;    int8    dy_sym;                                    // y轴增长方向,为-1时减值方向,为1时增值方向
 0234           ;    int32   dx_x2;                                     // dx*2值变量,用于加快运算速度
 0234           ;    int32   dy_x2;                                     // dy*2值变量,用于加快运算速度
 0234           ;    int32   di;                                                // 决策变量
 0234           ; 
 0234           ;    dx = x1-x0;                                                // 求取两点之间的差值
 0234 FE01              movw R30,R28
 0236 21A0              ldd R2,z+33
 0238 32A0              ldd R3,z+34
 023A 43A0              ldd R4,z+35
 023C 54A0              ldd R5,z+36
 023E FE01              movw R30,R28
 0240 61A4              ldd R6,z+41
 0242 72A4              ldd R7,z+42
 0244 83A4              ldd R8,z+43
 0246 94A4              ldd R9,z+44
 0248 6218              sub R6,R2
 024A 7308              sbc R7,R3
 024C 8408              sbc R8,R4
 024E 9508              sbc R9,R5

⌨️ 快捷键说明

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