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

📄 lcd.lis

📁 ATMEGA128控制4×6矩阵键盘,LCD1602 使用protues软件可仿真 附带图片可观看效果
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0138           ;           Char -> R10
                        .even
 0138           _LCD_DisplayCharacter::
 0138 AA92              st -y,R10
 013A A02E              mov R10,R16
 013C                   .dbline -1
 013C                   .dbline 191
 013C           ; }
 013C           ; // ****************************************************************** //
 013C           ; // *** Display a single character, at the current cursor location *** //
 013C           ; // ****************************************************************** //
 013C           ; void LCD_DisplayCharacter (char Char)
 013C           ; {
 013C                   .dbline 192
 013C           ; LCD_WriteData (Char);
 013C 0A2D              mov R16,R10
 013E C8DF              xcall _LCD_WriteData
 0140                   .dbline -2
 0140           L11:
 0140                   .dbline 0 ; func end
 0140 A990              ld R10,y+
 0142 0895              ret
 0144                   .dbsym r Char 10 c
 0144                   .dbend
 0144                   .dbfunc e LCD_DisplayString _LCD_DisplayString fV
 0144           ;         string -> R10,R11
 0144           ;         column -> R14
 0144           ;            row -> R12
                        .even
 0144           _LCD_DisplayString::
 0144 0E940000          xcall push_xgset00FC
 0148 E22E              mov R14,R18
 014A C02E              mov R12,R16
 014C AE80              ldd R10,y+6
 014E BF80              ldd R11,y+7
 0150                   .dbline -1
 0150                   .dbline 211
 0150           ; }
 0150           ; // ********************************************************************* //
 0150           ; // *** Display a string at the specified row and column, using FLASH *** //
 0150           ; // ********************************************************************* //
 0150           ; /*
 0150           ; void LCD_DisplayString_F (char row, char column , unsigned char __flash *string)
 0150           ; {
 0150           ; LCD_Cursor (row, column);
 0150           ; while (*string)
 0150           ; {
 0150           ; LCD_DisplayCharacter (*string++);
 0150           ; }
 0150           ; }
 0150           ; */
 0150           ; // ******************************************************************* //
 0150           ; // *** Display a string at the specified row and column, using RAM *** //
 0150           ; // ******************************************************************* //
 0150           ; void LCD_DisplayString (char row, char column ,unsigned char *string)
 0150           ; {
 0150                   .dbline 212
 0150           ; LCD_Cursor (row, column);
 0150 2E2D              mov R18,R14
 0152 0C2D              mov R16,R12
 0154 0BD0              xcall _LCD_Cursor
 0156 04C0              xjmp L14
 0158           L13:
 0158                   .dbline 214
 0158           ; while (*string)
 0158           ; LCD_DisplayCharacter (*string++);
 0158 F501              movw R30,R10
 015A 0191              ld R16,Z+
 015C 5F01              movw R10,R30
 015E ECDF              xcall _LCD_DisplayCharacter
 0160           L14:
 0160                   .dbline 213
 0160 F501              movw R30,R10
 0162 2080              ldd R2,z+0
 0164 2220              tst R2
 0166 C1F7              brne L13
 0168           X1:
 0168                   .dbline -2
 0168           L12:
 0168                   .dbline 0 ; func end
 0168 0C940000          xjmp pop_xgset00FC
 016C                   .dbsym r string 10 pc
 016C                   .dbsym r column 14 c
 016C                   .dbsym r row 12 c
 016C                   .dbend
 016C                   .dbfunc e LCD_Cursor _LCD_Cursor fV
 016C           ;         column -> R20
 016C           ;            row -> R10
                        .even
 016C           _LCD_Cursor::
 016C 0E940000          xcall push_xgsetF00C
 0170 422F              mov R20,R18
 0172 A02E              mov R10,R16
 0174                   .dbline -1
 0174                   .dbline 220
 0174           ; }
 0174           ; // *************************************************** //
 0174           ; // *** Position the LCD cursor at "row", "column". *** //
 0174           ; // *************************************************** //
 0174           ; void LCD_Cursor (char row, char column)
 0174           ; {
 0174                   .dbline 221
 0174           ; switch (row) {
 0174 6A2D              mov R22,R10
 0176 7727              clr R23
 0178 6130              cpi R22,1
 017A E0E0              ldi R30,0
 017C 7E07              cpc R23,R30
 017E 69F0              breq L20
 0180           X2:
 0180 6230              cpi R22,2
 0182 E0E0              ldi R30,0
 0184 7E07              cpc R23,R30
 0186 71F0              breq L21
 0188           X3:
 0188 6330              cpi R22,3
 018A E0E0              ldi R30,0
 018C 7E07              cpc R23,R30
 018E 79F0              breq L22
 0190           X4:
 0190 6430              cpi R22,4
 0192 E0E0              ldi R30,0
 0194 7E07              cpc R23,R30
 0196 81F0              breq L23
 0198           X5:
 0198 13C0              xjmp L18
 019A           L20:
 019A                   .dbline 222
 019A           ; case 1: LCD_WriteControl (0x80 + column - 1); break;
 019A 042F              mov R16,R20
 019C 0058              subi R16,128    ; addi 128
 019E 0150              subi R16,1
 01A0 77DF              xcall _LCD_WriteControl
 01A2                   .dbline 222
 01A2 0EC0              xjmp L18
 01A4           L21:
 01A4                   .dbline 223
 01A4           ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
 01A4 042F              mov R16,R20
 01A6 0054              subi R16,64    ; addi 192
 01A8 0150              subi R16,1
 01AA 72DF              xcall _LCD_WriteControl
 01AC                   .dbline 223
 01AC 09C0              xjmp L18
 01AE           L22:
 01AE                   .dbline 224
 01AE           ; case 3: LCD_WriteControl (0x94 + column - 1); break;
 01AE 042F              mov R16,R20
 01B0 0C56              subi R16,108    ; addi 148
 01B2 0150              subi R16,1
 01B4 6DDF              xcall _LCD_WriteControl
 01B6                   .dbline 224
 01B6 04C0              xjmp L18
 01B8           L23:
 01B8                   .dbline 225
 01B8           ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
 01B8 042F              mov R16,R20
 01BA 0C52              subi R16,44    ; addi 212
 01BC 0150              subi R16,1
 01BE 68DF              xcall _LCD_WriteControl
 01C0                   .dbline 225
 01C0                   .dbline 226
 01C0           ; default: break;
 01C0           L18:
 01C0                   .dbline -2
 01C0           L16:
 01C0                   .dbline 0 ; func end
 01C0 0C940000          xjmp pop_xgsetF00C
 01C4                   .dbsym r column 20 c
 01C4                   .dbsym r row 10 c
 01C4                   .dbend
 01C4                   .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
                        .even
 01C4           _LCD_Cursor_On::
 01C4                   .dbline -1
 01C4                   .dbline 233
 01C4           ; }
 01C4           ; }
 01C4           ; // ************************** //
 01C4           ; // *** Turn the cursor on *** //
 01C4           ; // ************************** //
 01C4           ; void LCD_Cursor_On (void)
 01C4           ; {
 01C4                   .dbline 234
 01C4           ; LCD_WriteControl (LCD_CURS_ON);
 01C4 0DE0              ldi R16,13
 01C6 64DF              xcall _LCD_WriteControl
 01C8                   .dbline -2
 01C8           L24:
 01C8                   .dbline 0 ; func end
 01C8 0895              ret
 01CA                   .dbend
 01CA                   .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
                        .even
 01CA           _LCD_Cursor_Off::
 01CA                   .dbline -1
 01CA                   .dbline 240
 01CA           ; }
 01CA           ; // *************************** //
 01CA           ; // *** Turn the cursor off *** //
 01CA           ; // *************************** //
 01CA           ; void LCD_Cursor_Off (void)
 01CA           ; {
 01CA                   .dbline 241
 01CA           ; LCD_WriteControl (LCD_ON);
 01CA 0CE0              ldi R16,12
 01CC 61DF              xcall _LCD_WriteControl
 01CE                   .dbline -2
 01CE           L25:
 01CE                   .dbline 0 ; func end
 01CE 0895              ret
 01D0                   .dbend
 01D0                   .dbfunc e LCD_Display_Off _LCD_Display_Off fV
                        .even
 01D0           _LCD_Display_Off::
 01D0                   .dbline -1
 01D0                   .dbline 247
 01D0           ; }
 01D0           ; // ******************** //
 01D0           ; // *** Turn Off LCD *** //
 01D0           ; // ******************** //
 01D0           ; void LCD_Display_Off (void)
 01D0           ; {
 01D0                   .dbline 248
 01D0           ; LCD_WriteControl(LCD_OFF);
 01D0 08E0              ldi R16,8
 01D2 5EDF              xcall _LCD_WriteControl
 01D4                   .dbline -2
 01D4           L26:
 01D4                   .dbline 0 ; func end
 01D4 0895              ret
 01D6                   .dbend
 01D6                   .dbfunc e LCD_Display_On _LCD_Display_On fV
                        .even
 01D6           _LCD_Display_On::
 01D6                   .dbline -1
 01D6                   .dbline 254
 01D6           ; }
 01D6           ; // ******************* //
 01D6           ; // *** Turn On LCD *** //
 01D6           ; // ******************* //
 01D6           ; void LCD_Display_On (void)
 01D6           ; {
 01D6                   .dbline 255
 01D6           ; LCD_WriteControl(LCD_ON);
 01D6 0CE0              ldi R16,12
 01D8 5BDF              xcall _LCD_WriteControl
 01DA                   .dbline -2
 01DA           L27:
 01DA                   .dbline 0 ; func end
 01DA 0895              ret
 01DC                   .dbend
 01DC           ; }

⌨️ 快捷键说明

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