📄 lcd.lis
字号:
0166 .dbline 198
0166 ; while (*string)
0166 FA01 movw R30,R20
0168 E491 lpm R30,Z
016A EE23 tst R30
016C B1F7 brne L13
016E .dbline -2
016E .dbline 202
016E ; {
016E ; LCD_DisplayCharacter (*string++);
016E ; }
016E ; }
016E L12:
016E 0E940000 xcall pop_gset3
0172 .dbline 0 ; func end
0172 0895 ret
0174 .dbsym r string 20 pkc
0174 .dbsym r column 10 c
0174 .dbsym r row 22 c
0174 .dbend
0174 .dbfunc e LCD_DisplayString _LCD_DisplayString fV
0174 ; string -> R20,R21
0174 ; column -> R10
0174 ; row -> R22
.even
0174 _LCD_DisplayString::
0174 0E940000 xcall push_gset3
0178 A22E mov R10,R18
017A 602F mov R22,R16
017C 4E81 ldd R20,y+6
017E 5F81 ldd R21,y+7
0180 .dbline -1
0180 .dbline 207
0180 ; // ******************************************************************* //
0180 ; // *** Display a string at the specified row and column, using RAM *** //
0180 ; // ******************************************************************* //
0180 ; void LCD_DisplayString (char row, char column ,unsigned char *string)
0180 ; {
0180 .dbline 208
0180 ; LCD_Cursor (row, column);
0180 2A2D mov R18,R10
0182 062F mov R16,R22
0184 0CD0 xcall _LCD_Cursor
0186 04C0 xjmp L18
0188 L17:
0188 .dbline 210
0188 FA01 movw R30,R20
018A 0191 ld R16,Z+
018C AF01 movw R20,R30
018E D3DF xcall _LCD_DisplayCharacter
0190 L18:
0190 .dbline 209
0190 ; while (*string)
0190 FA01 movw R30,R20
0192 2080 ldd R2,z+0
0194 2220 tst R2
0196 C1F7 brne L17
0198 .dbline -2
0198 .dbline 211
0198 ; LCD_DisplayCharacter (*string++);
0198 ; }
0198 L16:
0198 0E940000 xcall pop_gset3
019C .dbline 0 ; func end
019C 0895 ret
019E .dbsym r string 20 pc
019E .dbsym r column 10 c
019E .dbsym r row 22 c
019E .dbend
019E .dbfunc e LCD_Cursor _LCD_Cursor fV
019E ; column -> R20
019E ; row -> R22
.even
019E _LCD_Cursor::
019E 0E940000 xcall push_gset2
01A2 422F mov R20,R18
01A4 602F mov R22,R16
01A6 .dbline -1
01A6 .dbline 216
01A6 ; // *************************************************** //
01A6 ; // *** Position the LCD cursor at "row", "column". *** //
01A6 ; // *************************************************** //
01A6 ; void LCD_Cursor (char row, char column)
01A6 ; {
01A6 .dbline 217
01A6 7727 clr R23
01A8 6130 cpi R22,1
01AA E0E0 ldi R30,0
01AC 7E07 cpc R23,R30
01AE 69F0 breq L24
01B0 6230 cpi R22,2
01B2 E0E0 ldi R30,0
01B4 7E07 cpc R23,R30
01B6 71F0 breq L25
01B8 6330 cpi R22,3
01BA E0E0 ldi R30,0
01BC 7E07 cpc R23,R30
01BE 79F0 breq L26
01C0 6430 cpi R22,4
01C2 E0E0 ldi R30,0
01C4 7E07 cpc R23,R30
01C6 81F0 breq L27
01C8 13C0 xjmp L22
01CA X0:
01CA .dbline 217
01CA ; switch (row) {
01CA L24:
01CA .dbline 218
01CA ; case 1: LCD_WriteControl (0x80 + column - 1); break;
01CA 042F mov R16,R20
01CC 0058 subi R16,128 ; addi 128
01CE 0150 subi R16,1
01D0 61DF xcall _LCD_WriteControl
01D2 .dbline 218
01D2 0EC0 xjmp L22
01D4 L25:
01D4 .dbline 219
01D4 ; case 2: LCD_WriteControl (0xc0 + column - 1); break;
01D4 042F mov R16,R20
01D6 0054 subi R16,64 ; addi 192
01D8 0150 subi R16,1
01DA 5CDF xcall _LCD_WriteControl
01DC .dbline 219
01DC 09C0 xjmp L22
01DE L26:
01DE .dbline 220
01DE ; case 3: LCD_WriteControl (0x94 + column - 1); break;
01DE 042F mov R16,R20
01E0 0C56 subi R16,108 ; addi 148
01E2 0150 subi R16,1
01E4 57DF xcall _LCD_WriteControl
01E6 .dbline 220
01E6 04C0 xjmp L22
01E8 L27:
01E8 .dbline 221
01E8 042F mov R16,R20
01EA 0C52 subi R16,44 ; addi 212
01EC 0150 subi R16,1
01EE 52DF xcall _LCD_WriteControl
01F0 .dbline 221
01F0 .dbline 222
01F0 L22:
01F0 .dbline -2
01F0 .dbline 224
01F0 ; case 4: LCD_WriteControl (0xd4 + column - 1); break;
01F0 ; default: break;
01F0 ; }
01F0 ; }
01F0 L20:
01F0 0E940000 xcall pop_gset2
01F4 .dbline 0 ; func end
01F4 0895 ret
01F6 .dbsym r column 20 c
01F6 .dbsym r row 22 c
01F6 .dbend
01F6 .dbfunc e LCD_Cursor_On _LCD_Cursor_On fV
.even
01F6 _LCD_Cursor_On::
01F6 .dbline -1
01F6 .dbline 229
01F6 ; // ************************** //
01F6 ; // *** Turn the cursor on *** //
01F6 ; // ************************** //
01F6 ; void LCD_Cursor_On (void)
01F6 ; {
01F6 .dbline 230
01F6 ; LCD_WriteControl (LCD_CURS_ON);
01F6 0DE0 ldi R16,13
01F8 .dbline -2
01F8 .dbline 231
01F8 ; }
01F8 L28:
01F8 .dbline 0 ; func end
01F8 4DCF xjmp _LCD_WriteControl
01FA .dbend
01FA .dbfunc e LCD_Cursor_Off _LCD_Cursor_Off fV
.even
01FA _LCD_Cursor_Off::
01FA .dbline -1
01FA .dbline 236
01FA ; // *************************** //
01FA ; // *** Turn the cursor off *** //
01FA ; // *************************** //
01FA ; void LCD_Cursor_Off (void)
01FA ; {
01FA .dbline 237
01FA ; LCD_WriteControl (LCD_ON);
01FA 0CE0 ldi R16,12
01FC .dbline -2
01FC .dbline 238
01FC ; }
01FC L29:
01FC .dbline 0 ; func end
01FC 4BCF xjmp _LCD_WriteControl
01FE .dbend
01FE .dbfunc e LCD_Display_Off _LCD_Display_Off fV
.even
01FE _LCD_Display_Off::
01FE .dbline -1
01FE .dbline 243
01FE ; // ******************** //
01FE ; // *** Turn Off LCD *** //
01FE ; // ******************** //
01FE ; void LCD_Display_Off (void)
01FE ; {
01FE .dbline 244
01FE ; LCD_WriteControl(LCD_OFF);
01FE 08E0 ldi R16,8
0200 .dbline -2
0200 .dbline 245
0200 ; }
0200 L30:
0200 .dbline 0 ; func end
0200 49CF xjmp _LCD_WriteControl
0202 .dbend
0202 .dbfunc e LCD_Display_On _LCD_Display_On fV
.even
0202 _LCD_Display_On::
0202 .dbline -1
0202 .dbline 250
0202 ; // ******************* //
0202 ; // *** Turn On LCD *** //
0202 ; // ******************* //
0202 ; void LCD_Display_On (void)
0202 ; {
0202 .dbline 251
0202 ; LCD_WriteControl(LCD_ON);
0202 0CE0 ldi R16,12
0204 .dbline -2
0204 .dbline 252
0204 ; }
0204 L31:
0204 .dbline 0 ; func end
0204 47CF xjmp _LCD_WriteControl
0206 .dbend
0206 .dbfunc e ClearLine _ClearLine fV
0206 ; space -> R22,R23
0206 ; line -> R20
.even
0206 _ClearLine::
0206 0E940000 xcall push_gset2
020A 402F mov R20,R16
020C 2297 sbiw R28,2
020E .dbline -1
020E .dbline 257
020E ; // ******************* //
020E ; // *** Clear line *** //
020E ; // ******************* //
020E ; void ClearLine(unsigned char line)
020E ; {
020E .dbline 258
020E ; unsigned char *space=" ";
020E 60E0 ldi R22,<L33
0210 70E0 ldi R23,>L33
0212 .dbline 259
0212 ; LCD_DisplayString(line,1,space);
0212 7983 std y+1,R23
0214 6883 std y+0,R22
0216 21E0 ldi R18,1
0218 042F mov R16,R20
021A ACDF xcall _LCD_DisplayString
021C .dbline -2
021C .dbline 260
021C ; }
021C L32:
021C 2296 adiw R28,2
021E 0E940000 xcall pop_gset2
0222 .dbline 0 ; func end
0222 0895 ret
0224 .dbsym r space 22 pc
0224 .dbsym r line 20 c
0224 .dbend
.area data(ram, con, rel)
0000 .dbfile D:\NEW\AVR_PWM\LCD.c
0000 L33:
0000 .blkb 17
.area idata
0000 20202020202020202020202020202020 .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
0010 00 .byte 0
.area data(ram, con, rel)
0011 .dbfile D:\NEW\AVR_PWM\LCD.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -