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

📄 lcd.lis

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

⌨️ 快捷键说明

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