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