📄 1335.lis
字号:
009C ; lcd_write_data(0x87);////////////////////////////P2 WF 0 0 0 0 FX(0-7)
009C 07E8 ldi R16,135
009E CADF xcall _lcd_write_data
00A0 .dbline 142
00A0 ; lcd_write_data(0x07);////////////////////////////P3 0 0 0 0 FY(0-F)
00A0 07E0 ldi R16,7
00A2 C8DF xcall _lcd_write_data
00A4 .dbline 143
00A4 ; lcd_write_data((LCD_X_SIZE/8)-1); ///////////////P4 C/R
00A4 07E2 ldi R16,39
00A6 C6DF xcall _lcd_write_data
00A8 .dbline 144
00A8 ; lcd_write_data(0x42); ///////////////////////////P5 TC/R>cr+4
00A8 02E4 ldi R16,66
00AA C4DF xcall _lcd_write_data
00AC .dbline 145
00AC ; lcd_write_data(LCD_Y_SIZE - 1);//////////////////P6 L/F 240-1
00AC 0FEE ldi R16,239
00AE C2DF xcall _lcd_write_data
00B0 .dbline 146
00B0 ; lcd_write_data(LCD_X_SIZE/8);////////////////////P7 APL 40
00B0 08E2 ldi R16,40
00B2 C0DF xcall _lcd_write_data
00B4 .dbline 147
00B4 ; lcd_write_data(0x00);//////////////////////////////P8 APH
00B4 0027 clr R16
00B6 BEDF xcall _lcd_write_data
00B8 .dbline 149
00B8 ; // Scroll
00B8 ; lcd_write_command(0x44);
00B8 04E4 ldi R16,68
00BA B7DF xcall _lcd_write_command
00BC .dbline 150
00BC ; lcd_write_data(0x00);
00BC 0027 clr R16
00BE BADF xcall _lcd_write_data
00C0 .dbline 151
00C0 ; lcd_write_data(0x00);
00C0 0027 clr R16
00C2 B8DF xcall _lcd_write_data
00C4 .dbline 152
00C4 ; lcd_write_data(LCD_Y_SIZE);
00C4 00EF ldi R16,240
00C6 B6DF xcall _lcd_write_data
00C8 .dbline 153
00C8 ; lcd_write_data(0x00);
00C8 0027 clr R16
00CA B4DF xcall _lcd_write_data
00CC .dbline 154
00CC ; lcd_write_data(0x10);
00CC 00E1 ldi R16,16
00CE B2DF xcall _lcd_write_data
00D0 .dbline 155
00D0 ; lcd_write_data(LCD_Y_SIZE);
00D0 00EF ldi R16,240
00D2 B0DF xcall _lcd_write_data
00D4 .dbline 157
00D4 ; // Horizontal scroll
00D4 ; lcd_write_command(0x5a);
00D4 0AE5 ldi R16,90
00D6 A9DF xcall _lcd_write_command
00D8 .dbline 158
00D8 ; lcd_write_data(0x00);
00D8 0027 clr R16
00DA ACDF xcall _lcd_write_data
00DC .dbline 160
00DC ; // Overlay
00DC ; lcd_write_command(0x5b);
00DC 0BE5 ldi R16,91
00DE A5DF xcall _lcd_write_command
00E0 .dbline 161
00E0 ; lcd_write_data(0x03);
00E0 03E0 ldi R16,3
00E2 A8DF xcall _lcd_write_data
00E4 .dbline 163
00E4 ; // Display On/Off I
00E4 ; lcd_write_command(0x58);
00E4 08E5 ldi R16,88
00E6 A1DF xcall _lcd_write_command
00E8 .dbline 164
00E8 ; lcd_write_data(0x14);
00E8 04E1 ldi R16,20
00EA A4DF xcall _lcd_write_data
00EC .dbline 166
00EC ; // Cursor format
00EC ; lcd_write_command(0x5d);
00EC 0DE5 ldi R16,93
00EE 9DDF xcall _lcd_write_command
00F0 .dbline 167
00F0 ; lcd_write_data(0x07);
00F0 07E0 ldi R16,7
00F2 A0DF xcall _lcd_write_data
00F4 .dbline 168
00F4 ; lcd_write_data(0x87);
00F4 07E8 ldi R16,135
00F6 9EDF xcall _lcd_write_data
00F8 .dbline 170
00F8 ; // Display On/Off II
00F8 ; lcd_write_command(0x59);
00F8 09E5 ldi R16,89
00FA 97DF xcall _lcd_write_command
00FC .dbline 171
00FC ; lcd_write_data(0x14); // 0 0 0 1 0 1 0 0
00FC 04E1 ldi R16,20
00FE 9ADF xcall _lcd_write_data
0100 .dbline 173
0100 ; // Curson direction
0100 ; lcd_write_command(0x4c);
0100 0CE4 ldi R16,76
0102 93DF xcall _lcd_write_command
0104 .dbline 175
0104 ; // CUrsor write
0104 ; lcd_write_command(0x46);
0104 06E4 ldi R16,70
0106 91DF xcall _lcd_write_command
0108 .dbline 176
0108 ; lcd_write_data(0x00);
0108 0027 clr R16
010A 94DF xcall _lcd_write_data
010C .dbline 177
010C ; lcd_write_data(0x00);
010C 0027 clr R16
010E 92DF xcall _lcd_write_data
0110 .dbline -2
0110 L13:
0110 .dbline 0 ; func end
0110 5991 ld R21,y+
0112 4991 ld R20,y+
0114 0895 ret
0116 .dbsym r i 20 I
0116 .dbend
0116 .dbfunc e lcd_clear_text _lcd_clear_text fV
0116 ; i -> R20,R21
.even
0116 _lcd_clear_text::
0116 4A93 st -y,R20
0118 5A93 st -y,R21
011A .dbline -1
011A .dbline 183
011A ; }
011A ; /***********************************************************************
011A ; Clears the text layer / screen.
011A ; ***********************************************************************/
011A ; void lcd_clear_text(void)
011A ; {
011A .dbline 185
011A ; int i;
011A ; lcd_write_command(0x46);
011A 06E4 ldi R16,70
011C 86DF xcall _lcd_write_command
011E .dbline 186
011E ; lcd_write_data(0x00);
011E 0027 clr R16
0120 89DF xcall _lcd_write_data
0122 .dbline 187
0122 ; lcd_write_data(0x00);
0122 0027 clr R16
0124 87DF xcall _lcd_write_data
0126 .dbline 188
0126 ; lcd_write_command(0x42);
0126 02E4 ldi R16,66
0128 80DF xcall _lcd_write_command
012A .dbline 189
012A ; for (i=0; i<((LCD_X_SIZE/8)*(LCD_Y_SIZE/8)); i++) lcd_write_data(' ');
012A 4427 clr R20
012C 5527 clr R21
012E L19:
012E .dbline 189
012E 00E2 ldi R16,32
0130 81DF xcall _lcd_write_data
0132 L20:
0132 .dbline 189
0132 4F5F subi R20,255 ; offset = 1
0134 5F4F sbci R21,255
0136 .dbline 189
0136 403B cpi R20,176
0138 E4E0 ldi R30,4
013A 5E07 cpc R21,R30
013C C4F3 brlt L19
013E X3:
013E .dbline 190
013E ; lcd_write_command(0x46);
013E 06E4 ldi R16,70
0140 74DF xcall _lcd_write_command
0142 .dbline 191
0142 ; lcd_write_data(0x00);
0142 0027 clr R16
0144 77DF xcall _lcd_write_data
0146 .dbline 192
0146 ; lcd_write_data(0x00);
0146 0027 clr R16
0148 75DF xcall _lcd_write_data
014A .dbline -2
014A L18:
014A .dbline 0 ; func end
014A 5991 ld R21,y+
014C 4991 ld R20,y+
014E 0895 ret
0150 .dbsym r i 20 I
0150 .dbend
0150 .dbfunc e lcd_goto _lcd_goto fV
0150 ; hi -> R10
0150 ; lo -> R12
0150 ; addr -> R20,R21
0150 ; line -> R12
0150 ; column -> R10
.even
0150 _lcd_goto::
0150 0E940000 xcall push_xgset303C
0154 C22E mov R12,R18
0156 A02E mov R10,R16
0158 .dbline -1
0158 .dbline 200
0158 ; }
0158 ;
0158 ;
0158 ; /***********************************************************************
0158 ; Goto specified column and line. 1,1 is the upper left corner.
0158 ; ***********************************************************************/
0158 ; void lcd_goto(unsigned char column, unsigned char line)
0158 ; {
0158 .dbline 204
0158 ; int addr;
0158 ; unsigned char lo;
0158 ; unsigned char hi;
0158 ; column--;
0158 AA94 dec R10
015A .dbline 205
015A ; line--;
015A CA94 dec R12
015C .dbline 206
015C ; addr = (line * (LCD_X_SIZE/8)) + column;
015C 88E2 ldi R24,40
015E 8C9D mul R24,R12
0160 A001 movw R20,R0
0162 2A2C mov R2,R10
0164 3324 clr R3
0166 420D add R20,R2
0168 531D adc R21,R3
016A .dbline 207
016A ; lo = (unsigned char) (addr & 0x00ff);
016A CA01 movw R24,R20
016C 9070 andi R25,0
016E C82E mov R12,R24
0170 .dbline 208
0170 ; hi = (unsigned char) ((addr & 0xff00) >> 8);
0170 CA01 movw R24,R20
0172 8070 andi R24,0
0174 5C01 movw R10,R24
0176 AB2C mov R10,R11
0178 BB24 clr R11
017A .dbline 209
017A ; lcd_write_command(0x46);
017A 06E4 ldi R16,70
017C 56DF xcall _lcd_write_command
017E .dbline 210
017E ; lcd_write_data(lo);
017E 0C2D mov R16,R12
0180 59DF xcall _lcd_write_data
0182 .dbline 211
0182 ; lcd_write_data(hi);
0182 0A2D mov R16,R10
0184 57DF xcall _lcd_write_data
0186 .dbline -2
0186 L23:
0186 .dbline 0 ; func end
0186 0C940000 xjmp pop_xgset303C
018A .dbsym r hi 10 c
018A .dbsym r lo 12 c
018A .dbsym r addr 20 I
018A .dbsym r line 12 c
018A .dbsym r column 10 c
018A .dbend
018A .dbfunc e lcd_write_string _lcd_write_string fV
018A ; i -> <dead>
018A ; ptr -> R10,R11
.even
018A _lcd_write_string::
018A AA92 st -y,R10
018C BA92 st -y,R11
018E 5801 movw R10,R16
0190 .dbline -1
0190 .dbline 220
0190 ; }
0190 ;
0190 ;
0190 ; /***********************************************************************
0190 ; Write strings to the text layer. Set position with lcd_goto.
0190 ; Text will wrap if to long to show on one line.
0190 ; ***********************************************************************/
0190 ; void lcd_write_string(char *ptr)
0190 ; {
0190 .dbline 222
0190 ; int i;
0190 ; lcd_write_command(0x42);
0190 02E4 ldi R16,66
0192 4BDF xcall _lcd_write_command
0194 04C0 xjmp L26
0196 L25:
0196 .dbline 223
0196 ; while (*ptr != 0x00) lcd_write_data(*ptr++);
0196 F501 movw R30,R10
0198 0191 ld R16,Z+
019A 5F01 movw R10,R30
019C 4BDF xcall _lcd_write_data
019E L26:
019E .dbline 223
019E F501 movw R30,R10
01A0 2080 ldd R2,z+0
01A2 2220 tst R2
01A4 C1F7 brne L25
01A6 X4:
01A6 .dbline -2
01A6 L24:
01A6 .dbline 0 ; func end
01A6 B990 ld R11,y+
01A8 A990 ld R10,y+
01AA 0895 ret
01AC .dbsym l i 1 I
01AC .dbsym r ptr 10 pc
01AC .dbend
01AC .dbfunc e lcd_show_cursor _lcd_show_cursor fV
01AC ; show -> R10
.even
01AC _lcd_show_cursor::
01AC AA92 st -y,R10
01AE A02E mov R10,R16
01B0 .dbline -1
01B0 .dbline 231
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -