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

📄 me.lst

📁 LCD彩显驱动 nokia 6100 LCD
💻 LST
📖 第 1 页 / 共 5 页
字号:
    03F3 F051      BEQ	0x03FE
(0231)       	RGBToChar(cbk);
    03F4 9100006D  LDS	R16,_cbk
    03F6 9110006E  LDS	R17,_cbk+1
    03F8 D7C2      RCALL	_RGBToChar
(0232)         glcdDoFillRect(x1, y, x2, y);
    03F9 836A      STD	Y+2,R22
    03FA 82A8      STD	Y+0,R10
    03FB 2F26      MOV	R18,R22
    03FC 2F04      MOV	R16,R20
    03FD DCE8      RCALL	_glcdDoFillRect
(0233)       }
(0234)     }
(0235) }
    03FE 9623      ADIW	R28,3
    03FF D895      RCALL	pop_gset5
    0400 9508      RET
_glcdCircle:
  r                    --> Y+8
  y                    --> R22
  x                    --> R20
    0401 D8AC      RCALL	push_gset2
    0402 2F62      MOV	R22,R18
    0403 2F40      MOV	R20,R16
    0404 9724      SBIW	R28,4
(0236) 
(0237) void glcdCircle(unsigned char x, unsigned char y, unsigned char r) {
(0238) 
(0239)     glcdEllipse(x, y, r, r);
    0405 8428      LDD	R2,Y+8
    0406 2433      CLR	R3
    0407 823B      STD	Y+3,R3
    0408 822A      STD	Y+2,R2
    0409 2433      CLR	R3
    040A 8239      STD	Y+1,R3
    040B 8228      STD	Y+0,R2
    040C 2F26      MOV	R18,R22
    040D 2733      CLR	R19
    040E 2F04      MOV	R16,R20
    040F 2711      CLR	R17
    0410 D003      RCALL	_glcdEllipse
(0240) }
    0411 9624      ADIW	R28,4
    0412 D87E      RCALL	pop_gset2
    0413 9508      RET
_glcdEllipse:
  bb                   --> Y+15
  aa                   --> Y+20
  fill                 --> Y+19
  xe                   --> R14
  xs                   --> Y+17
  ye                   --> R10
  er                   --> Y+11
  ys                   --> R12
  ir                   --> Y+7
  cr                   --> Y+3
  b                    --> Y+38
  a                    --> R10
  y                    --> Y+34
  x                    --> Y+32
    0414 D833      RCALL	push_arg4
    0415 D8A1      RCALL	push_gset5
    0416 9766      SBIW	R28,0x16
    0417 A0AC      LDD	R10,Y+36
(0241) 
(0242) void glcdEllipse(unsigned char x, unsigned char y, unsigned char a, unsigned char b) {
(0243)    int aa;
(0244)    int bb;
(0245)    long er, cr, ir;
(0246)    int ys,ye,xs,xe;
(0247)       unsigned char fill = 1;
    0418 2400      CLR	R0
    0419 9403      INC	R0
    041A 8A0B      STD	Y+19,R0
(0248)    if ((a == 0) | (b == 0)) {return;}
    041B 20AA      TST	R10
    041C F421      BNE	0x0421
    041D E081      LDI	R24,1
    041E E090      LDI	R25,0
    041F 017C      MOVW	R14,R24
    0420 C002      RJMP	0x0423
    0421 24EE      CLR	R14
    0422 24FF      CLR	R15
    0423 A00E      LDD	R0,Y+38
    0424 2000      TST	R0
    0425 F421      BNE	0x042A
    0426 E081      LDI	R24,1
    0427 E090      LDI	R25,0
    0428 016C      MOVW	R12,R24
    0429 C002      RJMP	0x042C
    042A 24CC      CLR	R12
    042B 24DD      CLR	R13
    042C 0117      MOVW	R2,R14
    042D 282C      OR	R2,R12
    042E 283D      OR	R3,R13
    042F 2022      TST	R2
    0430 F411      BNE	0x0433
    0431 2033      TST	R3
    0432 F009      BEQ	0x0434
    0433 C23E      RJMP	0x0672
(0249)    if ((a > 180) | (b > 180)) {
    0434 EB84      LDI	R24,0xB4
    0435 158A      CP	R24,R10
    0436 F420      BCC	0x043B
    0437 E081      LDI	R24,1
    0438 E090      LDI	R25,0
    0439 017C      MOVW	R14,R24
    043A C002      RJMP	0x043D
    043B 24EE      CLR	R14
    043C 24FF      CLR	R15
    043D EB84      LDI	R24,0xB4
    043E A00E      LDD	R0,Y+38
    043F 1580      CP	R24,R0
    0440 F420      BCC	0x0445
    0441 E081      LDI	R24,1
    0442 E090      LDI	R25,0
    0443 016C      MOVW	R12,R24
    0444 C002      RJMP	0x0447
    0445 24CC      CLR	R12
    0446 24DD      CLR	R13
    0447 0117      MOVW	R2,R14
    0448 282C      OR	R2,R12
    0449 283D      OR	R3,R13
    044A 2022      TST	R2
    044B F411      BNE	0x044E
    044C 2033      TST	R3
    044D F079      BEQ	0x045D
(0250)      if (cbk&0x8000) {
    044E 9020006D  LDS	R2,_cbk
    0450 9030006E  LDS	R3,_cbk+1
    0452 FE37      SBRS	R3,7
    0453 C21E      RJMP	0x0672
(0251)      	RGBToChar(cbk);
    0454 0181      MOVW	R16,R2
    0455 D765      RCALL	_RGBToChar
(0252)        glcdFillRect(0, 0, SCREEN_WIDTH-1, SCREEN_HEIGHT-1);
    0456 E883      LDI	R24,0x83
    0457 838A      STD	Y+2,R24
    0458 8388      STD	Y+0,R24
    0459 2722      CLR	R18
    045A 2700      CLR	R16
    045B DD1B      RCALL	_glcdFillRect
(0253)      }
(0254)      return;
    045C C215      RJMP	0x0672
(0255)    }
(0256) 
(0257)     aa = a * a;
    045D 9CAA      MUL	R10,R10
    045E 8A1D      STD	Y+21,R1
    045F 8A0C      STD	Y+20,R0
(0258)    bb = b * b;
    0460 A00E      LDD	R0,Y+38
    0461 2D00      MOV	R16,R0
    0462 9E00      MUL	R0,R16
    0463 8A18      STD	Y+16,R1
    0464 860F      STD	Y+15,R0
(0259) 
(0260) 
(0261)    cr = bb >> 1;
    0465 0110      MOVW	R2,R0
    0466 9435      ASR	R3
    0467 9427      ROR	R2
    0468 2444      CLR	R4
    0469 FC37      SBRC	R3,7
    046A 9440      COM	R4
    046B 2455      CLR	R5
    046C FC47      SBRC	R4,7
    046D 9450      COM	R5
    046E 01FE      MOVW	R30,R28
    046F 8223      STD	Z+3,R2
    0470 8234      STD	Z+4,R3
    0471 8245      STD	Z+5,R4
    0472 8256      STD	Z+6,R5
(0262)    cr = cr * (a + a -1);
    0473 2C2A      MOV	R2,R10
    0474 2433      CLR	R3
    0475 2D82      MOV	R24,R2
    0476 2799      CLR	R25
    0477 0D82      ADD	R24,R2
    0478 1D93      ADC	R25,R3
    0479 9701      SBIW	R24,1
    047A 011C      MOVW	R2,R24
    047B 2444      CLR	R4
    047C FC37      SBRC	R3,7
    047D 9440      COM	R4
    047E 2455      CLR	R5
    047F FC47      SBRC	R4,7
    0480 9450      COM	R5
    0481 01FE      MOVW	R30,R28
    0482 8063      LDD	R6,Z+3
    0483 8074      LDD	R7,Z+4
    0484 8085      LDD	R8,Z+5
    0485 8096      LDD	R9,Z+6
    0486 925A      ST	R5,-Y
    0487 924A      ST	R4,-Y
    0488 923A      ST	R3,-Y
    0489 922A      ST	R2,-Y
    048A 0183      MOVW	R16,R6
    048B 0194      MOVW	R18,R8
    048C D7D8      RCALL	empy32s
    048D 01FE      MOVW	R30,R28
    048E 8303      STD	Z+3,R16
    048F 8314      STD	Z+4,R17
    0490 8325      STD	Z+5,R18
    0491 8336      STD	Z+6,R19
(0263)    ir = aa >> 1;
    0492 882C      LDD	R2,Y+20
    0493 883D      LDD	R3,Y+21
    0494 9435      ASR	R3
    0495 9427      ROR	R2
    0496 2444      CLR	R4
    0497 FC37      SBRC	R3,7
    0498 9440      COM	R4
    0499 2455      CLR	R5
    049A FC47      SBRC	R4,7
    049B 9450      COM	R5
    049C 01FE      MOVW	R30,R28
    049D 8227      STD	Z+7,R2
    049E 8630      STD	Z+8,R3
    049F 8641      STD	Z+9,R4
    04A0 8652      STD	Z+10,R5
(0264)    ir = -ir;
    04A1 01FE      MOVW	R30,R28
    04A2 8107      LDD	R16,Z+7
    04A3 8510      LDD	R17,Z+8
    04A4 8521      LDD	R18,Z+9
    04A5 8532      LDD	R19,Z+10
    04A6 D813      RCALL	neg32
    04A7 01FE      MOVW	R30,R28
    04A8 8307      STD	Z+7,R16
    04A9 8710      STD	Z+8,R17
    04AA 8721      STD	Z+9,R18
    04AB 8732      STD	Z+10,R19
(0265)    er = 0;
    04AC E040      LDI	R20,0
    04AD E050      LDI	R21,0
    04AE E060      LDI	R22,0
    04AF E070      LDI	R23,0
    04B0 01FE      MOVW	R30,R28
    04B1 8743      STD	Z+11,R20
    04B2 8754      STD	Z+12,R21
    04B3 8765      STD	Z+13,R22
    04B4 8776      STD	Z+14,R23
(0266) 
(0267)    xs = x;
    04B5 A028      LDD	R2,Y+32
    04B6 2433      CLR	R3
    04B7 8A3A      STD	Y+18,R3
    04B8 8A29      STD	Y+17,R2
(0268)    xs = xs - a;
    04B9 2C2A      MOV	R2,R10
    04BA 2433      CLR	R3
    04BB 8809      LDD	R0,Y+17
    04BC 881A      LDD	R1,Y+18
    04BD 1802      SUB	R0,R2
    04BE 0813      SBC	R1,R3
    04BF 8A1A      STD	Y+18,R1
    04C0 8A09      STD	Y+17,R0
(0269)    xe = x;
    04C1 A0E8      LDD	R14,Y+32
    04C2 24FF      CLR	R15
(0270)    xe = xe + a;
    04C3 2433      CLR	R3
    04C4 0CE2      ADD	R14,R2
    04C5 1CF3      ADC	R15,R3
(0271)    ys = y;
    04C6 A0CA      LDD	R12,Y+34
    04C7 24DD      CLR	R13
(0272)    ye = y;
    04C8 2CAC      MOV	R10,R12
    04C9 24BB      CLR	R11
    04CA C08E      RJMP	0x0559
(0273)    while (cr >= ir) {
(0274)      glcdDoPixelLine(xs, xe, ys, 1);
    04CB E081      LDI	R24,1
    04CC 838A      STD	Y+2,R24
    04CD 82D9      STD	Y+1,R13
    04CE 82C8      STD	Y+0,R12
    04CF 0197      MOVW	R18,R14
    04D0 8909      LDD	R16,Y+17
    04D1 891A      LDD	R17,Y+18
    04D2 DEA7      RCALL	_glcdDoPixelLine
(0275)      if (ys != ye) {
    04D3 14CA      CP	R12,R10
    04D4 04DB      CPC	R13,R11
    04D5 F041      BEQ	0x04DE
(0276)        glcdDoPixelLine(xs, xe, ye, 1);
    04D6 E081      LDI	R24,1
    04D7 838A      STD	Y+2,R24
    04D8 82B9      STD	Y+1,R11
    04D9 82A8      STD	Y+0,R10
    04DA 0197      MOVW	R18,R14
    04DB 8909      LDD	R16,Y+17
    04DC 891A      LDD	R17,Y+18
    04DD DE9C      RCALL	_glcdDoPixelLine
(0277)      }
(0278)      ys--;
    04DE 01C6      MOVW	R24,R12
    04DF 9701      SBIW	R24,1
    04E0 016C      MOVW	R12,R24
(0279)      ye++;
    04E1 01C5      MOVW	R24,R10
    04E2 9601      ADIW	R24,1
    04E3 015C      MOVW	R10,R24
(0280)      ir += aa;
    04E4 882C      LDD	R2,Y+20
    04E5 883D      LDD	R3,Y+21
    04E6 2444      CLR	R4
    04E7 FC37      SBRC	R3,7
    04E8 9440      COM	R4
    04E9 2455      CLR	R5
    04EA FC47      SBRC	R4,7
    04EB 9450      COM	R5
    04EC 01FE      MOVW	R30,R28
    04ED 8067      LDD	R6,Z+7
    04EE 8470      LDD	R7,Z+8
    04EF 8481      LDD	R8,Z+9
    04F0 8492      LDD	R9,Z+10
    04F1 0C62      ADD	R6,R2
    04F2 1C73      ADC	R7,R3
    04F3 1C84      ADC	R8,R4
    04F4 1C95      ADC	R9,R5
    04F5 01FE      MOVW	R30,R28
    04F6 8267      STD	Z+7,R6
    04F7 8670      STD	Z+8,R7
    04F8 8681      STD	Z+9,R8
    04F9 8692      STD	Z+10,R9
(0281)      er += ir;
    04FA 01FE      MOVW	R30,R28
    04FB 8027      LDD	R2,Z+7
    04FC 8430      LDD	R3,Z+8
    04FD 8441      LDD	R4,Z+9
    04FE 8452      LDD	R5,Z+10
    04FF 01FE      MOVW	R30,R28
    0500 8463      LDD	R6,Z+11
    0501 8474      LDD	R7,Z+12
    0502 8485      LDD	R8,Z+13
    0503 8496      LDD	R9,Z+14
    0504 0C62      ADD	R6,R2
    0505 1C73      ADC	R7,R3
    0506 1C84      ADC	R8,R4
    0507 1C95      ADC	R9,R5
    0508 01FE      MOVW	R30,R28
    0509 8663      STD	Z+11,R6
    050A 8674      STD	Z+12,R7
    050B 8685      STD	Z+13,R8
    050C 8696      STD	Z+14,R9
(0282)      if (2 * er > cr) {
    050D 01FE      MOVW	R30,R28
    050E 8423      LDD	R2,Z+11
    050F 8434      LDD	R3,Z+12
    0510 8445      LDD	R4,Z+13
    0511 8456      LDD	R5,Z+14
    0512 E042      LDI	R20,2
    0513 E050      LDI	R21,0
    0514 E060      LDI	R22,0
    0515 E070      LDI	R23,0
    0516 925A      ST	R5,-Y
    0517 924A      ST	R4,-Y
    0518 923A      ST	R3,-Y
    0519 922A      ST	R2,-Y
    051A 018A      MOVW	R16,R20
    051B 019B      MOVW	R18,R22
    051C D748      RCALL	empy32s
    051D 01FE      MOVW	R30,R28
    051E 8023      LDD	R2,Z+3
    051F 8034      LDD	R3,Z+4
    0520 8045      LDD	R4,Z+5
    0521 8056      LDD	R5,Z+6
    0522 1620      CP	R2,R16
    0523 0631      CPC	R3,R17
    0524 0642      CPC	R4,R18
    0525 0653      CPC	R5,R19
    0526 F00C      BLT	0x0528
    0527 C031      RJMP	0x0559
(0283)        er -= cr;
    0528 01FE      MOVW	R30,R28
    0529 8023      LDD	R2,Z+3
    052A 8034      LDD	R3,Z+4
    052B 8045      LDD	R4,Z+5
    052C 8056      LDD	R5,Z+6
    052D 01FE      MOVW	R30,R28
    052E 8463      LDD	R6,Z+11
    052F 8474      LDD	R7,Z+12
    0530 8485      LDD	R8,Z+13
    0531 8496      LDD	R9,Z+14
    0532 1862      SUB	R6,R2
    0533 0873      SBC	R7,R3
    0534 0884      SBC	R8,R4
    0535 0895      SBC	R9,R5
    0536 01FE      MOVW	R30,R28
    0537 8663      STD	Z+11,R6
    0538 8674      STD	Z+12,R7
    0539 8685      STD	Z+13,R8
    053A 8696      STD	Z+14,R9
(0284)        cr -= bb;
    053B 842F      LDD	R2,Y+15
    053C 8838      LDD	R3,Y+16
    053D 2444      CLR	R4
    053E FC37      SBRC	R3,7
    053F 9440      COM	R4
    0540 2455      CLR	R5
    0541 FC47      SBRC	R4,7
    0542 9450      COM	R5
    0543 01FE      MOVW	R30,R28
    0544 8063      LDD	R6,Z+3
    0545 8074      LDD	R7,Z+4
    0546 8085      LDD	R8,Z+5
    0547 8096      LDD	R9,Z+6
    0548 1862      SUB	R6,R2
    0549 0873      SBC	R7,R3
    054A 0884      SBC	R8,R4
    054B 0895      SBC	R9,R5
    054C 01FE      MOVW	R30,R28
    054D 8263      STD	Z+3,R6
    054E 8274      STD	Z+4,R7
    054F 8285      STD	Z+5,R8
    0550 8296      STD	Z+6,R9

⌨️ 快捷键说明

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