📄 lcd.lis
字号:
013C ; row -> R10
.even
013C _LCD_DisplayString_F::
013C 0E940000 xcall push_xgset303C
0140 C22E mov R12,R18
0142 A02E mov R10,R16
0144 4E81 ldd R20,y+6
0146 5F81 ldd R21,y+7
0148 .dbline -1
0148 .dbline 196
0148 ; }
0148 ; // ********************************************************************* //
0148 ; // *** Display a string at the specified row and column, using FLASH *** //
0148 ; // ********************************************************************* //
0148 ; void LCD_DisplayString_F (char row, char column , unsigned char __flash *string)
0148 ; {
0148 .dbline 197
0148 ; LCD_Cursor (row, column);
0148 2C2D mov R18,R12
014A 0A2D mov R16,R10
014C 21D0 xcall _LCD_Cursor
014E 06C0 xjmp L14
0150 L13:
0150 .dbline 199
0150 ; while (*string)
0150 ; {
0150 .dbline 200
0150 ; LCD_DisplayCharacter (*string++);
0150 1A01 movw R2,R20
0152 4F5F subi R20,255 ; offset = 1
0154 5F4F sbci R21,255
0156 F101 movw R30,R2
0158 0491 lpm R16,Z
015A EADF xcall _LCD_DisplayCharacter
015C .dbline 201
015C ; }
015C L14:
015C .dbline 198
015C FA01 movw R30,R20
015E 2490 lpm R2,Z
0160 2220 tst R2
0162 B1F7 brne L13
0164 X1:
0164 .dbline -2
0164 L12:
0164 .dbline 0 ; func end
0164 0C940000 xjmp pop_xgset303C
0168 .dbsym r string 20 pkc
0168 .dbsym r column 12 c
0168 .dbsym r row 10 c
0168 .dbend
0168 .dbfunc e LCD_DisplayString _LCD_DisplayString fV
0168 ; string -> R10,R11
0168 ; column -> R14
0168 ; row -> R12
.even
0168 _LCD_DisplayString::
0168 0E940000 xcall push_xgset00FC
016C E22E mov R14,R18
016E C02E mov R12,R16
0170 AE80 ldd R10,y+6
0172 BF80 ldd R11,y+7
0174 .dbline -1
0174 .dbline 207
0174 ; }
0174 ; // ******************************************************************* //
0174 ; // *** Display a string at the specified row and column, using RAM *** //
0174 ; // ******************************************************************* //
0174 ; void LCD_DisplayString (char row, char column ,unsigned char *string)
0174 ; {
0174 .dbline 208
0174 ; LCD_Cursor (row, column);
0174 2E2D mov R18,R14
0176 0C2D mov R16,R12
0178 0BD0 xcall _LCD_Cursor
017A 04C0 xjmp L18
017C L17:
017C .dbline 210
017C ; while (*string)
017C ; LCD_DisplayCharacter (*string++);
017C F501 movw R30,R10
017E 0191 ld R16,Z+
0180 5F01 movw R10,R30
0182 D6DF xcall _LCD_DisplayCharacter
0184 L18:
0184 .dbline 209
0184 F501 movw R30,R10
0186 2080 ldd R2,z+0
0188 2220 tst R2
018A C1F7 brne L17
018C X2:
018C .dbline -2
018C L16:
018C .dbline 0 ; func end
018C 0C940000 xjmp pop_xgset00FC
0190 .dbsym r string 10 pc
0190 .dbsym r column 14 c
0190 .dbsym r row 12 c
0190 .dbend
0190 .dbfunc e LCD_Cursor _LCD_Cursor fV
0190 ; column -> R20
0190 ; row -> R10
.even
0190 _LCD_Cursor::
0190 0E940000 xcall push_xgsetF00C
0194 422F mov R20,R18
0196 A02E mov R10,R16
0198 .dbline -1
0198 .dbline 216
0198 ; }
0198 ; // *************************************************** //
0198 ; // *** Position the LCD cursor at "row", "column". *** //
0198 ; // *************************************************** //
0198 ; void LCD_Cursor (char row, char column)
0198 ; {
0198 .dbline 217
0198 ; switch (row) {
0198 6A2D mov R22,R10
019A 7727 clr R23
019C 6130 cpi R22,1
019E E0E0 ldi R30,0
01A0 7E07 cpc R23,R30
01A2 69F0 breq L24
01A4 X3:
01A4 6230 cpi R22,2
01A6 E0E0 ldi R30,0
01A8 7E07 cpc R23,R30
01AA 71F0 breq L25
01AC X4:
01AC 6330 cpi R22,3
01AE E0E0 ldi R30,0
01B0 7E07 cpc R23,R30
01B2 79F0 breq L26
01B4 X5:
01B4 6430 cpi R22,4
01B6 E0E0 ldi R30,0
01B8 7E07 cpc R23,R30
01BA 81F0 breq L27
01BC X6:
01BC 13C0 xjmp L22
01BE L24:
01BE .dbline 218
01BE ; case 1: LCD_WriteControl (0x80 + column - 1); break;
01BE 042F mov R16,R20
01C0 0058 subi R16,128 ; addi 128
01C2 0150 subi R16,1
01C4 64DF xcall _LCD_WriteControl
01C6 .dbline 218
01C6 0EC0 xjmp L22
01C8 L25:
01C8 .dbline 219
01C8 ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
01C8 042F mov R16,R20
01CA 0054 subi R16,64 ; addi 192
01CC 0150 subi R16,1
01CE 5FDF xcall _LCD_WriteControl
01D0 .dbline 219
01D0 09C0 xjmp L22
01D2 L26:
01D2 .dbline 220
01D2 ; case 3: LCD_WriteControl (0x94 + column - 1); break;
01D2 042F mov R16,R20
01D4 0C56 subi R16,108 ; addi 148
01D6 0150 subi R16,1
01D8 5ADF xcall _LCD_WriteControl
01DA .dbline 220
01DA 04C0 xjmp L22
01DC L27:
01DC .dbline 221
01DC ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
01DC 042F mov R16,R20
01DE 0C52 subi R16,44 ; addi 212
01E0 0150 subi R16,1
01E2 55DF xcall _LCD_WriteControl
01E4 .dbline 221
01E4 .dbline 222
01E4 ; default: break;
01E4 L22:
01E4 .dbline -2
01E4 L20:
01E4 .dbline 0 ; func end
01E4 0C940000 xjmp pop_xgsetF00C
01E8 .dbsym r column 20 c
01E8 .dbsym r row 10 c
01E8 .dbend
01E8 .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
.even
01E8 _LCD_Cursor_On::
01E8 .dbline -1
01E8 .dbline 229
01E8 ; }
01E8 ; }
01E8 ; // ************************** //
01E8 ; // *** Turn the cursor on *** //
01E8 ; // ************************** //
01E8 ; void LCD_Cursor_On (void)
01E8 ; {
01E8 .dbline 230
01E8 ; LCD_WriteControl (LCD_CURS_ON);
01E8 0DE0 ldi R16,13
01EA .dbline -2
01EA L28:
01EA .dbline 0 ; func end
01EA 51CF xjmp _LCD_WriteControl
01EC .dbend
01EC .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
.even
01EC _LCD_Cursor_Off::
01EC .dbline -1
01EC .dbline 236
01EC ; }
01EC ; // *************************** //
01EC ; // *** Turn the cursor off *** //
01EC ; // *************************** //
01EC ; void LCD_Cursor_Off (void)
01EC ; {
01EC .dbline 237
01EC ; LCD_WriteControl (LCD_ON);
01EC 0CE0 ldi R16,12
01EE .dbline -2
01EE L29:
01EE .dbline 0 ; func end
01EE 4FCF xjmp _LCD_WriteControl
01F0 .dbend
01F0 .dbfunc e LCD_Display_Off _LCD_Display_Off fV
.even
01F0 _LCD_Display_Off::
01F0 .dbline -1
01F0 .dbline 243
01F0 ; }
01F0 ; // ******************** //
01F0 ; // *** Turn Off LCD *** //
01F0 ; // ******************** //
01F0 ; void LCD_Display_Off (void)
01F0 ; {
01F0 .dbline 244
01F0 ; LCD_WriteControl(LCD_OFF);
01F0 08E0 ldi R16,8
01F2 .dbline -2
01F2 L30:
01F2 .dbline 0 ; func end
01F2 4DCF xjmp _LCD_WriteControl
01F4 .dbend
01F4 .dbfunc e LCD_Display_On _LCD_Display_On fV
.even
01F4 _LCD_Display_On::
01F4 .dbline -1
01F4 .dbline 250
01F4 ; }
01F4 ; // ******************* //
01F4 ; // *** Turn On LCD *** //
01F4 ; // ******************* //
01F4 ; void LCD_Display_On (void)
01F4 ; {
01F4 .dbline 251
01F4 ; LCD_WriteControl(LCD_ON);
01F4 0CE0 ldi R16,12
01F6 .dbline -2
01F6 L31:
01F6 .dbline 0 ; func end
01F6 4BCF xjmp _LCD_WriteControl
01F8 .dbend
01F8 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -