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

📄 rd_lcd1602b.lis

📁 移动机器人(小车)的物理坐标和逻辑坐标的转换源码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .even
 01A2           _LCDDisplayString::
 01A2 4A93              st -y,R20
 01A4 5A93              st -y,R21
 01A6 A801              movw R20,R16
 01A8                   .dbline -1
 01A8                   .dbline 445
 01A8           ; }
 01A8           ; 
 01A8           ; /***********************************************************
 01A8           ; *   函数说明:LCD字符串显示函数                            *
 01A8           ; *   输入:    要显示的字符串指针                           *
 01A8           ; *   输出:    无                                           *
 01A8           ; *   调用函数:LCDWaitForReady() LCDSendData()              *
 01A8           ; ***********************************************************/
 01A8           ; void LCDDisplayString(UINT8 *String)
 01A8           ; {
 01A8 06C0              rjmp L23
 01AA           L22:
 01AA                   .dbline 447
 01AA           ;     while(*String)
 01AA           ;       {
 01AA                   .dbline 448
 01AA           ;           LCDWaitForReady();
 01AA CFDF              rcall _LCDWaitForReady
 01AC                   .dbline 449
 01AC           ;           LCDSendData(*String);
 01AC FA01              movw R30,R20
 01AE 0081              ldd R16,z+0
 01B0 91DF              rcall _LCDSendData
 01B2                   .dbline 450
 01B2           ;               String++;
 01B2 4F5F              subi R20,255  ; offset = 1
 01B4 5F4F              sbci R21,255
 01B6                   .dbline 451
 01B6           ;       }
 01B6           L23:
 01B6                   .dbline 446
 01B6 FA01              movw R30,R20
 01B8 2080              ldd R2,z+0
 01BA 2220              tst R2
 01BC B1F7              brne L22
 01BE           X4:
 01BE                   .dbline -2
 01BE           L21:
 01BE                   .dbline 0 ; func end
 01BE 5991              ld R21,y+
 01C0 4991              ld R20,y+
 01C2 0895              ret
 01C4                   .dbsym r String 20 pc
 01C4                   .dbend
 01C4                   .dbfunc e LCDDisplayNum _LCDDisplayNum fV
 01C4           ;             a1 -> R20
 01C4           ;       BitCount -> y+5
 01C4           ;            Num -> y+1
                        .even
 01C4           _LCDDisplayNum::
 01C4 00D0              rcall push_arg4
 01C6 4A93              st -y,R20
 01C8                   .dbline -1
 01C8                   .dbline 461
 01C8           ; }
 01C8           ; 
 01C8           ; /***********************************************************
 01C8           ; *   函数说明:数值显示函数(HEX)                            *
 01C8           ; *   输入:    需要显示的数字(无符号长整形)               *
 01C8           ; *   输出:    无                                           *
 01C8           ; *   调用函数:LCDSendData()                                *
 01C8           ; ***********************************************************/
 01C8           ; void LCDDisplayNum(unsigned long Num,UINT8 BitCount)
 01C8           ; {
 01C8                   .dbline 462
 01C8           ;     UINT8 a = 0;
 01C8                   .dbline 463
 01C8           ;       for (a = 8-BitCount ;a<8;a++)
 01C8 48E0              ldi R20,8
 01CA 0D80              ldd R0,y+5
 01CC 4019              sub R20,R0
 01CE 18C0              rjmp L29
 01D0           L26:
 01D0                   .dbline 464
 01D0           ;       {
 01D0                   .dbline 465
 01D0           ;           LCDSendData(CHR[(Num<<(a<<2))>>28]);
 01D0 242E              mov R2,R20
 01D2 3324              clr R3
 01D4 220C              lsl R2
 01D6 331C              rol R3
 01D8 220C              lsl R2
 01DA 331C              rol R3
 01DC 0981              ldd R16,y+1
 01DE 1A81              ldd R17,y+2
 01E0 2B81              ldd R18,y+3
 01E2 3C81              ldd R19,y+4
 01E4 2A92              st -y,R2
 01E6 00D0              rcall lsl32
 01E8 8CE1              ldi R24,28
 01EA 90E0              ldi R25,0
 01EC 8A93              st -y,R24
 01EE 00D0              rcall lsr32
 01F0 F801              movw R30,R16
 01F2 80E0              ldi R24,<_CHR
 01F4 90E0              ldi R25,>_CHR
 01F6 E80F              add R30,R24
 01F8 F91F              adc R31,R25
 01FA 0081              ldd R16,z+0
 01FC 6BDF              rcall _LCDSendData
 01FE                   .dbline 466
 01FE           ;       }
 01FE           L27:
 01FE                   .dbline 463
 01FE 4395              inc R20
 0200           L29:
 0200                   .dbline 463
 0200 4830              cpi R20,8
 0202 30F3              brlo L26
 0204           X5:
 0204                   .dbline -2
 0204           L25:
 0204                   .dbline 0 ; func end
 0204 4991              ld R20,y+
 0206 2496              adiw R28,4
 0208 0895              ret
 020A                   .dbsym r a1 20 c
 020A                   .dbsym l BitCount 5 c
 020A                   .dbsym l Num 1 l
 020A                   .dbend
 020A                   .dbfunc e RunString _RunString fV
 020A           ;           EndX -> R3
 020A           ;         StartX -> R2
 020A           ;              Y -> R1
 020A           ;         String -> R0,R1
                        .even
 020A           _RunString::
 020A                   .dbline -1
 020A                   .dbline 477
 020A           ; }
 020A           ; 
 020A           ; 
 020A           ; /***********************************************************
 020A           ; *   函数说明:滚屏字幕效果                                 *
 020A           ; *   输入:    需要滚屏的字符串 长度 位置                   *
 020A           ; *   输出:    无                                           *
 020A           ; *   调用函数:LOCATE()   PRINT()                           *
 020A           ; ***********************************************************/
 020A           ; void RunString(UINT8 *String,UINT8 Y,UINT8 StartX,UINT8 EndX)
 020A           ; {
 020A                   .dbline -2
 020A           L30:
 020A                   .dbline 0 ; func end
 020A 0895              ret
 020C                   .dbend
 020C                   .dbfunc e StringLength _StringLength fc
 020C           ;             n0 -> R10
 020C           ;         String -> R16,R17
                        .even
 020C           _StringLength::
 020C AA92              st -y,R10
 020E                   .dbline -1
 020E                   .dbline 523
 020E           ;     /*
 020E           ;    static UINT8 StringHead = 0;
 020E           ;       UINT8 SCREEN[17];
 020E           ;       UINT8 a = 0;
 020E           ;       UINT8 Point = StringHead;
 020E           ;       UINT8 StringLong = StringLength(String);
 020E           ;       static UINT16 RunTimeCounter = 0;
 020E           ;       
 020E           ;       for (a = 0;a<EndX - StartX + 1;a++)
 020E           ;       {
 020E           ;            SCREEN[a] = String[Point];
 020E           ;                Point ++;
 020E           ;                if (Point == StringLong)
 020E           ;                {
 020E           ;                    Point = 0;
 020E           ;                }
 020E           ;       }
 020E           ;       
 020E           ;     for (;a < 17;a++)
 020E           ;       {
 020E           ;           SCREEN[a] = 0;
 020E           ;       }
 020E           ;       
 020E           ;       RunTimeCounter ++;
 020E           ;       if (RunTimeCounter > LCD_RUN_STRING_SPEED)
 020E           ;       {
 020E           ;           StringHead ++;
 020E           ;               RunTimeCounter = 0;
 020E           ;               if (StringHead == StringLong)
 020E           ;           {
 020E           ;               StringHead = 0;
 020E           ;           }
 020E           ;       }
 020E           ;       
 020E           ;       LOCATE(StartX,Y)
 020E           ;       PRINT(SCREEN)*/
 020E           ; }
 020E           ; 
 020E           ; /***********************************************************
 020E           ; *   函数说明:字符串长度测试函数                           *
 020E           ; *   输入:    字符串指针                                   *
 020E           ; *   输出:    字符串的长度                                 *
 020E           ; *   调用函数:无                                           *
 020E           ; ***********************************************************/
 020E           ; UINT8 StringLength(UINT8 *String)
 020E           ; {
 020E                   .dbline 524
 020E           ;     UINT8 n = 0;
 020E AA24              clr R10
 0210 03C0              rjmp L33
 0212           L32:
 0212                   .dbline 526
 0212           ;       while (*String)
 0212           ;       {
 0212                   .dbline 527
 0212           ;           n++;
 0212 A394              inc R10
 0214                   .dbline 528
 0214           ;               String ++;
 0214 0F5F              subi R16,255  ; offset = 1
 0216 1F4F              sbci R17,255
 0218                   .dbline 529
 0218           ;       }
 0218           L33:
 0218                   .dbline 525
 0218 F801              movw R30,R16
 021A 2080              ldd R2,z+0
 021C 2220              tst R2
 021E C9F7              brne L32
 0220           X6:
 0220                   .dbline 531
 0220           ;       
 0220           ;       return n;
 0220 0A2D              mov R16,R10
 0222                   .dbline -2
 0222           L31:
 0222                   .dbline 0 ; func end
 0222 A990              ld R10,y+
 0224 0895              ret
 0226                   .dbsym r n0 10 c
 0226                   .dbsym r String 16 pc
 0226                   .dbend
                        .area lit(rom, con, rel)
 0000           L36:
 0000 00                .byte 0
 0001 000000000000000000        .byte 0,0,0,0,0,0,0,0,0
                        .area text(rom, con, rel)
 0226                   .dbfile E:\单片机\ROOBCO~1\全向定位系统\坐标转换模块\相对定位模块应用版\Relative_Locate_Module\RD_LCD1602B.c
 0226                   .dbfunc e PrintD _PrintD fV
 0226           ;      cTempBuff -> y+5
 0226           ;             n3 -> R22
 0226           ; bIfFindFirstNoneZeroNumber1 -> R20
 0226           ;             n1 -> R20
 0226           ;   wTempNumber0 -> y+1
 0226           ;      chCounter -> R22
 0226           ;        nNumber -> y+25
                        .even
 0226           _PrintD::
 0226 00D0              rcall push_arg4
 0228 00D0              rcall push_xgsetF00C
 022A 6397              sbiw R28,19
 022C 6D8D              ldd R22,y+29
 022E                   .dbline -1
 022E                   .dbline 612
 022E           ; }
 022E           ; 
 022E           ; /***********************************************************
 022E           ; *   函数说明:闪烁显示函数                                 *
 022E           ; *   输入:    要显示的字符串、显示的光标、x,y坐标位置      *
 022E           ; *   输出:    无                                           *
 022E           ; *   调用函数:LOCATE()  LCDWaitForReady() LCDSendData()    *
 022E           ; ***********************************************************/
 022E           ; /*
 022E           ; void Flash(UINT8 *String,UINT8 Icon,UINT8 X,UINT8 Y)
 022E           ; {
 022E           ;     UINT8 a = 0;
 022E           ;       UINT8 StringLong = StringLength(String);
 022E           ;       
 022E           ;     if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_TIME_OUT) 
 022E           ;         > (LCD_FLASH_TIME_OUT >> 1))
 022E           ;       {
 022E           ;           LOCATE(X,Y)
 022E           ;               PRINT(String)    
 022E           ;       }
 022E           ;       else
 022E           ;       {
 022E           ;           for (a = X;a < (X+StringLong);a++)
 022E           ;               {
 022E           ;                   LOCATE(a,Y)
 022E           ;                       LCDWaitForReady();
 022E           ;                       LCDSendData(Icon);
 022E           ;               }
 022E           ;       }
 022E           ; }*/
 022E           ; 
 022E           ; /***********************************************************
 022E           ; *   函数说明:字幕GIF函数                                  *
 022E           ; *   输入:    要显示的字符串集合指针,字符串数目,位置     *
 022E           ; *   输出:    无                                           *
 022E           ; *   调用函数:LOCATE()  PRINT()                            *

⌨️ 快捷键说明

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