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

📄 graphic.lis

📁 AVR控制12864液晶画圆弧,在AVR单片机的控制下完成圆弧的绘制。
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 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 + -