📄 lcd.lis
字号:
014E ; column -> R10
014E ; row -> R22
.even
014E _LCD_DisplayString_F::
014E 0E940000 xcall push_gset3
0152 A22E mov R10,R18
0154 602F mov R22,R16
0156 4E81 ldd R20,y+6
0158 5F81 ldd R21,y+7
015A .dbline -1
015A .dbline 196
015A ; }
015A ; // ********************************************************************* //
015A ; // *** Display a string at the specified row and column, using FLASH *** //
015A ; // ********************************************************************* //
015A ; void LCD_DisplayString_F (char row, char column , unsigned char *string)
015A ; {
015A .dbline 197
015A ; LCD_Cursor (row, column);
015A 2A2D mov R18,R10
015C 062F mov R16,R22
015E 21D0 xcall _LCD_Cursor
0160 04C0 xjmp L14
0162 L13:
0162 .dbline 199
0162 .dbline 200
0162 FA01 movw R30,R20
0164 0191 ld R16,Z+
0166 AF01 movw R20,R30
0168 EADF xcall _LCD_DisplayCharacter
016A .dbline 201
016A L14:
016A .dbline 198
016A ; while (*string)
016A FA01 movw R30,R20
016C 2080 ldd R2,z+0
016E 2220 tst R2
0170 C1F7 brne L13
0172 .dbline -2
0172 L12:
0172 0E940000 xcall pop_gset3
0176 .dbline 0 ; func end
0176 0895 ret
0178 .dbsym r string 20 pc
0178 .dbsym r column 10 c
0178 .dbsym r row 22 c
0178 .dbend
0178 .dbfunc e LCD_DisplayString _LCD_DisplayString fV
0178 ; string -> R20,R21
0178 ; column -> R10
0178 ; row -> R22
.even
0178 _LCD_DisplayString::
0178 0E940000 xcall push_gset3
017C A22E mov R10,R18
017E 602F mov R22,R16
0180 4E81 ldd R20,y+6
0182 5F81 ldd R21,y+7
0184 .dbline -1
0184 .dbline 207
0184 ; {
0184 ; LCD_DisplayCharacter (*string++);
0184 ; }
0184 ; }
0184 ; // ******************************************************************* //
0184 ; // *** Display a string at the specified row and column, using RAM *** //
0184 ; // ******************************************************************* //
0184 ; void LCD_DisplayString (char row, char column ,unsigned char *string)
0184 ; {
0184 .dbline 208
0184 ; LCD_Cursor (row, column);
0184 2A2D mov R18,R10
0186 062F mov R16,R22
0188 0CD0 xcall _LCD_Cursor
018A 04C0 xjmp L18
018C L17:
018C .dbline 210
018C FA01 movw R30,R20
018E 0191 ld R16,Z+
0190 AF01 movw R20,R30
0192 D5DF xcall _LCD_DisplayCharacter
0194 L18:
0194 .dbline 209
0194 ; while (*string)
0194 FA01 movw R30,R20
0196 2080 ldd R2,z+0
0198 2220 tst R2
019A C1F7 brne L17
019C .dbline -2
019C L16:
019C 0E940000 xcall pop_gset3
01A0 .dbline 0 ; func end
01A0 0895 ret
01A2 .dbsym r string 20 pc
01A2 .dbsym r column 10 c
01A2 .dbsym r row 22 c
01A2 .dbend
01A2 .dbfunc e LCD_Cursor _LCD_Cursor fV
01A2 ; column -> R20
01A2 ; row -> R22
.even
01A2 _LCD_Cursor::
01A2 0E940000 xcall push_gset2
01A6 422F mov R20,R18
01A8 602F mov R22,R16
01AA .dbline -1
01AA .dbline 216
01AA ; LCD_DisplayCharacter (*string++);
01AA ; }
01AA ; // *************************************************** //
01AA ; // *** Position the LCD cursor at "row", "column". *** //
01AA ; // *************************************************** //
01AA ; void LCD_Cursor (char row, char column)
01AA ; {
01AA .dbline 217
01AA 7727 clr R23
01AC 6130 cpi R22,1
01AE E0E0 ldi R30,0
01B0 7E07 cpc R23,R30
01B2 69F0 breq L24
01B4 6230 cpi R22,2
01B6 E0E0 ldi R30,0
01B8 7E07 cpc R23,R30
01BA 71F0 breq L25
01BC 6330 cpi R22,3
01BE E0E0 ldi R30,0
01C0 7E07 cpc R23,R30
01C2 79F0 breq L26
01C4 6430 cpi R22,4
01C6 E0E0 ldi R30,0
01C8 7E07 cpc R23,R30
01CA 81F0 breq L27
01CC 13C0 xjmp L22
01CE X0:
01CE .dbline 217
01CE ; switch (row) {
01CE L24:
01CE .dbline 218
01CE ; case 1: LCD_WriteControl (0x80 + column - 1); break;
01CE 042F mov R16,R20
01D0 0058 subi R16,128 ; addi 128
01D2 0150 subi R16,1
01D4 60DF xcall _LCD_WriteControl
01D6 .dbline 218
01D6 0EC0 xjmp L22
01D8 L25:
01D8 .dbline 219
01D8 ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
01D8 042F mov R16,R20
01DA 0054 subi R16,64 ; addi 192
01DC 0150 subi R16,1
01DE 5BDF xcall _LCD_WriteControl
01E0 .dbline 219
01E0 09C0 xjmp L22
01E2 L26:
01E2 .dbline 220
01E2 ; case 3: LCD_WriteControl (0x94 + column - 1); break;
01E2 042F mov R16,R20
01E4 0C56 subi R16,108 ; addi 148
01E6 0150 subi R16,1
01E8 56DF xcall _LCD_WriteControl
01EA .dbline 220
01EA 04C0 xjmp L22
01EC L27:
01EC .dbline 221
01EC 042F mov R16,R20
01EE 0C52 subi R16,44 ; addi 212
01F0 0150 subi R16,1
01F2 51DF xcall _LCD_WriteControl
01F4 .dbline 221
01F4 .dbline 222
01F4 L22:
01F4 .dbline -2
01F4 L20:
01F4 0E940000 xcall pop_gset2
01F8 .dbline 0 ; func end
01F8 0895 ret
01FA .dbsym r column 20 c
01FA .dbsym r row 22 c
01FA .dbend
01FA .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
.even
01FA _LCD_Cursor_On::
01FA .dbline -1
01FA .dbline 229
01FA ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
01FA ; default: break;
01FA ; }
01FA ; }
01FA ; // ************************** //
01FA ; // *** Turn the cursor on *** //
01FA ; // ************************** //
01FA ; void LCD_Cursor_On (void)
01FA ; {
01FA .dbline 230
01FA ; LCD_WriteControl (LCD_CURS_ON);
01FA 0DE0 ldi R16,13
01FC 4CDF xcall _LCD_WriteControl
01FE .dbline -2
01FE L28:
01FE .dbline 0 ; func end
01FE 0895 ret
0200 .dbend
0200 .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
.even
0200 _LCD_Cursor_Off::
0200 .dbline -1
0200 .dbline 236
0200 ; }
0200 ; // *************************** //
0200 ; // *** Turn the cursor off *** //
0200 ; // *************************** //
0200 ; void LCD_Cursor_Off (void)
0200 ; {
0200 .dbline 237
0200 ; LCD_WriteControl (LCD_ON);
0200 0CE0 ldi R16,12
0202 49DF xcall _LCD_WriteControl
0204 .dbline -2
0204 L29:
0204 .dbline 0 ; func end
0204 0895 ret
0206 .dbend
0206 .dbfunc e LCD_Display_Off _LCD_Display_Off fV
.even
0206 _LCD_Display_Off::
0206 .dbline -1
0206 .dbline 243
0206 ; }
0206 ; // ******************** //
0206 ; // *** Turn Off LCD *** //
0206 ; // ******************** //
0206 ; void LCD_Display_Off (void)
0206 ; {
0206 .dbline 244
0206 ; LCD_WriteControl(LCD_OFF);
0206 08E0 ldi R16,8
0208 46DF xcall _LCD_WriteControl
020A .dbline -2
020A L30:
020A .dbline 0 ; func end
020A 0895 ret
020C .dbend
020C .dbfunc e LCD_Display_On _LCD_Display_On fV
.even
020C _LCD_Display_On::
020C .dbline -1
020C .dbline 250
020C ; }
020C ; // ******************* //
020C ; // *** Turn On LCD *** //
020C ; // ******************* //
020C ; void LCD_Display_On (void)
020C ; {
020C .dbline 251
020C ; LCD_WriteControl(LCD_ON);
020C 0CE0 ldi R16,12
020E 43DF xcall _LCD_WriteControl
0210 .dbline -2
0210 L31:
0210 .dbline 0 ; func end
0210 0895 ret
0212 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -