📄 lcd.lis
字号:
0136 602F mov R22,R16
0138 4E81 ldd R20,y+6
013A 5F81 ldd R21,y+7
013C .dbline -1
013C .dbline 198
013C ; }
013C ; // ********************************************************************* //
013C ; // *** Display a string at the specified row and column, using FLASH *** //
013C ; // ********************************************************************* //
013C ; void LCD_DisplayString_F (char row, char column ,const unsigned char *string)
013C ; {
013C .dbline 199
013C ; LCD_Cursor (row, column);
013C 2A2D mov R18,R10
013E 062F mov R16,R22
0140 27D0 rcall _LCD_Cursor
0142 09C0 rjmp L14
0144 L13:
0144 .dbline 201
0144 .dbline 202
0144 242E mov R2,R20
0146 352E mov R3,R21
0148 4F5F subi R20,255 ; offset = 1
014A 5F4F sbci R21,255
014C E22D mov R30,R2
014E F32D mov R31,R3
0150 C895 lpm
0152 002D mov R16,R0
0154 E8DF rcall _LCD_DisplayCharacter
0156 .dbline 203
0156 L14:
0156 .dbline 200
0156 ; while (*string)
0156 E42F mov R30,R20
0158 F52F mov R31,R21
015A C895 lpm
015C 0020 tst R0
015E 91F7 brne L13
0160 .dbline -2
0160 L12:
0160 00D0 rcall pop_gset3
0162 .dbline 0 ; func end
0162 0895 ret
0164 .dbsym r string 20 pkc
0164 .dbsym r column 10 c
0164 .dbsym r row 22 c
0164 .dbend
0164 .dbfunc e LCD_DisplayString _LCD_DisplayString fV
0164 ; string -> R20,R21
0164 ; column -> R10
0164 ; row -> R22
.even
0164 _LCD_DisplayString::
0164 00D0 rcall push_gset3
0166 A22E mov R10,R18
0168 602F mov R22,R16
016A 4E81 ldd R20,y+6
016C 5F81 ldd R21,y+7
016E .dbline -1
016E .dbline 209
016E ; {
016E ; LCD_DisplayCharacter (*string++);
016E ; }
016E ; }
016E ; // ******************************************************************* //
016E ; // *** Display a string at the specified row and column, using RAM *** //
016E ; // ******************************************************************* //
016E ; void LCD_DisplayString (char row, char column ,unsigned char *string)
016E ; {
016E .dbline 210
016E ; LCD_Cursor (row, column);
016E 2A2D mov R18,R10
0170 062F mov R16,R22
0172 0ED0 rcall _LCD_Cursor
0174 06C0 rjmp L18
0176 L17:
0176 .dbline 212
0176 E42F mov R30,R20
0178 F52F mov R31,R21
017A 0191 ld R16,Z+
017C 4E2F mov R20,R30
017E 5F2F mov R21,R31
0180 D2DF rcall _LCD_DisplayCharacter
0182 L18:
0182 .dbline 211
0182 ; while (*string)
0182 E42F mov R30,R20
0184 F52F mov R31,R21
0186 2080 ldd R2,z+0
0188 2220 tst R2
018A A9F7 brne L17
018C .dbline -2
018C L16:
018C 00D0 rcall pop_gset3
018E .dbline 0 ; func end
018E 0895 ret
0190 .dbsym r string 20 pc
0190 .dbsym r column 10 c
0190 .dbsym r row 22 c
0190 .dbend
0190 .dbfunc e LCD_Cursor _LCD_Cursor fV
0190 ; column -> R20
0190 ; row -> R22
.even
0190 _LCD_Cursor::
0190 00D0 rcall push_gset2
0192 422F mov R20,R18
0194 602F mov R22,R16
0196 .dbline -1
0196 .dbline 218
0196 ; LCD_DisplayCharacter (*string++);
0196 ; }
0196 ; // *************************************************** //
0196 ; // *** Position the LCD cursor at "row", "column". *** //
0196 ; // *************************************************** //
0196 ; void LCD_Cursor (char row, char column)
0196 ; {
0196 .dbline 219
0196 7727 clr R23
0198 6130 cpi R22,1
019A E0E0 ldi R30,0
019C 7E07 cpc R23,R30
019E 69F0 breq L24
01A0 6230 cpi R22,2
01A2 E0E0 ldi R30,0
01A4 7E07 cpc R23,R30
01A6 71F0 breq L25
01A8 6330 cpi R22,3
01AA E0E0 ldi R30,0
01AC 7E07 cpc R23,R30
01AE 79F0 breq L26
01B0 6430 cpi R22,4
01B2 E0E0 ldi R30,0
01B4 7E07 cpc R23,R30
01B6 81F0 breq L27
01B8 13C0 rjmp L22
01BA X0:
01BA .dbline 219
01BA ; switch (row) {
01BA L24:
01BA .dbline 220
01BA ; case 1: LCD_WriteControl (0x80 + column - 1); break;
01BA 042F mov R16,R20
01BC 0058 subi R16,128 ; addi 128
01BE 0150 subi R16,1
01C0 62DF rcall _LCD_WriteControl
01C2 .dbline 220
01C2 0EC0 rjmp L22
01C4 L25:
01C4 .dbline 221
01C4 ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
01C4 042F mov R16,R20
01C6 0054 subi R16,64 ; addi 192
01C8 0150 subi R16,1
01CA 5DDF rcall _LCD_WriteControl
01CC .dbline 221
01CC 09C0 rjmp L22
01CE L26:
01CE .dbline 222
01CE ; case 3: LCD_WriteControl (0x94 + column - 1); break;
01CE 042F mov R16,R20
01D0 0C56 subi R16,108 ; addi 148
01D2 0150 subi R16,1
01D4 58DF rcall _LCD_WriteControl
01D6 .dbline 222
01D6 04C0 rjmp L22
01D8 L27:
01D8 .dbline 223
01D8 042F mov R16,R20
01DA 0C52 subi R16,44 ; addi 212
01DC 0150 subi R16,1
01DE 53DF rcall _LCD_WriteControl
01E0 .dbline 223
01E0 .dbline 224
01E0 L22:
01E0 .dbline -2
01E0 L20:
01E0 00D0 rcall pop_gset2
01E2 .dbline 0 ; func end
01E2 0895 ret
01E4 .dbsym r column 20 c
01E4 .dbsym r row 22 c
01E4 .dbend
01E4 .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
.even
01E4 _LCD_Cursor_On::
01E4 .dbline -1
01E4 .dbline 231
01E4 ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
01E4 ; default: break;
01E4 ; }
01E4 ; }
01E4 ; // ************************** //
01E4 ; // *** Turn the cursor on *** //
01E4 ; // ************************** //
01E4 ; void LCD_Cursor_On (void)
01E4 ; {
01E4 .dbline 232
01E4 ; LCD_WriteControl (LCD_CURS_ON);
01E4 0DE0 ldi R16,13
01E6 4FDF rcall _LCD_WriteControl
01E8 .dbline -2
01E8 L28:
01E8 .dbline 0 ; func end
01E8 0895 ret
01EA .dbend
01EA .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
.even
01EA _LCD_Cursor_Off::
01EA .dbline -1
01EA .dbline 238
01EA ; }
01EA ; // *************************** //
01EA ; // *** Turn the cursor off *** //
01EA ; // *************************** //
01EA ; void LCD_Cursor_Off (void)
01EA ; {
01EA .dbline 239
01EA ; LCD_WriteControl (LCD_ON);
01EA 0CE0 ldi R16,12
01EC 4CDF rcall _LCD_WriteControl
01EE .dbline -2
01EE L29:
01EE .dbline 0 ; func end
01EE 0895 ret
01F0 .dbend
01F0 .dbfunc e LCD_Display_Off _LCD_Display_Off fV
.even
01F0 _LCD_Display_Off::
01F0 .dbline -1
01F0 .dbline 245
01F0 ; }
01F0 ; // ******************** //
01F0 ; // *** Turn Off LCD *** //
01F0 ; // ******************** //
01F0 ; void LCD_Display_Off (void)
01F0 ; {
01F0 .dbline 246
01F0 ; LCD_WriteControl(LCD_OFF);
01F0 08E0 ldi R16,8
01F2 49DF rcall _LCD_WriteControl
01F4 .dbline -2
01F4 L30:
01F4 .dbline 0 ; func end
01F4 0895 ret
01F6 .dbend
01F6 .dbfunc e LCD_Display_On _LCD_Display_On fV
.even
01F6 _LCD_Display_On::
01F6 .dbline -1
01F6 .dbline 252
01F6 ; }
01F6 ; // ******************* //
01F6 ; // *** Turn On LCD *** //
01F6 ; // ******************* //
01F6 ; void LCD_Display_On (void)
01F6 ; {
01F6 .dbline 253
01F6 ; LCD_WriteControl(LCD_ON);
01F6 0CE0 ldi R16,12
01F8 46DF rcall _LCD_WriteControl
01FA .dbline -2
01FA L31:
01FA .dbline 0 ; func end
01FA 0895 ret
01FC .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -