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

📄 rd_lcd1602b.lis

📁 LCD1602键盘显示模块实例
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0210                   .dbline -2
 0210           L27:
 0210                   .dbline 0 ; func end
 0210 6196              adiw R28,17
 0212 0E940000          xcall pop_xgsetF0FC
 0216 2296              adiw R28,2
 0218 0895              ret
 021A                   .dbsym l SCREEN 0 A[17:17]c
 021A                   .dbsym r a1 12 c
 021A                   .dbsym r StringLong0 10 c
 021A                   .dbsym r Point0 14 c
 021A                   .dbsym l EndX 31 c
 021A                   .dbsym r StartX 20 c
 021A                   .dbsym l Y 27 c
 021A                   .dbsym r String 22 pc
 021A                   .dbend
 021A                   .dbfunc e StringLength _StringLength fc
 021A           ;             n0 -> R10
 021A           ;         String -> R16,R17
                        .even
 021A           _StringLength::
 021A AA92              st -y,R10
 021C                   .dbline -1
 021C                   .dbline 500
 021C           ; }
 021C           ; 
 021C           ; /***********************************************************
 021C           ; *   函数说明:字符串长度测试函数                           *
 021C           ; *   输入:    字符串指针                                   *
 021C           ; *   输出:    字符串的长度                                 *
 021C           ; *   调用函数:无                                           *
 021C           ; ***********************************************************/
 021C           ; char StringLength(char *String)
 021C           ; {
 021C                   .dbline 501
 021C           ;     char n = 0;
 021C AA24              clr R10
 021E 03C0              xjmp L46
 0220           L45:
 0220                   .dbline 503
 0220           ;       while (*String)
 0220           ;       {
 0220                   .dbline 504
 0220           ;           n++;
 0220 A394              inc R10
 0222                   .dbline 505
 0222           ;               String ++;
 0222 0F5F              subi R16,255  ; offset = 1
 0224 1F4F              sbci R17,255
 0226                   .dbline 506
 0226           ;       }
 0226           L46:
 0226                   .dbline 502
 0226 F801              movw R30,R16
 0228 2080              ldd R2,z+0
 022A 2220              tst R2
 022C C9F7              brne L45
 022E           X10:
 022E                   .dbline 508
 022E           ;       
 022E           ;       return n;
 022E 0A2D              mov R16,R10
 0230                   .dbline -2
 0230           L44:
 0230                   .dbline 0 ; func end
 0230 A990              ld R10,y+
 0232 0895              ret
 0234                   .dbsym r n0 10 c
 0234                   .dbsym r String 16 pc
 0234                   .dbend
 0234                   .dbfunc e Flash _Flash fV
 0234           ;             a1 -> R20
 0234           ;    StringLong0 -> R12
 0234           ;              Y -> R10
 0234           ;              X -> R22
 0234           ;           Icon -> R14
 0234           ;         String -> R20,R21
                        .even
 0234           _Flash::
 0234 0E940000          xcall push_xgsetF0FC
 0238 E22E              mov R14,R18
 023A A801              movw R20,R16
 023C 6A85              ldd R22,y+10
 023E AC84              ldd R10,y+12
 0240                   .dbline -1
 0240                   .dbline 518
 0240           ; }
 0240           ; 
 0240           ; /***********************************************************
 0240           ; *   函数说明:闪烁显示函数                                 *
 0240           ; *   输入:    要显示的字符串、显示的光标、x,y坐标位置      *
 0240           ; *   输出:    无                                           *
 0240           ; *   调用函数:LOCATE()  LCDWaitForReady() LCDSendData()    *
 0240           ; ***********************************************************/
 0240           ; void Flash(char *String,char Icon,char X,char Y)
 0240           ; {
 0240                   .dbline 519
 0240           ;     char a = 0;
 0240                   .dbline 520
 0240           ;       char StringLong = StringLength(String);
 0240 8A01              movw R16,R20
 0242 EBDF              xcall _StringLength
 0244 C02E              mov R12,R16
 0246                   .dbline 522
 0246           ;       
 0246           ;     if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_TIME_OUT) 
 0246 8FEF              ldi R24,511
 0248 91E0              ldi R25,1
 024A E0910000          lds R30,_g_wSystemTimer
 024E F0910100          lds R31,_g_wSystemTimer+1
 0252 F370              andi R31,3
 0254 8E17              cp R24,R30
 0256 9F07              cpc R25,R31
 0258 40F4              brsh L49
 025A           X11:
 025A                   .dbline 524
 025A           ;         > (LCD_FLASH_TIME_OUT >> 1))
 025A           ;       {
 025A                   .dbline 525
 025A           ;           LOCATE(X,Y)
 025A 2A2D              mov R18,R10
 025C 2150              subi R18,1
 025E 062F              mov R16,R22
 0260 0150              subi R16,1
 0262 38DF              xcall _LCDSetXY
 0264                   .dbline 526
 0264           ;               PRINT(String)    
 0264 8A01              movw R16,R20
 0266 46DF              xcall _LCDDisplayString
 0268                   .dbline 527
 0268           ;       }
 0268 0FC0              xjmp L50
 026A           L49:
 026A                   .dbline 529
 026A           ;       else
 026A           ;       {
 026A                   .dbline 530
 026A           ;           for (a = X;a < (X+StringLong);a++)
 026A 462F              mov R20,R22
 026C 09C0              xjmp L54
 026E           L51:
 026E                   .dbline 531
 026E           ;               {
 026E                   .dbline 532
 026E           ;                   LOCATE(a,Y)
 026E 2A2D              mov R18,R10
 0270 2150              subi R18,1
 0272 042F              mov R16,R20
 0274 0150              subi R16,1
 0276 2EDF              xcall _LCDSetXY
 0278                   .dbline 533
 0278           ;                       LCDWaitForReady();
 0278 29DF              xcall _LCDWaitForReady
 027A                   .dbline 534
 027A           ;                       LCDSendData(Icon);
 027A 0E2D              mov R16,R14
 027C 0DDF              xcall _LCDSendData
 027E                   .dbline 535
 027E           ;               }
 027E           L52:
 027E                   .dbline 530
 027E 4395              inc R20
 0280           L54:
 0280                   .dbline 530
 0280 262E              mov R2,R22
 0282 2C0C              add R2,R12
 0284 4215              cp R20,R2
 0286 98F3              brlo L51
 0288           X12:
 0288                   .dbline 536
 0288           ;       }
 0288           L50:
 0288                   .dbline -2
 0288           L48:
 0288                   .dbline 0 ; func end
 0288 0C940000          xjmp pop_xgsetF0FC
 028C                   .dbsym r a1 20 c
 028C                   .dbsym r StringLong0 12 c
 028C                   .dbsym r Y 10 c
 028C                   .dbsym r X 22 c
 028C                   .dbsym r Icon 14 c
 028C                   .dbsym r String 20 pc
 028C                   .dbend
                        .area data(ram, con, rel)
 0004                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_LCD1602B.c
 0004           L56:
 0004                   .blkb 1
                        .area idata
 0004 00                .byte 0
                        .area data(ram, con, rel)
 0005                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_LCD1602B.c
 0005           L57:
 0005                   .blkb 1
                        .area idata
 0005 00                .byte 0
                        .area data(ram, con, rel)
 0006                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_LCD1602B.c
                        .area text(rom, con, rel)
 028C                   .dbfile O:\2007全国电子设计大赛\键盘显示模块\RD_LCD1602B.c
 028C                   .dbfunc e FlashStringGroup _FlashStringGroup fV
 028C                   .dbsym s DispState L57 c
 028C                   .dbsym s Pictures L56 c
 028C           ;              Y -> y+6
 028C           ;              X -> y+4
 028C           ;  StringCounter -> R12
 028C           ;         String -> R10,R11
                        .even
 028C           _FlashStringGroup::
 028C 0E940000          xcall push_xgset003C
 0290 C22E              mov R12,R18
 0292 5801              movw R10,R16
 0294                   .dbline -1
 0294                   .dbline 546
 0294           ; }
 0294           ; 
 0294           ; /***********************************************************
 0294           ; *   函数说明:字幕GIF函数                                  *
 0294           ; *   输入:    要显示的字符串集合指针,字符串数目,位置     *
 0294           ; *   输出:    无                                           *
 0294           ; *   调用函数:LOCATE()  PRINT()                            *
 0294           ; ***********************************************************/
 0294           ; void FlashStringGroup(char String[][17],char StringCounter,char X,char Y)
 0294           ; {
 0294                   .dbline 549
 0294           ;     static char Pictures = 0;
 0294           ;       static char DispState = 0;
 0294           ;     if ((SYS_TIMER_MS_ADD_UNTILL_OVF & LCD_FLASH_STRING_GROUP_TIME_OUT) 
 0294 8FEF              ldi R24,511
 0296 91E0              ldi R25,1
 0298 E0910000          lds R30,_g_wSystemTimer
 029C F0910100          lds R31,_g_wSystemTimer+1
 02A0 F370              andi R31,3
 02A2 8E17              cp R24,R30
 02A4 9F07              cpc R25,R31
 02A6 90F4              brsh L58
 02A8           X13:
 02A8                   .dbline 551
 02A8           ;         > (LCD_FLASH_STRING_GROUP_TIME_OUT >> 1))
 02A8           ;       {
 02A8                   .dbline 552
 02A8           ;           if (DispState == 0)
 02A8 20900500          lds R2,L57
 02AC 2220              tst R2
 02AE F9F4              brne L59
 02B0           X14:
 02B0                   .dbline 553
 02B0           ;               {
 02B0                   .dbline 554
 02B0           ;               Pictures ++;
 02B0 80910400          lds R24,L56
 02B4 8F5F              subi R24,255    ; addi 1
 02B6 80930400          sts L56,R24
 02BA                   .dbline 555
 02BA           ;                   if (Pictures == StringCounter)
 02BA 8C15              cp R24,R12
 02BC 19F4              brne L62
 02BE           X15:
 02BE                   .dbline 556
 02BE           ;                   {
 02BE                   .dbline 557
 02BE           ;                       Pictures = 0; 
 02BE 2224              clr R2
 02C0 20920400          sts L56,R2
 02C4                   .dbline 558
 02C4           ;                   }
 02C4           L62:
 02C4                   .dbline 559
 02C4           ;                       DispState = 1;
 02C4 81E0              ldi R24,1
 02C6 80930500          sts L57,R24
 02CA                   .dbline 560
 02CA           ;               }
 02CA                   .dbline 561
 02CA           ;       }
 02CA 11C0              xjmp L59
 02CC           L58:
 02CC                   .dbline 563
 02CC           ;       else
 02CC           ;       {
 02CC                   .dbline 564
 02CC           ;           if (DispState == 1)
 02CC 80910500          lds R24,L57
 02D0 8130              cpi R24,1
 02D2 69F4              brne L64
 02D4           X16:
 02D4                   .dbline 565
 02D4           ;               {
 02D4                   .dbline 566
 02D4           ;                   Pictures ++;
 02D4 80910400          lds R24,L56
 02D8 8F5F              subi R24,255    ; addi 1
 02DA 80930400          sts L56,R24
 02DE                   .dbline 567
 02DE           ;                       if (Pictures == StringCounter)
 02DE 8C15              cp R24,R12
 02E0 19F4              brne L66
 02E2           X17:
 02E2                   .dbline 568
 02E2           ;                       {
 02E2                   .dbline 569
 02E2           ;                           Pictures = 0;
 02E2 2224              clr R2
 02E4 20920400          sts L56,R2
 02E8                   .dbline 570
 02E8           ;                       }
 02E8           L66:
 02E8                   .dbline 571
 02E8           ;                       DispState = 0;
 02E8 2224              clr R2
 02EA 20920500          sts L57,R2
 02EE                   .dbline 572
 02EE           ;               }
 02EE           L64:
 02EE                   .dbline 573
 02EE           ;       }
 02EE           L59:
 02EE                   .dbline 575
 02EE           ;       
 02EE           ;       LOCATE(X,Y);
 02EE 2E81              ldd R18,y+6
 02F0 2150              subi R18,1
 02F2 0C81              ldd R16,y+4
 02F4 0150              subi R16,1
 02F6 EEDE              xcall _LCDSetXY
 02F8                   .dbline 575
 02F8                   .dbline 576
 02F8           ;       PRINT(String[Pictures]);
 02F8 20900400          lds R2,L56
 02FC 81E1              ldi R24,17
 02FE 829D              mul R24,R2
 0300 8001              movw R16,R0
 0302 0A0D              add R16,R10
 0304 1B1D              adc R17,R11
 0306 F6DE              xcall _LCDDisplayString
 0308                   .dbline 576
 0308                   .dbline -2
 0308           L55:
 0308                   .dbline 0 ; func end
 0308 0C940000          xjmp pop_xgset003C
 030C                   .dbsym l Y 6 c
 030C                   .dbsym l X 4 c
 030C                   .dbsym r StringCounter 12 c
 030C                   .dbsym r String 10 pA[17:17]c
 030C                   .dbend
 030C           ; }

⌨️ 快捷键说明

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