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

📄 lcd.lis

📁 ATmega16-ad1602
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 012C           ;            row -> R10
                        .even
 012C           _LCD_DisplayString_F::
 012C 00D0              rcall push_xgset303C
 012E C22E              mov R12,R18
 0130 A02E              mov R10,R16
 0132 4E81              ldd R20,y+6
 0134 5F81              ldd R21,y+7
 0136                   .dbline -1
 0136                   .dbline 196
 0136           ; }
 0136           ; // ********************************************************************* //
 0136           ; // *** Display a string at the specified row and column, using FLASH *** //
 0136           ; // ********************************************************************* //
 0136           ; void LCD_DisplayString_F (char row, char column , unsigned char __flash *string)
 0136           ; {
 0136                   .dbline 197
 0136           ; LCD_Cursor (row, column);
 0136 2C2D              mov R18,R12
 0138 0A2D              mov R16,R10
 013A 1ED0              rcall _LCD_Cursor
 013C 06C0              rjmp L14
 013E           L13:
 013E                   .dbline 199
 013E           ; while (*string)
 013E           ; {
 013E                   .dbline 200
 013E           ; LCD_DisplayCharacter (*string++);
 013E 1A01              movw R2,R20
 0140 4F5F              subi R20,255  ; offset = 1
 0142 5F4F              sbci R21,255
 0144 F101              movw R30,R2
 0146 0491              lpm R16,Z
 0148 EBDF              rcall _LCD_DisplayCharacter
 014A                   .dbline 201
 014A           ; }
 014A           L14:
 014A                   .dbline 198
 014A FA01              movw R30,R20
 014C 2490              lpm R2,Z
 014E 2220              tst R2
 0150 B1F7              brne L13
 0152           X1:
 0152                   .dbline -2
 0152           L12:
 0152                   .dbline 0 ; func end
 0152 00C0              rjmp pop_xgset303C
 0154                   .dbsym r string 20 pkc
 0154                   .dbsym r column 12 c
 0154                   .dbsym r row 10 c
 0154                   .dbend
 0154                   .dbfunc e LCD_DisplayString _LCD_DisplayString fV
 0154           ;         string -> R10,R11
 0154           ;         column -> R14
 0154           ;            row -> R12
                        .even
 0154           _LCD_DisplayString::
 0154 00D0              rcall push_xgset00FC
 0156 E22E              mov R14,R18
 0158 C02E              mov R12,R16
 015A AE80              ldd R10,y+6
 015C BF80              ldd R11,y+7
 015E                   .dbline -1
 015E                   .dbline 207
 015E           ; }
 015E           ; // ******************************************************************* //
 015E           ; // *** Display a string at the specified row and column, using RAM *** //
 015E           ; // ******************************************************************* //
 015E           ; void LCD_DisplayString (char row, char column ,unsigned char *string)
 015E           ; {
 015E                   .dbline 208
 015E           ; LCD_Cursor (row, column);
 015E 2E2D              mov R18,R14
 0160 0C2D              mov R16,R12
 0162 0AD0              rcall _LCD_Cursor
 0164 04C0              rjmp L18
 0166           L17:
 0166                   .dbline 210
 0166           ; while (*string)
 0166           ; LCD_DisplayCharacter (*string++);
 0166 F501              movw R30,R10
 0168 0191              ld R16,Z+
 016A 5F01              movw R10,R30
 016C D9DF              rcall _LCD_DisplayCharacter
 016E           L18:
 016E                   .dbline 209
 016E F501              movw R30,R10
 0170 2080              ldd R2,z+0
 0172 2220              tst R2
 0174 C1F7              brne L17
 0176           X2:
 0176                   .dbline -2
 0176           L16:
 0176                   .dbline 0 ; func end
 0176 00C0              rjmp pop_xgset00FC
 0178                   .dbsym r string 10 pc
 0178                   .dbsym r column 14 c
 0178                   .dbsym r row 12 c
 0178                   .dbend
 0178                   .dbfunc e LCD_Cursor _LCD_Cursor fV
 0178           ;         column -> R20
 0178           ;            row -> R10
                        .even
 0178           _LCD_Cursor::
 0178 00D0              rcall push_xgsetF00C
 017A 422F              mov R20,R18
 017C A02E              mov R10,R16
 017E                   .dbline -1
 017E                   .dbline 216
 017E           ; }
 017E           ; // *************************************************** //
 017E           ; // *** Position the LCD cursor at "row", "column". *** //
 017E           ; // *************************************************** //
 017E           ; void LCD_Cursor (char row, char column)
 017E           ; {
 017E                   .dbline 217
 017E           ; switch (row) {
 017E 6A2D              mov R22,R10
 0180 7727              clr R23
 0182 6130              cpi R22,1
 0184 E0E0              ldi R30,0
 0186 7E07              cpc R23,R30
 0188 69F0              breq L24
 018A           X3:
 018A 6230              cpi R22,2
 018C E0E0              ldi R30,0
 018E 7E07              cpc R23,R30
 0190 71F0              breq L25
 0192           X4:
 0192 6330              cpi R22,3
 0194 E0E0              ldi R30,0
 0196 7E07              cpc R23,R30
 0198 79F0              breq L26
 019A           X5:
 019A 6430              cpi R22,4
 019C E0E0              ldi R30,0
 019E 7E07              cpc R23,R30
 01A0 81F0              breq L27
 01A2           X6:
 01A2 13C0              rjmp L22
 01A4           L24:
 01A4                   .dbline 218
 01A4           ; case 1: LCD_WriteControl (0x80 + column - 1); break;
 01A4 042F              mov R16,R20
 01A6 0058              subi R16,128    ; addi 128
 01A8 0150              subi R16,1
 01AA 69DF              rcall _LCD_WriteControl
 01AC                   .dbline 218
 01AC 0EC0              rjmp L22
 01AE           L25:
 01AE                   .dbline 219
 01AE           ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
 01AE 042F              mov R16,R20
 01B0 0054              subi R16,64    ; addi 192
 01B2 0150              subi R16,1
 01B4 64DF              rcall _LCD_WriteControl
 01B6                   .dbline 219
 01B6 09C0              rjmp L22
 01B8           L26:
 01B8                   .dbline 220
 01B8           ; case 3: LCD_WriteControl (0x94 + column - 1); break;
 01B8 042F              mov R16,R20
 01BA 0C56              subi R16,108    ; addi 148
 01BC 0150              subi R16,1
 01BE 5FDF              rcall _LCD_WriteControl
 01C0                   .dbline 220
 01C0 04C0              rjmp L22
 01C2           L27:
 01C2                   .dbline 221
 01C2           ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
 01C2 042F              mov R16,R20
 01C4 0C52              subi R16,44    ; addi 212
 01C6 0150              subi R16,1
 01C8 5ADF              rcall _LCD_WriteControl
 01CA                   .dbline 221
 01CA                   .dbline 222
 01CA           ; default: break;
 01CA           L22:
 01CA                   .dbline -2
 01CA           L20:
 01CA                   .dbline 0 ; func end
 01CA 00C0              rjmp pop_xgsetF00C
 01CC                   .dbsym r column 20 c
 01CC                   .dbsym r row 10 c
 01CC                   .dbend
 01CC                   .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
                        .even
 01CC           _LCD_Cursor_On::
 01CC                   .dbline -1
 01CC                   .dbline 229
 01CC           ; }
 01CC           ; }
 01CC           ; // ************************** //
 01CC           ; // *** Turn the cursor on *** //
 01CC           ; // ************************** //
 01CC           ; void LCD_Cursor_On (void)
 01CC           ; {
 01CC                   .dbline 230
 01CC           ; LCD_WriteControl (LCD_CURS_ON);
 01CC 0DE0              ldi R16,13
 01CE                   .dbline -2
 01CE           L28:
 01CE                   .dbline 0 ; func end
 01CE 57CF              rjmp _LCD_WriteControl
 01D0                   .dbend
 01D0                   .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
                        .even
 01D0           _LCD_Cursor_Off::
 01D0                   .dbline -1
 01D0                   .dbline 236
 01D0           ; }
 01D0           ; // *************************** //
 01D0           ; // *** Turn the cursor off *** //
 01D0           ; // *************************** //
 01D0           ; void LCD_Cursor_Off (void)
 01D0           ; {
 01D0                   .dbline 237
 01D0           ; LCD_WriteControl (LCD_ON);
 01D0 0CE0              ldi R16,12
 01D2                   .dbline -2
 01D2           L29:
 01D2                   .dbline 0 ; func end
 01D2 55CF              rjmp _LCD_WriteControl
 01D4                   .dbend
 01D4                   .dbfunc e LCD_Display_Off _LCD_Display_Off fV
                        .even
 01D4           _LCD_Display_Off::
 01D4                   .dbline -1
 01D4                   .dbline 243
 01D4           ; }
 01D4           ; // ******************** //
 01D4           ; // *** Turn Off LCD *** //
 01D4           ; // ******************** //
 01D4           ; void LCD_Display_Off (void)
 01D4           ; {
 01D4                   .dbline 244
 01D4           ; LCD_WriteControl(LCD_OFF);
 01D4 08E0              ldi R16,8
 01D6                   .dbline -2
 01D6           L30:
 01D6                   .dbline 0 ; func end
 01D6 53CF              rjmp _LCD_WriteControl
 01D8                   .dbend
 01D8                   .dbfunc e LCD_Display_On _LCD_Display_On fV
                        .even
 01D8           _LCD_Display_On::
 01D8                   .dbline -1
 01D8                   .dbline 250
 01D8           ; }
 01D8           ; // ******************* //
 01D8           ; // *** Turn On LCD *** //
 01D8           ; // ******************* //
 01D8           ; void LCD_Display_On (void)
 01D8           ; {
 01D8                   .dbline 251
 01D8           ; LCD_WriteControl(LCD_ON);
 01D8 0CE0              ldi R16,12
 01DA                   .dbline -2
 01DA           L31:
 01DA                   .dbline 0 ; func end
 01DA 51CF              rjmp _LCD_WriteControl
 01DC                   .dbend
 01DC           ; }

⌨️ 快捷键说明

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