📄 ks0108.lis
字号:
026A 3082 std z+0,R3
026C .dbline 155
026C ; SET_LCD_E;
026C 20901300 lds R2,_LCD_EN_BIT
0270 E0910800 lds R30,_LCD_EN_PORT
0274 F0910900 lds R31,_LCD_EN_PORT+1
0278 3080 ldd R3,z+0
027A 3228 or R3,R2
027C 3082 std z+0,R3
027E .dbline 156
027E ; asm("nop");
027E 0000 nop
0280 .dbline 157
0280 ; asm("nop");
0280 0000 nop
0282 .dbline 158
0282 ; asm("nop");
0282 0000 nop
0284 .dbline 159
0284 ; asm("nop");
0284 0000 nop
0286 .dbline 160
0286 ; data=*LCD_IP_PORT;
0286 E0910200 lds R30,_LCD_IP_PORT
028A F0910300 lds R31,_LCD_IP_PORT+1
028E 4081 ldd R20,z+0
0290 .dbline 161
0290 ; CLEAR_LCD_E;
0290 20901300 lds R2,_LCD_EN_BIT
0294 2094 com R2
0296 E0910800 lds R30,_LCD_EN_PORT
029A F0910900 lds R31,_LCD_EN_PORT+1
029E 3080 ldd R3,z+0
02A0 3220 and R3,R2
02A2 3082 std z+0,R3
02A4 .dbline 162
02A4 ; SET_LCD_WRITE;
02A4 20901600 lds R2,_LCD_RW_BIT
02A8 2094 com R2
02AA E0910E00 lds R30,_LCD_RW_PORT
02AE F0910F00 lds R31,_LCD_RW_PORT+1
02B2 3080 ldd R3,z+0
02B4 3220 and R3,R2
02B6 3082 std z+0,R3
02B8 .dbline 163
02B8 ; LCD_BUSY(lr);
02B8 062F mov R16,R22
02BA CCDE xcall _LCD_BUSY
02BC .dbline 164
02BC ; SET_LCD_DATA;
02BC 20901700 lds R2,_LCD_DI_BIT
02C0 E0911000 lds R30,_LCD_DI_PORT
02C4 F0911100 lds R31,_LCD_DI_PORT+1
02C8 3080 ldd R3,z+0
02CA 3228 or R3,R2
02CC 3082 std z+0,R3
02CE .dbline 165
02CE ; *LCD_DIR_PORT = 0x00;
02CE 2224 clr R2
02D0 E0910000 lds R30,_LCD_DIR_PORT
02D4 F0910100 lds R31,_LCD_DIR_PORT+1
02D8 2082 std z+0,R2
02DA .dbline 166
02DA ; *LCD_OP_PORT = 0xff;
02DA 8FEF ldi R24,255
02DC E0910400 lds R30,_LCD_OP_PORT
02E0 F0910500 lds R31,_LCD_OP_PORT+1
02E4 8083 std z+0,R24
02E6 .dbline 167
02E6 ; SET_LCD_READ;
02E6 20901600 lds R2,_LCD_RW_BIT
02EA E0910E00 lds R30,_LCD_RW_PORT
02EE F0910F00 lds R31,_LCD_RW_PORT+1
02F2 3080 ldd R3,z+0
02F4 3228 or R3,R2
02F6 3082 std z+0,R3
02F8 .dbline 168
02F8 ; SET_LCD_E;
02F8 20901300 lds R2,_LCD_EN_BIT
02FC E0910800 lds R30,_LCD_EN_PORT
0300 F0910900 lds R31,_LCD_EN_PORT+1
0304 3080 ldd R3,z+0
0306 3228 or R3,R2
0308 3082 std z+0,R3
030A .dbline 169
030A ; asm("nop");
030A 0000 nop
030C .dbline 170
030C ; asm("nop");
030C 0000 nop
030E .dbline 171
030E ; asm("nop");
030E 0000 nop
0310 .dbline 172
0310 ; asm("nop");
0310 0000 nop
0312 .dbline 173
0312 ; data=*LCD_IP_PORT;
0312 E0910200 lds R30,_LCD_IP_PORT
0316 F0910300 lds R31,_LCD_IP_PORT+1
031A 4081 ldd R20,z+0
031C .dbline 174
031C ; CLEAR_LCD_E;
031C 20901300 lds R2,_LCD_EN_BIT
0320 2094 com R2
0322 E0910800 lds R30,_LCD_EN_PORT
0326 F0910900 lds R31,_LCD_EN_PORT+1
032A 3080 ldd R3,z+0
032C 3220 and R3,R2
032E 3082 std z+0,R3
0330 .dbline 175
0330 ; SET_LCD_WRITE;
0330 20901600 lds R2,_LCD_RW_BIT
0334 2094 com R2
0336 E0910E00 lds R30,_LCD_RW_PORT
033A F0910F00 lds R31,_LCD_RW_PORT+1
033E 3080 ldd R3,z+0
0340 3220 and R3,R2
0342 3082 std z+0,R3
0344 .dbline 177
0344 ;
0344 ; asm("sei");
0344 7894 sei
0346 .dbline 178
0346 ; return data;
0346 042F mov R16,R20
0348 .dbline -2
0348 L26:
0348 0E940000 xcall pop_gset2
034C .dbline 0 ; func end
034C 0895 ret
034E .dbsym r data 20 c
034E .dbsym r lr 22 c
034E .dbend
034E .dbfunc e set_start_line_L _set_start_line_L fV
034E ; line -> R20
.even
034E _set_start_line_L::
034E 0E940000 xcall push_gset1
0352 402F mov R20,R16
0354 2197 sbiw R28,1
0356 .dbline -1
0356 .dbline 182
0356 ; }
0356 ;
0356 ; void set_start_line_L(unsigned char line) /*设置显示起始行*/ //0-63
0356 ; {
0356 .dbline 183
0356 ; write_LCD(LEFT,CMD,0xc0|line);
0356 842F mov R24,R20
0358 806C ori R24,192
035A 8883 std y+0,R24
035C 2227 clr R18
035E 0027 clr R16
0360 0EDF xcall _write_LCD
0362 .dbline -2
0362 L27:
0362 2196 adiw R28,1
0364 0E940000 xcall pop_gset1
0368 .dbline 0 ; func end
0368 0895 ret
036A .dbsym r line 20 c
036A .dbend
036A .dbfunc e set_start_line_R _set_start_line_R fV
036A ; line -> R20
.even
036A _set_start_line_R::
036A 0E940000 xcall push_gset1
036E 402F mov R20,R16
0370 2197 sbiw R28,1
0372 .dbline -1
0372 .dbline 187
0372 ; }
0372 ;
0372 ; void set_start_line_R(unsigned char line) /*设置显示起始行*/ //0-63
0372 ; {
0372 .dbline 188
0372 ; write_LCD(RIGHT,CMD,0xc0|line);
0372 842F mov R24,R20
0374 806C ori R24,192
0376 8883 std y+0,R24
0378 2227 clr R18
037A 01E0 ldi R16,1
037C 00DF xcall _write_LCD
037E .dbline -2
037E L28:
037E 2196 adiw R28,1
0380 0E940000 xcall pop_gset1
0384 .dbline 0 ; func end
0384 0895 ret
0386 .dbsym r line 20 c
0386 .dbend
0386 .dbfunc e set_page_L _set_page_L fV
0386 ; page -> R20
.even
0386 _set_page_L::
0386 0E940000 xcall push_gset1
038A 402F mov R20,R16
038C 2197 sbiw R28,1
038E .dbline -1
038E .dbline 192
038E ; }
038E ;
038E ; void set_page_L(unsigned char page) /*设置X地址 设置页*/ //0-7
038E ; {
038E .dbline 193
038E ; write_LCD(LEFT,CMD,0xb8|page);
038E 842F mov R24,R20
0390 886B ori R24,184
0392 8883 std y+0,R24
0394 2227 clr R18
0396 0027 clr R16
0398 F2DE xcall _write_LCD
039A .dbline -2
039A L29:
039A 2196 adiw R28,1
039C 0E940000 xcall pop_gset1
03A0 .dbline 0 ; func end
03A0 0895 ret
03A2 .dbsym r page 20 c
03A2 .dbend
03A2 .dbfunc e set_page_R _set_page_R fV
03A2 ; page -> R20
.even
03A2 _set_page_R::
03A2 0E940000 xcall push_gset1
03A6 402F mov R20,R16
03A8 2197 sbiw R28,1
03AA .dbline -1
03AA .dbline 196
03AA ; }
03AA ; void set_page_R(unsigned char page) /*设置X地址 设置页*/ //0-7
03AA ; {
03AA .dbline 197
03AA ; write_LCD(RIGHT,CMD,0xb8|page);
03AA 842F mov R24,R20
03AC 886B ori R24,184
03AE 8883 std y+0,R24
03B0 2227 clr R18
03B2 01E0 ldi R16,1
03B4 E4DE xcall _write_LCD
03B6 .dbline -2
03B6 L30:
03B6 2196 adiw R28,1
03B8 0E940000 xcall pop_gset1
03BC .dbline 0 ; func end
03BC 0895 ret
03BE .dbsym r page 20 c
03BE .dbend
03BE .dbfunc e set_col_addr_L _set_col_addr_L fV
03BE ; col -> R20
.even
03BE _set_col_addr_L::
03BE 0E940000 xcall push_gset1
03C2 402F mov R20,R16
03C4 2197 sbiw R28,1
03C6 .dbline -1
03C6 .dbline 201
03C6 ; }
03C6 ;
03C6 ; void set_col_addr_L(unsigned char col) /*设置Y地址*/ //0-63
03C6 ; {
03C6 .dbline 202
03C6 ; write_LCD(LEFT,CMD,0x40|col);
03C6 842F mov R24,R20
03C8 8064 ori R24,64
03CA 8883 std y+0,R24
03CC 2227 clr R18
03CE 0027 clr R16
03D0 D6DE xcall _write_LCD
03D2 .dbline -2
03D2 L31:
03D2 2196 adiw R28,1
03D4 0E940000 xcall pop_gset1
03D8 .dbline 0 ; func end
03D8 0895 ret
03DA .dbsym r col 20 c
03DA .dbend
03DA .dbfunc e set_col_addr_R _set_col_addr_R fV
03DA ; col -> R20
.even
03DA _set_col_addr_R::
03DA 0E940000 xcall push_gset1
03DE 402F mov R20,R16
03E0 2197 sbiw R28,1
03E2 .dbline -1
03E2 .dbline 206
03E2 ; }
03E2 ;
03E2 ; void set_col_addr_R(unsigned char col) /*设置Y地址*/ //0-63
03E2 ; {
03E2 .dbline 207
03E2 ; write_LCD(RIGHT,CMD,0x40|col);
03E2 842F mov R24,R20
03E4 8064 ori R24,64
03E6 8883 std y+0,R24
03E8 2227 clr R18
03EA 01E0 ldi R16,1
03EC C8DE xcall _write_LCD
03EE .dbline -2
03EE L32:
03EE 2196 adiw R28,1
03F0 0E940000 xcall pop_gset1
03F4 .dbline 0 ; func end
03F4 0895 ret
03F6 .dbsym r col 20 c
03F6 .dbend
03F6 .dbfunc e init_lcd _init_lcd fV
.even
03F6 _init_lcd::
03F6 2197 sbiw R28,1
03F8 .dbline -1
03F8 .dbline 211
03F8 ; }
03F8 ;
03F8 ; void init_lcd(void) /*初始化函数*/
03F8 ; { delay_nms(1000);
03F8 .dbline 211
03F8 08EE ldi R16,1000
03FA 13E0 ldi R17,3
03FC 1CDE xcall _delay_nms
03FE .dbline 212
03FE ; REST_LCD;
03FE 20901200 lds R2,_LCD_RES_BIT
0402 E0910600 lds R30,_LCD_RES_PORT
0406 F0910700 lds R31,_LCD_RES_PORT+1
040A 3080 ldd R3,z+0
040C 3228 or R3,R2
040E 3082 std z+0,R3
0410 .dbline 213
0410 ; delay_nms(1000);
0410 08EE ldi R16,1000
0412 13E0 ldi R17,3
0414 10DE xcall _delay_nms
0416 .dbline 214
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -