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

📄 lcd.lis

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

⌨️ 快捷键说明

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