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

📄 lcd.lis

📁 键盘扫描及其LCD显示输出,有源程序与仿真文件,都测试通过.
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0136 602F              mov R22,R16
 0138 4E81              ldd R20,y+6
 013A 5F81              ldd R21,y+7
 013C                   .dbline -1
 013C                   .dbline 198
 013C           ; }
 013C           ; // ********************************************************************* //
 013C           ; // *** Display a string at the specified row and column, using FLASH *** //
 013C           ; // ********************************************************************* //
 013C           ; void LCD_DisplayString_F (char row, char column ,const unsigned char  *string)
 013C           ; {
 013C                   .dbline 199
 013C           ; LCD_Cursor (row, column);
 013C 2A2D              mov R18,R10
 013E 062F              mov R16,R22
 0140 27D0              rcall _LCD_Cursor
 0142 09C0              rjmp L14
 0144           L13:
 0144                   .dbline 201
 0144                   .dbline 202
 0144 242E              mov R2,R20
 0146 352E              mov R3,R21
 0148 4F5F              subi R20,255  ; offset = 1
 014A 5F4F              sbci R21,255
 014C E22D              mov R30,R2
 014E F32D              mov R31,R3
 0150 C895              lpm
 0152 002D              mov R16,R0
 0154 E8DF              rcall _LCD_DisplayCharacter
 0156                   .dbline 203
 0156           L14:
 0156                   .dbline 200
 0156           ; while (*string)
 0156 E42F              mov R30,R20
 0158 F52F              mov R31,R21
 015A C895              lpm
 015C 0020              tst R0
 015E 91F7              brne L13
 0160                   .dbline -2
 0160           L12:
 0160 00D0              rcall pop_gset3
 0162                   .dbline 0 ; func end
 0162 0895              ret
 0164                   .dbsym r string 20 pkc
 0164                   .dbsym r column 10 c
 0164                   .dbsym r row 22 c
 0164                   .dbend
 0164                   .dbfunc e LCD_DisplayString _LCD_DisplayString fV
 0164           ;         string -> R20,R21
 0164           ;         column -> R10
 0164           ;            row -> R22
                        .even
 0164           _LCD_DisplayString::
 0164 00D0              rcall push_gset3
 0166 A22E              mov R10,R18
 0168 602F              mov R22,R16
 016A 4E81              ldd R20,y+6
 016C 5F81              ldd R21,y+7
 016E                   .dbline -1
 016E                   .dbline 209
 016E           ; {
 016E           ; LCD_DisplayCharacter (*string++);
 016E           ; }
 016E           ; }
 016E           ; // ******************************************************************* //
 016E           ; // *** Display a string at the specified row and column, using RAM *** //
 016E           ; // ******************************************************************* //
 016E           ; void LCD_DisplayString (char row, char column ,unsigned char *string)
 016E           ; {
 016E                   .dbline 210
 016E           ; LCD_Cursor (row, column);
 016E 2A2D              mov R18,R10
 0170 062F              mov R16,R22
 0172 0ED0              rcall _LCD_Cursor
 0174 06C0              rjmp L18
 0176           L17:
 0176                   .dbline 212
 0176 E42F              mov R30,R20
 0178 F52F              mov R31,R21
 017A 0191              ld R16,Z+
 017C 4E2F              mov R20,R30
 017E 5F2F              mov R21,R31
 0180 D2DF              rcall _LCD_DisplayCharacter
 0182           L18:
 0182                   .dbline 211
 0182           ; while (*string)
 0182 E42F              mov R30,R20
 0184 F52F              mov R31,R21
 0186 2080              ldd R2,z+0
 0188 2220              tst R2
 018A A9F7              brne L17
 018C                   .dbline -2
 018C           L16:
 018C 00D0              rcall pop_gset3
 018E                   .dbline 0 ; func end
 018E 0895              ret
 0190                   .dbsym r string 20 pc
 0190                   .dbsym r column 10 c
 0190                   .dbsym r row 22 c
 0190                   .dbend
 0190                   .dbfunc e LCD_Cursor _LCD_Cursor fV
 0190           ;         column -> R20
 0190           ;            row -> R22
                        .even
 0190           _LCD_Cursor::
 0190 00D0              rcall push_gset2
 0192 422F              mov R20,R18
 0194 602F              mov R22,R16
 0196                   .dbline -1
 0196                   .dbline 218
 0196           ; LCD_DisplayCharacter (*string++);
 0196           ; }
 0196           ; // *************************************************** //
 0196           ; // *** Position the LCD cursor at "row", "column". *** //
 0196           ; // *************************************************** //
 0196           ; void LCD_Cursor (char row, char column)
 0196           ; {
 0196                   .dbline 219
 0196 7727              clr R23
 0198 6130              cpi R22,1
 019A E0E0              ldi R30,0
 019C 7E07              cpc R23,R30
 019E 69F0              breq L24
 01A0 6230              cpi R22,2
 01A2 E0E0              ldi R30,0
 01A4 7E07              cpc R23,R30
 01A6 71F0              breq L25
 01A8 6330              cpi R22,3
 01AA E0E0              ldi R30,0
 01AC 7E07              cpc R23,R30
 01AE 79F0              breq L26
 01B0 6430              cpi R22,4
 01B2 E0E0              ldi R30,0
 01B4 7E07              cpc R23,R30
 01B6 81F0              breq L27
 01B8 13C0              rjmp L22
 01BA           X0:
 01BA                   .dbline 219
 01BA           ; switch (row) {
 01BA           L24:
 01BA                   .dbline 220
 01BA           ; case 1: LCD_WriteControl (0x80 + column - 1); break;
 01BA 042F              mov R16,R20
 01BC 0058              subi R16,128    ; addi 128
 01BE 0150              subi R16,1
 01C0 62DF              rcall _LCD_WriteControl
 01C2                   .dbline 220
 01C2 0EC0              rjmp L22
 01C4           L25:
 01C4                   .dbline 221
 01C4           ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
 01C4 042F              mov R16,R20
 01C6 0054              subi R16,64    ; addi 192
 01C8 0150              subi R16,1
 01CA 5DDF              rcall _LCD_WriteControl
 01CC                   .dbline 221
 01CC 09C0              rjmp L22
 01CE           L26:
 01CE                   .dbline 222
 01CE           ; case 3: LCD_WriteControl (0x94 + column - 1); break;
 01CE 042F              mov R16,R20
 01D0 0C56              subi R16,108    ; addi 148
 01D2 0150              subi R16,1
 01D4 58DF              rcall _LCD_WriteControl
 01D6                   .dbline 222
 01D6 04C0              rjmp L22
 01D8           L27:
 01D8                   .dbline 223
 01D8 042F              mov R16,R20
 01DA 0C52              subi R16,44    ; addi 212
 01DC 0150              subi R16,1
 01DE 53DF              rcall _LCD_WriteControl
 01E0                   .dbline 223
 01E0                   .dbline 224
 01E0           L22:
 01E0                   .dbline -2
 01E0           L20:
 01E0 00D0              rcall pop_gset2
 01E2                   .dbline 0 ; func end
 01E2 0895              ret
 01E4                   .dbsym r column 20 c
 01E4                   .dbsym r row 22 c
 01E4                   .dbend
 01E4                   .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
                        .even
 01E4           _LCD_Cursor_On::
 01E4                   .dbline -1
 01E4                   .dbline 231
 01E4           ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
 01E4           ; default: break;
 01E4           ; }
 01E4           ; }
 01E4           ; // ************************** //
 01E4           ; // *** Turn the cursor on *** //
 01E4           ; // ************************** //
 01E4           ; void LCD_Cursor_On (void)
 01E4           ; {
 01E4                   .dbline 232
 01E4           ; LCD_WriteControl (LCD_CURS_ON);
 01E4 0DE0              ldi R16,13
 01E6 4FDF              rcall _LCD_WriteControl
 01E8                   .dbline -2
 01E8           L28:
 01E8                   .dbline 0 ; func end
 01E8 0895              ret
 01EA                   .dbend
 01EA                   .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
                        .even
 01EA           _LCD_Cursor_Off::
 01EA                   .dbline -1
 01EA                   .dbline 238
 01EA           ; }
 01EA           ; // *************************** //
 01EA           ; // *** Turn the cursor off *** //
 01EA           ; // *************************** //
 01EA           ; void LCD_Cursor_Off (void)
 01EA           ; {
 01EA                   .dbline 239
 01EA           ; LCD_WriteControl (LCD_ON);
 01EA 0CE0              ldi R16,12
 01EC 4CDF              rcall _LCD_WriteControl
 01EE                   .dbline -2
 01EE           L29:
 01EE                   .dbline 0 ; func end
 01EE 0895              ret
 01F0                   .dbend
 01F0                   .dbfunc e LCD_Display_Off _LCD_Display_Off fV
                        .even
 01F0           _LCD_Display_Off::
 01F0                   .dbline -1
 01F0                   .dbline 245
 01F0           ; }
 01F0           ; // ******************** //
 01F0           ; // *** Turn Off LCD *** //
 01F0           ; // ******************** //
 01F0           ; void LCD_Display_Off (void)
 01F0           ; {
 01F0                   .dbline 246
 01F0           ; LCD_WriteControl(LCD_OFF);
 01F0 08E0              ldi R16,8
 01F2 49DF              rcall _LCD_WriteControl
 01F4                   .dbline -2
 01F4           L30:
 01F4                   .dbline 0 ; func end
 01F4 0895              ret
 01F6                   .dbend
 01F6                   .dbfunc e LCD_Display_On _LCD_Display_On fV
                        .even
 01F6           _LCD_Display_On::
 01F6                   .dbline -1
 01F6                   .dbline 252
 01F6           ; }
 01F6           ; // ******************* //
 01F6           ; // *** Turn On LCD *** //
 01F6           ; // ******************* //
 01F6           ; void LCD_Display_On (void)
 01F6           ; {
 01F6                   .dbline 253
 01F6           ; LCD_WriteControl(LCD_ON);
 01F6 0CE0              ldi R16,12
 01F8 46DF              rcall _LCD_WriteControl
 01FA                   .dbline -2
 01FA           L31:
 01FA                   .dbline 0 ; func end
 01FA 0895              ret
 01FC                   .dbend

⌨️ 快捷键说明

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