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

📄 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 623
 02AE           ;         //s_cDISPBuffer[g_cStartBIT] = MID_LINE;
 02AE           ;         //g_cStartBIT--;
 02AE           ;     }
 02AE           L39:
 02AE                   .dbline 626
 02AE           ;     
 02AE           ;     
 02AE           ;     for (n = 9;n > 0;n--)
 02AE 49E0              ldi R20,9
 02B0 26C0              rjmp L45
 02B2           L42:
 02B2                   .dbline 627
 02B2           ;     {
 02B2                   .dbline 628
 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 E42F              mov R30,R20
 02D2 FF27              clr R31
 02D4 E80F              add R30,R24
 02D6 F91F              adc R31,R25
 02D8 0083              std z+0,R16
 02DA                   .dbline 629
 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 630
 02FC           ;     }
 02FC           L43:
 02FC                   .dbline 626
 02FC 4A95              dec R20
 02FE           L45:
 02FE                   .dbline 626
 02FE 4423              tst R20
 0300 C1F6              brne L42
 0302           X9:
 0302                   .dbline 632
 0302           ;     
 0302           ;     if (chCounter)
 0302 6623              tst R22
 0304 11F0              breq L46
 0306           X10:
 0306                   .dbline 633
 0306           ;     {
 0306                   .dbline 634
 0306           ;         bIfFindFirstNoneZeroNumber = TRUE;
 0306 41E0              ldi R20,1
 0308                   .dbline 635
 0308           ;     }
 0308 02C0              rjmp L47
 030A           L46:
 030A                   .dbline 637
 030A           ;     else
 030A           ;     {
 030A                   .dbline 638
 030A           ;         chCounter = UBOUND(cTempBuff);
 030A 6AE0              ldi R22,10
 030C                   .dbline 639
 030C           ;         bIfFindFirstNoneZeroNumber = FALSE;
 030C 4427              clr R20
 030E                   .dbline 640
 030E           ;     }
 030E           L47:
 030E                   .dbline 642
 030E           ;     
 030E           ;     chCounter = MIN(chCounter,UBOUND(cTempBuff));
 030E 6A30              cpi R22,10
 0310 18F4              brsh L48
 0312           X11:
 0312 A62E              mov R10,R22
 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                   .dbline 644
 031E           ;     
 031E           ;     for (n = UBOUND(cTempBuff) - chCounter;n < UBOUND(cTempBuff);n++)
 031E 8AE0              ldi R24,10
 0320 8A19              sub R24,R10
 0322 682F              mov R22,R24
 0324 28C0              rjmp L53
 0326           L50:
 0326                   .dbline 645
 0326           ;     {
 0326                   .dbline 646
 0326           ;         if (cTempBuff[n])
 0326 CE01              movw R24,R28
 0328 0596              adiw R24,5
 032A E62F              mov R30,R22
 032C FF27              clr R31
 032E E80F              add R30,R24
 0330 F91F              adc R31,R25
 0332 2080              ldd R2,z+0
 0334 2220              tst R2
 0336 79F0              breq L54
 0338           X12:
 0338                   .dbline 647
 0338           ;         {
 0338                   .dbline 648
 0338           ;             PRINTN(cTempBuff[n],1);
 0338 81E0              ldi R24,1
 033A 8883              std y+0,R24
 033C CE01              movw R24,R28
 033E 0596              adiw R24,5
 0340 E62F              mov R30,R22
 0342 FF27              clr R31
 0344 E80F              add R30,R24
 0346 F91F              adc R31,R25
 0348 0081              ldd R16,z+0
 034A 1127              clr R17
 034C 2227              clr R18
 034E 3327              clr R19
 0350 39DF              rcall _LCDDisplayNum
 0352                   .dbline 648
 0352                   .dbline 651
 0352           ;             //s_cDISPBuffer[g_cStartBIT] = cTempBuff[n];
 0352           ;             //g_cStartBIT--;
 0352           ;             bIfFindFirstNoneZeroNumber = TRUE;
 0352 41E0              ldi R20,1
 0354                   .dbline 652
 0354           ;         }
 0354 0FC0              rjmp L55
 0356           L54:
 0356                   .dbline 653
 0356           ;         else if (bIfFindFirstNoneZeroNumber)
 0356 4423              tst R20
 0358 69F0              breq L56
 035A           X13:
 035A                   .dbline 654
 035A           ;         {
 035A                   .dbline 655
 035A           ;             PRINTN(cTempBuff[n],1);
 035A 81E0              ldi R24,1
 035C 8883              std y+0,R24
 035E CE01              movw R24,R28
 0360 0596              adiw R24,5
 0362 E62F            

⌨️ 快捷键说明

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