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

📄 rd_lcd1602b.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 022E           ; ***********************************************************/
 022E           ; /*
 022E           ; void FlashStringGroup(UINT8 String[][17],UINT8 StringCounter,UINT8 X,UINT8 Y)
 022E           ; {
 022E           ;     static UINT8 Pictures = 0;
 022E           ;       static UINT8 DispState = 0;
 022E           ;     if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_STRING_GROUP_TIME_OUT) 
 022E           ;         > (LCD_FLASH_STRING_GROUP_TIME_OUT >> 1))
 022E           ;       {
 022E           ;           if (DispState == 0)
 022E           ;               {
 022E           ;               Pictures ++;
 022E           ;                   if (Pictures == StringCounter)
 022E           ;                   {
 022E           ;                       Pictures = 0; 
 022E           ;                   }
 022E           ;                       DispState = 1;
 022E           ;               }
 022E           ;       }
 022E           ;       else
 022E           ;       {
 022E           ;           if (DispState == 1)
 022E           ;               {
 022E           ;                   Pictures ++;
 022E           ;                       if (Pictures == StringCounter)
 022E           ;                       {
 022E           ;                           Pictures = 0;
 022E           ;                       }
 022E           ;                       DispState = 0;
 022E           ;               }
 022E           ;       }
 022E           ;       
 022E           ;       LOCATE(X,Y);
 022E           ;       PRINT(String[Pictures]);
 022E           ; }
 022E           ; */
 022E           ; 
 022E           ; /***********************************************************
 022E           ; *   函数说明:数值显示函数                                 *
 022E           ; *   输入:    要显示的整数                                 *
 022E           ; *   输出:    无                                           *
 022E           ; *   调用函数:无                                           *
 022E           ; ***********************************************************/
 022E           ; void PrintD(INT32 nNumber,UINT8 chCounter)
 022E           ; {
 022E                   .dbline 613
 022E           ;     uint8 cTempBuff[10] = {0};
 022E 80E0              ldi R24,<L36
 0230 90E0              ldi R25,>L36
 0232 FE01              movw R30,R28
 0234 3596              adiw R30,5
 0236 0AE0              ldi R16,10
 0238 10E0              ldi R17,0
 023A FA93              st -y,R31
 023C EA93              st -y,R30
 023E 9A93              st -y,R25
 0240 8A93              st -y,R24
 0242 00D0              rcall asgncblk
 0244                   .dbline 614
 0244           ;     uint8 n = 0;
 0244                   .dbline 615
 0244           ;     uint32 wTempNumber = ABS(nNumber);
 0244 80E0              ldi R24,0
 0246 90E0              ldi R25,0
 0248 A0E0              ldi R26,0
 024A B0E0              ldi R27,0
 024C 298C              ldd R2,y+25
 024E 3A8C              ldd R3,y+26
 0250 4B8C              ldd R4,y+27
 0252 5C8C              ldd R5,y+28
 0254 2816              cp R2,R24
 0256 3906              cpc R3,R25
 0258 4A06              cpc R4,R26
 025A 5B06              cpc R5,R27
 025C 44F4              brge L37
 025E           X7:
 025E 8101              movw R16,R2
 0260 9201              movw R18,R4
 0262 00D0              rcall neg32
 0264 0F87              std y+15,R16
 0266 188B              std y+16,R17
 0268 298B              std y+17,R18
 026A 3A8B              std y+18,R19
 026C 08C0              rjmp L38
 026E           L37:
 026E 298C              ldd R2,y+25
 0270 3A8C              ldd R3,y+26
 0272 4B8C              ldd R4,y+27
 0274 5C8C              ldd R5,y+28
 0276 2F86              std y+15,R2
 0278 388A              std y+16,R3
 027A 498A              std y+17,R4
 027C 5A8A              std y+18,R5
 027E           L38:
 027E 2F84              ldd R2,y+15
 0280 3888              ldd R3,y+16
 0282 4988              ldd R4,y+17
 0284 5A88              ldd R5,y+18
 0286 2982              std y+1,R2
 0288 3A82              std y+2,R3
 028A 4B82              std y+3,R4
 028C 5C82              std y+4,R5
 028E                   .dbline 616
 028E           ;     BOOL  bIfFindFirstNoneZeroNumber = FALSE;
 028E                   .dbline 618
 028E           ;     
 028E           ;     if (nNumber < 0)
 028E 80E0              ldi R24,0
 0290 90E0              ldi R25,0
 0292 A0E0              ldi R26,0
 0294 B0E0              ldi R27,0
 0296 298C              ldd R2,y+25
 0298 3A8C              ldd R3,y+26
 029A 4B8C              ldd R4,y+27
 029C 5C8C              ldd R5,y+28
 029E 2816              cp R2,R24
 02A0 3906              cpc R3,R25
 02A2 4A06              cpc R4,R26
 02A4 5B06              cpc R5,R27
 02A6 1CF4              brge L39
 02A8           X8:
 02A8                   .dbline 619
 02A8           ;     {
 02A8                   .dbline 620
 02A8           ;         PRINT("-")
 02A8 00E0              ldi R16,<L41
 02AA 10E0              ldi R17,>L41
 02AC 7ADF              rcall _LCDDisplayString
 02AE                   .dbline 621
 02AE           ;     }
 02AE           L39:
 02AE                   .dbline 624
 02AE           ;     
 02AE           ;     
 02AE           ;     for (n = 9;n > 0;n--)
 02AE 69E0              ldi R22,9
 02B0 26C0              rjmp L45
 02B2           L42:
 02B2                   .dbline 625
 02B2           ;     {
 02B2                   .dbline 626
 02B2           ;         cTempBuff[n] = (wTempNumber % 10);
 02B2 8AE0              ldi R24,10
 02B4 90E0              ldi R25,0
 02B6 A0E0              ldi R26,0
 02B8 B0E0              ldi R27,0
 02BA 0981              ldd R16,y+1
 02BC 1A81              ldd R17,y+2
 02BE 2B81              ldd R18,y+3
 02C0 3C81              ldd R19,y+4
 02C2 BA93              st -y,R27
 02C4 AA93              st -y,R26
 02C6 9A93              st -y,R25
 02C8 8A93              st -y,R24
 02CA 00D0              rcall mod32u
 02CC CE01              movw R24,R28
 02CE 0596              adiw R24,5
 02D0 E62F              mov R30,R22
 02D2 FF27              clr R31
 02D4 E80F              add R30,R24
 02D6 F91F              adc R31,R25
 02D8 0083              std z+0,R16
 02DA                   .dbline 627
 02DA           ;         wTempNumber /= 10;
 02DA 8AE0              ldi R24,10
 02DC 90E0              ldi R25,0
 02DE A0E0              ldi R26,0
 02E0 B0E0              ldi R27,0
 02E2 0981              ldd R16,y+1
 02E4 1A81              ldd R17,y+2
 02E6 2B81              ldd R18,y+3
 02E8 3C81              ldd R19,y+4
 02EA BA93              st -y,R27
 02EC AA93              st -y,R26
 02EE 9A93              st -y,R25
 02F0 8A93              st -y,R24
 02F2 00D0              rcall div32u
 02F4 0983              std y+1,R16
 02F6 1A83              std y+2,R17
 02F8 2B83              std y+3,R18
 02FA 3C83              std y+4,R19
 02FC                   .dbline 628
 02FC           ;     }
 02FC           L43:
 02FC                   .dbline 624
 02FC 6A95              dec R22
 02FE           L45:
 02FE                   .dbline 624
 02FE 6623              tst R22
 0300 C1F6              brne L42
 0302           X9:
 0302                   .dbline 630
 0302           ;     
 0302           ;     if (chCounter)
 0302 4423              tst R20
 0304 11F0              breq L46
 0306           X10:
 0306                   .dbline 631
 0306           ;     {
 0306                   .dbline 632
 0306           ;         bIfFindFirstNoneZeroNumber = TRUE;
 0306 61E0              ldi R22,1
 0308                   .dbline 633
 0308           ;     }
 0308 02C0              rjmp L47
 030A           L46:
 030A                   .dbline 635
 030A           ;     else
 030A           ;     {
 030A                   .dbline 636
 030A           ;         chCounter = UBOUND(cTempBuff);
 030A 4AE0              ldi R20,10
 030C                   .dbline 637
 030C           ;         bIfFindFirstNoneZeroNumber = FALSE;
 030C 6627              clr R22
 030E                   .dbline 638
 030E           ;     }
 030E           L47:
 030E                   .dbline 640
 030E           ;     
 030E           ;     chCounter = MIN(chCounter,UBOUND(cTempBuff));
 030E 4A30              cpi R20,10
 0310 18F4              brsh L48
 0312           X11:
 0312 A42E              mov R10,R20
 0314 BB24              clr R11
 0316 03C0              rjmp L49
 0318           L48:
 0318 8AE0              ldi R24,10
 031A 90E0              ldi R25,0
 031C 5C01              movw R10,R24
 031E           L49:
 031E 4A2D              mov R20,R10
 0320                   .dbline 642
 0320           ;     
 0320           ;     for (n = UBOUND(cTempBuff) - chCounter;n < UBOUND(cTempBuff);n++)
 0320 8AE0              ldi R24,10
 0322 A82E              mov R10,R24
 0324 A41A              sub R10,R20
 0326 28C0              rjmp L53
 0328           L50:
 0328                   .dbline 643
 0328           ;     {
 0328                   .dbline 644
 0328           ;         if (cTempBuff[n])
 0328 CE01              movw R24,R28
 032A 0596              adiw R24,5
 032C EA2D              mov R30,R10
 032E FF27              clr R31
 0330 E80F              add R30,R24
 0332 F91F              adc R31,R25
 0334 2080              ldd R2,z+0
 0336 2220              tst R2
 0338 79F0              breq L54
 033A           X12:
 033A                   .dbline 645
 033A           ;         {
 033A                   .dbline 646
 033A           ;             PRINTN(cTempBuff[n],1);
 033A 81E0              ldi R24,1
 033C 8883              std y+0,R24
 033E CE01              movw R24,R28
 0340 0596              adiw R24,5
 0342 EA2D              mov R30,R10
 0344 FF27              clr R31
 0346 E80F              add R30,R24
 0348 F91F              adc R31,R25
 034A 0081              ldd R16,z+0
 034C 1127              clr R17
 034E 2227              clr R18
 0350 3327              clr R19
 0352 38DF              rcall _LCDDisplayNum
 0354                   .dbline 646
 0354                   .dbline 648
 0354           ; 
 0354           ;             bIfFindFirstNoneZeroNumber = TRUE;
 0354 61E0              ldi R22,1
 0356                   .dbline 649
 0356           ;         }
 0356 0FC0              rjmp L55
 0358           L54:
 0358                   .dbline 650
 0358           ;         else if (bIfFindFirstNoneZeroNumber)
 0358 6623              tst R22
 035A 69F0              breq L56
 035C           X13:
 035C                   .dbline 651
 035C           ;         {
 035C                   .dbline 652
 035C           ;             PRINTN(cTempBuff[n],1);
 035C 81E0              ldi R24,1
 035E 8883              std y+0,R24
 0360 CE01              movw R24,R28
 0362 0596              adiw R24,5
 0364 EA2D              mov R30,R10
 0366 FF27              clr R31
 0368 E80F              add R30,R24
 036A F91F              adc R31,R25
 036C 0081              ldd R16,z+0
 036E 1127          

⌨️ 快捷键说明

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