📄 lcd.lis
字号:
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 + -