📄 graphic.lis
字号:
023A 4989 ldd R20,y+17
023C .dbline 156
023C ; for(i=0; i<=length; i++)
023C EE24 clr R14
023E 4FC0 xjmp L58
0240 L55:
0240 .dbline 157
0240 ; { y = ((m*i)/200)+y1;
0240 .dbline 157
0240 2E2D mov R18,R14
0242 3327 clr R19
0244 8B01 movw R16,R22
0246 0E940000 xcall empy16s
024A 28EC ldi R18,200
024C 30E0 ldi R19,0
024E 0E940000 xcall div16s
0252 A02E mov R10,R16
0254 2988 ldd R2,y+17
0256 3324 clr R3
0258 A20C add R10,R2
025A B31C adc R11,R3
025C .dbline 158
025C ; if((m*i)%200 >= 100)
025C 2E2D mov R18,R14
025E 3327 clr R19
0260 8B01 movw R16,R22
0262 0E940000 xcall empy16s
0266 28EC ldi R18,200
0268 30E0 ldi R19,0
026A 0E940000 xcall mod16s
026E 0436 cpi R16,100
0270 E0E0 ldi R30,0
0272 1E07 cpc R17,R30
0274 14F0 brlt L59
0276 .dbline 159
0276 ; y++;
0276 A394 inc R10
0278 0FC0 xjmp L60
027A L59:
027A .dbline 160
027A ; else if((m*i)%200 <= -100)
027A 2E2D mov R18,R14
027C 3327 clr R19
027E 8B01 movw R16,R22
0280 0E940000 xcall empy16s
0284 28EC ldi R18,200
0286 30E0 ldi R19,0
0288 0E940000 xcall mod16s
028C 8CE9 ldi R24,-100
028E 9FEF ldi R25,-1
0290 8017 cp R24,R16
0292 9107 cpc R25,R17
0294 0CF0 brlt L61
0296 .dbline 161
0296 ; y--;
0296 AA94 dec R10
0298 L61:
0298 L60:
0298 .dbline 163
0298 ;
0298 ; lcd_line(x1+i, yAlt, x1+i, y, mode ); /* wuff wuff recurs. */
0298 0F88 ldd R0,y+23
029A 0C82 std y+4,R0
029C AA82 std y+2,R10
029E 282C mov R2,R8
02A0 2E0C add R2,R14
02A2 2882 std y+0,R2
02A4 242F mov R18,R20
02A6 022D mov R16,R2
02A8 8F92 push R8
02AA 4BDF xcall _lcd_line
02AC 8F90 pop R8
02AE .dbline 164
02AE ; if(length<=(y2-y1) && y1 < y2)
02AE 2D88 ldd R2,y+21
02B0 0988 ldd R0,y+17
02B2 2018 sub R2,R0
02B4 2C14 cp R2,R12
02B6 30F0 brlo L63
02B8 0D89 ldd R16,y+21
02BA 0016 cp R0,R16
02BC 18F4 brsh L63
02BE .dbline 165
02BE ; yAlt = y+1;
02BE 4A2D mov R20,R10
02C0 4F5F subi R20,255 ; addi 1
02C2 0CC0 xjmp L64
02C4 L63:
02C4 .dbline 166
02C4 ; else if(length<=(y1-y2) && y1 > y2)
02C4 2988 ldd R2,y+17
02C6 0D88 ldd R0,y+21
02C8 2018 sub R2,R0
02CA 2C14 cp R2,R12
02CC 30F0 brlo L65
02CE 0989 ldd R16,y+17
02D0 0016 cp R0,R16
02D2 18F4 brsh L65
02D4 .dbline 167
02D4 ; yAlt = y-1;
02D4 4A2D mov R20,R10
02D6 4150 subi R20,1
02D8 01C0 xjmp L66
02DA L65:
02DA .dbline 169
02DA ; else
02DA ; yAlt = y;
02DA 4A2D mov R20,R10
02DC L66:
02DC L64:
02DC .dbline 170
02DC L56:
02DC .dbline 156
02DC E394 inc R14
02DE L58:
02DE .dbline 156
02DE CE14 cp R12,R14
02E0 08F0 brlo X3
02E2 AECF xjmp L55
02E4 X3:
02E4 .dbline 171
02E4 ; }
02E4 ; }
02E4 6EC0 xjmp L53
02E6 L52:
02E6 .dbline 173
02E6 ; else
02E6 ; { // angle smaller 45?
02E6 .dbline 175
02E6 ; // y1 must be smaller than y2
02E6 ; if(y1 > y2)
02E6 0D88 ldd R0,y+21
02E8 0989 ldd R16,y+17
02EA 0016 cp R0,R16
02EC 50F4 brsh L67
02EE .dbline 176
02EE ; { xTmp = x1;
02EE .dbline 176
02EE 8D82 std y+5,R8
02F0 .dbline 177
02F0 ; yTmp = y1;
02F0 0988 ldd R0,y+17
02F2 0E82 std y+6,R0
02F4 .dbline 178
02F4 ; x1 = x2;
02F4 8B88 ldd R8,y+19
02F6 .dbline 179
02F6 ; y1 = y2;
02F6 0D88 ldd R0,y+21
02F8 098A std y+17,R0
02FA .dbline 180
02FA ; x2 = xTmp;
02FA 0D80 ldd R0,y+5
02FC 0B8A std y+19,R0
02FE .dbline 181
02FE ; y2 = yTmp;
02FE 0E80 ldd R0,y+6
0300 0D8A std y+21,R0
0302 .dbline 182
0302 ; }
0302 L67:
0302 .dbline 183
0302 ; length = y2-y1;
0302 CD88 ldd R12,y+21
0304 0988 ldd R0,y+17
0306 C018 sub R12,R0
0308 .dbline 184
0308 ; m = ((x2-x1)*200)/length;
0308 2B88 ldd R2,y+19
030A 2818 sub R2,R8
030C 88EC ldi R24,200
030E 829D mul R24,R2
0310 8001 movw R16,R0
0312 2C2D mov R18,R12
0314 3327 clr R19
0316 0E940000 xcall div16s
031A B801 movw R22,R16
031C .dbline 185
031C ; yAlt = x1;
031C 482D mov R20,R8
031E .dbline 186
031E ; for(i=0; i<=length; i++)
031E EE24 clr R14
0320 4DC0 xjmp L72
0322 L69:
0322 .dbline 187
0322 ; { y = ((m*i)/200)+x1;
0322 .dbline 187
0322 2E2D mov R18,R14
0324 3327 clr R19
0326 8B01 movw R16,R22
0328 0E940000 xcall empy16s
032C 28EC ldi R18,200
032E 30E0 ldi R19,0
0330 0E940000 xcall div16s
0334 A02E mov R10,R16
0336 282C mov R2,R8
0338 3324 clr R3
033A A20C add R10,R2
033C B31C adc R11,R3
033E .dbline 189
033E ;
033E ; if((m*i)%200 >= 100)
033E 2E2D mov R18,R14
0340 3327 clr R19
0342 8B01 movw R16,R22
0344 0E940000 xcall empy16s
0348 28EC ldi R18,200
034A 30E0 ldi R19,0
034C 0E940000 xcall mod16s
0350 0436 cpi R16,100
0352 E0E0 ldi R30,0
0354 1E07 cpc R17,R30
0356 14F0 brlt L73
0358 .dbline 190
0358 ; y++;
0358 A394 inc R10
035A 0FC0 xjmp L74
035C L73:
035C .dbline 191
035C ; else if((m*i)%200 <= -100)
035C 2E2D mov R18,R14
035E 3327 clr R19
0360 8B01 movw R16,R22
0362 0E940000 xcall empy16s
0366 28EC ldi R18,200
0368 30E0 ldi R19,0
036A 0E940000 xcall mod16s
036E 8CE9 ldi R24,-100
0370 9FEF ldi R25,-1
0372 8017 cp R24,R16
0374 9107 cpc R25,R17
0376 0CF0 brlt L75
0378 .dbline 192
0378 ; y--;
0378 AA94 dec R10
037A L75:
037A L74:
037A .dbline 194
037A ;
037A ; lcd_line(yAlt, y1+i, y, y1+i, mode); /* wuff */
037A 0F88 ldd R0,y+23
037C 0C82 std y+4,R0
037E 2988 ldd R2,y+17
0380 2E0C add R2,R14
0382 2A82 std y+2,R2
0384 A882 std y+0,R10
0386 222D mov R18,R2
0388 042F mov R16,R20
038A 8F92 push R8
038C DADE xcall _lcd_line
038E 8F90 pop R8
0390 .dbline 195
0390 ; if(length<=(x2-x1) && x1 < x2)
0390 2B88 ldd R2,y+19
0392 2818 sub R2,R8
0394 2C14 cp R2,R12
0396 30F0 brlo L77
0398 0B88 ldd R0,y+19
039A 8014 cp R8,R0
039C 18F4 brsh L77
039E .dbline 196
039E ; yAlt = y+1;
039E 4A2D mov R20,R10
03A0 4F5F subi R20,255 ; addi 1
03A2 0BC0 xjmp L78
03A4 L77:
03A4 .dbline 197
03A4 ; else if(length<=(x1-x2) && x1 > x2)
03A4 282C mov R2,R8
03A6 0B88 ldd R0,y+19
03A8 2018 sub R2,R0
03AA 2C14 cp R2,R12
03AC 28F0 brlo L79
03AE 0814 cp R0,R8
03B0 18F4 brsh L79
03B2 .dbline 198
03B2 ; yAlt = y-1;
03B2 4A2D mov R20,R10
03B4 4150 subi R20,1
03B6 01C0 xjmp L80
03B8 L79:
03B8 .dbline 200
03B8 ; else
03B8 ; yAlt = y;
03B8 4A2D mov R20,R10
03BA L80:
03BA L78:
03BA .dbline 201
03BA L70:
03BA .dbline 186
03BA E394 inc R14
03BC L72:
03BC .dbline 186
03BC CE14 cp R12,R14
03BE 08F0 brlo X4
03C0 B0CF xjmp L69
03C2 X4:
03C2 .dbline 202
03C2 ; }
03C2 ; }
03C2 L53:
03C2 .dbline 203
03C2 ; }
03C2 L43:
03C2 L35:
03C2 .dbline -2
03C2 L33:
03C2 2796 adiw R28,7
03C4 0E940000 xcall pop_gset5
03C8 2296 adiw R28,2
03CA .dbline 0 ; func end
03CA 0895 ret
03CC .dbsym l yTmp 6 c
03CC .dbsym l xTmp 5 c
03CC .dbsym r yAlt 20 c
03CC .dbsym r m 22 I
03CC .dbsym r y 10 c
03CC .dbsym r length 12 c
03CC .dbsym r i 14 c
03CC .dbsym l mode 23 c
03CC .dbsym l y2 21 c
03CC .dbsym l x2 19 c
03CC .dbsym l y1 17 c
03CC .dbsym r x1 8 c
03CC .dbend
03CC .dbfunc e lcd_circle _lcd_circle fV
03CC ; tSwitch -> R20,R21
03CC ; d -> R22
03CC ; y -> R10,R11
03CC ; x -> R12,R13
03CC ; mode -> R14
03CC ; radius -> y+15
03CC ; yCenter -> y+13
03CC ; xCenter -> y+11
.even
03CC _lcd_circle::
03CC 0E940000 xcall push_arg4
03D0 0E940000 xcall push_gset5
03D4 2197 sbiw R28,1
03D6 E988 ldd R14,y+17
03D8 .dbline -1
03D8 .dbline 209
03D8 ; }
03D8 ;
03D8 ;
03D8 ; void lcd_circle( uint8_t xCenter, uint8_t yCenter,
03D8 ; uint8_t radius, uint8_t mode)
03D8 ; { int tSwitch, y, x = 0;
03D8 .dbline 209
03D8 CC24 clr R12
03DA DD24 clr R13
03DC .dbline 212
03DC ; uint8_t d;
03DC ;
03DC ; d = yCenter - xCenter;
03DC 6D85 ldd R22,y+13
03DE 0B84 ldd R0,y+11
03E0 6019 sub R22,R0
03E2 .dbline 213
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -