📄 lcd12864.lis
字号:
00B6 F6CF xjmp L20
00B8 L22:
00B8 .dbline 151
00B8 ; }
00B8 ; }
00B8 ; LCD_RW_L;
00B8 C198 cbi 0x18,1
00BA .dbline 152
00BA ; LCD_DI_H;
00BA C09A sbi 0x18,0
00BC .dbline 153
00BC ; LCD_DATA_DDR = 0XFF;
00BC 8FEF ldi R24,255
00BE 8ABB out 0x1a,R24
00C0 .dbline 154
00C0 ; LCD_DATA_OUT = right_data;
00C0 4BBB out 0x1b,R20
00C2 .dbline 155
00C2 ; LCD_NOP;
00C2 03D1 xcall _lcd_delay
00C4 .dbline 156
00C4 ; LCD_EN_L;
00C4 C298 cbi 0x18,2
00C6 .dbline -2
00C6 L19:
00C6 0E940000 xcall pop_gset1
00CA .dbline 0 ; func end
00CA 0895 ret
00CC .dbsym r right_data 20 c
00CC .dbend
00CC .dbfunc e lcd_init _lcd_init fV
00CC ; x -> R20
00CC ; y -> R22
.even
00CC _lcd_init::
00CC 0E940000 xcall push_gset2
00D0 .dbline -1
00D0 .dbline 162
00D0 ; }
00D0 ;
00D0 ; //----------------------------------------------------------------------------------
00D0 ;
00D0 ; void lcd_init(void)
00D0 ; {
00D0 .dbline 165
00D0 ; uchar x,y;
00D0 ; //设置显示起始行
00D0 ; wcodeL(0x0c0);
00D0 00EC ldi R16,192
00D2 96DF xcall _wcodeL
00D4 .dbline 166
00D4 ; wcodeR(0x0c0);
00D4 00EC ldi R16,192
00D6 C7DF xcall _wcodeR
00D8 .dbline 169
00D8 ;
00D8 ; //开显示
00D8 ; wcodeL(0x3f);
00D8 0FE3 ldi R16,63
00DA 92DF xcall _wcodeL
00DC .dbline 170
00DC ; wcodeR(0x3f);
00DC 0FE3 ldi R16,63
00DE C3DF xcall _wcodeR
00E0 .dbline 172
00E0 4427 clr R20
00E2 0EC0 xjmp L29
00E4 L26:
00E4 .dbline 172
00E4 ;
00E4 ; for(x=0;x<8;x++){
00E4 .dbline 173
00E4 ; wcodeL(PRE_PAGE+x);
00E4 042F mov R16,R20
00E6 0854 subi R16,72 ; addi 184
00E8 8BDF xcall _wcodeL
00EA .dbline 174
00EA 6627 clr R22
00EC 06C0 xjmp L33
00EE L30:
00EE .dbline 174
00EE .dbline 175
00EE 062F mov R16,R22
00F0 005C subi R16,192 ; addi 64
00F2 86DF xcall _wcodeL
00F4 .dbline 176
00F4 0027 clr R16
00F6 9DDF xcall _wdataL
00F8 .dbline 177
00F8 L31:
00F8 .dbline 174
00F8 6395 inc R22
00FA L33:
00FA .dbline 174
00FA 6034 cpi R22,64
00FC C0F3 brlo L30
00FE .dbline 178
00FE L27:
00FE .dbline 172
00FE 4395 inc R20
0100 L29:
0100 .dbline 172
0100 4830 cpi R20,8
0102 80F3 brlo L26
0104 .dbline 179
0104 4427 clr R20
0106 0EC0 xjmp L37
0108 L34:
0108 .dbline 179
0108 ; for(y=0;y<64;y++){
0108 ; wcodeL(PRE_COL+y);
0108 ; wdataL(0);
0108 ; }
0108 ; }
0108 ; for(x=0;x<8;x++){
0108 .dbline 180
0108 ; wcodeR(PRE_PAGE+x);
0108 042F mov R16,R20
010A 0854 subi R16,72 ; addi 184
010C ACDF xcall _wcodeR
010E .dbline 181
010E 6627 clr R22
0110 06C0 xjmp L41
0112 L38:
0112 .dbline 181
0112 .dbline 182
0112 062F mov R16,R22
0114 005C subi R16,192 ; addi 64
0116 A7DF xcall _wcodeR
0118 .dbline 183
0118 0027 clr R16
011A BEDF xcall _wdataR
011C .dbline 184
011C L39:
011C .dbline 181
011C 6395 inc R22
011E L41:
011E .dbline 181
011E 6034 cpi R22,64
0120 C0F3 brlo L38
0122 .dbline 185
0122 L35:
0122 .dbline 179
0122 4395 inc R20
0124 L37:
0124 .dbline 179
0124 4830 cpi R20,8
0126 80F3 brlo L34
0128 .dbline -2
0128 L25:
0128 0E940000 xcall pop_gset2
012C .dbline 0 ; func end
012C 0895 ret
012E .dbsym r x 20 c
012E .dbsym r y 22 c
012E .dbend
012E .dbfunc e lcd_clear_range _lcd_clear_range fV
012E ; x -> R20
012E ; range -> R22
.even
012E _lcd_clear_range::
012E 0E940000 xcall push_gset2
0132 602F mov R22,R16
0134 .dbline -1
0134 .dbline 189
0134 ; for(y=0;y<64;y++){
0134 ; wcodeR(PRE_COL+y);
0134 ; wdataR(0);
0134 ; }
0134 ; }
0134 ; }
0134 ; /******************************************************************************/
0134 ; void lcd_clear_range(uchar range)
0134 ; {
0134 .dbline 191
0134 48E0 ldi R20,8
0136 09C0 xjmp L46
0138 L43:
0138 .dbline 191
0138 .dbline 192
0138 062F mov R16,R22
013A 0854 subi R16,72 ; addi 184
013C 61DF xcall _wcodeL
013E 042F mov R16,R20
0140 005C subi R16,192 ; addi 64
0142 5EDF xcall _wcodeL
0144 .dbline 193
0144 0027 clr R16
0146 75DF xcall _wdataL
0148 .dbline 194
0148 L44:
0148 .dbline 191
0148 4395 inc R20
014A L46:
014A .dbline 191
014A ; uchar x;
014A ; for(x=8;x<64;x++){
014A 4034 cpi R20,64
014C A8F3 brlo L43
014E .dbline -2
014E L42:
014E 0E940000 xcall pop_gset2
0152 .dbline 0 ; func end
0152 0895 ret
0154 .dbsym r x 20 c
0154 .dbsym r range 22 c
0154 .dbend
0154 .dbfunc e lcd_clear_left _lcd_clear_left fV
0154 ; x -> R20
0154 ; y -> R22
.even
0154 _lcd_clear_left::
0154 0E940000 xcall push_gset2
0158 .dbline -1
0158 .dbline 198
0158 ; addressL(range,x);
0158 ; wdataL(0);
0158 ; }
0158 ; }
0158 ; /******************************************************************************/
0158 ; void lcd_clear_left(void)
0158 ; {
0158 .dbline 200
0158 4427 clr R20
015A 0EC0 xjmp L51
015C L48:
015C .dbline 200
015C ; uchar x,y;
015C ; for(x=0;x<8;x++){
015C .dbline 201
015C 6627 clr R22
015E 09C0 xjmp L55
0160 L52:
0160 .dbline 201
0160 .dbline 202
0160 042F mov R16,R20
0162 0854 subi R16,72 ; addi 184
0164 4DDF xcall _wcodeL
0166 062F mov R16,R22
0168 005C subi R16,192 ; addi 64
016A 4ADF xcall _wcodeL
016C .dbline 203
016C 0027 clr R16
016E 61DF xcall _wdataL
0170 .dbline 204
0170 L53:
0170 .dbline 201
0170 6395 inc R22
0172 L55:
0172 .dbline 201
0172 6034 cpi R22,64
0174 A8F3 brlo L52
0176 .dbline 205
0176 L49:
0176 .dbline 200
0176 4395 inc R20
0178 L51:
0178 .dbline 200
0178 4830 cpi R20,8
017A 80F3 brlo L48
017C .dbline -2
017C L47:
017C 0E940000 xcall pop_gset2
0180 .dbline 0 ; func end
0180 0895 ret
0182 .dbsym r x 20 c
0182 .dbsym r y 22 c
0182 .dbend
0182 .dbfunc e lcd_print _lcd_print fV
0182 ; lcd_data -> y+4
0182 ; y -> R20
0182 ; x -> R22
.even
0182 _lcd_print::
0182 0E940000 xcall push_gset2
0186 422F mov R20,R18
0188 602F mov R22,R16
018A .dbline -1
018A .dbline 209
018A ; for(y=0;y<64;y++){
018A ; addressL(x,y);
018A ; wdataL(0);
018A ; }
018A ; }
018A ; }
018A ; /******************************************************************************/
018A ; void lcd_print(uchar x,uchar y,uchar lcd_data)
018A ; {
018A .dbline 210
018A ; if(x > 7){
018A 87E0 ldi R24,7
018C 8617 cp R24,R22
018E 08F4 brsh L57
0190 .dbline 210
0190 .dbline 211
0190 ; x -= 7;
0190 6750 subi R22,7
0192 .dbline 212
0192 ; }
0192 L57:
0192 .dbline 213
0192 ; if(y > 63){
0192 8FE3 ldi R24,63
0194 8417 cp R24,R20
0196 50F4 brsh L59
0198 .dbline 213
0198 .dbline 214
0198 ; y -= 64;
0198 4054 subi R20,64
019A .dbline 215
019A ; addressL(x,y);
019A 062F mov R16,R22
019C 0854 subi R16,72 ; addi 184
019E 30DF xcall _wcodeL
01A0 042F mov R16,R20
01A2 005C subi R16,192 ; addi 64
01A4 2DDF xcall _wcodeL
01A6 .dbline 216
01A6 ; wdataL(lcd_data);
01A6 0C81 ldd R16,y+4
01A8 44DF xcall _wdataL
01AA .dbline 217
01AA 08C0 xjmp L60
01AC L59:
01AC .dbline 217
01AC .dbline 218
01AC 062F mov R16,R22
01AE 0854 subi R16,72 ; addi 184
01B0 5ADF xcall _wcodeR
01B2 042F mov R16,R20
01B4 005C subi R16,192 ; addi 64
01B6 57DF xcall _wcodeR
01B8 .dbline 219
01B8 0C81 ldd R16,y+4
01BA 6EDF xcall _wdataR
01BC .dbline 220
01BC L60:
01BC .dbline -2
01BC L56:
01BC 0E940000 xcall pop_gset2
01C0 .dbline 0 ; func end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -