📄 serial_lcd.s
字号:
; wr_lcd(0x36,1);
ldi R18,1
ldi R16,54
xcall _wr_lcd
.dbline 186
; wr_lcd(Lcd_Set_Function_Basic,1); //30H--基本指令操作
ldi R18,1
ldi R16,48
xcall _wr_lcd
.dbline -2
L35:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 22 c
.dbsym r bmp 10 pkc
.dbend
.dbfunc e Lcd_clrbmp _Lcd_clrbmp fV
; i -> R20
; j -> R22
.even
_Lcd_clrbmp::
xcall push_gset2
.dbline -1
.dbline 202
; }
;
;
;
; /*********************************************************************************************************
; ** 函数名称: void Lcd_clrbmp(void)
; ** 功能描述: 清除bmp图片
; ** 输 入:
; ** 输 出:
; ** 全局变量: 无
; ** 调用模块: Lcd_scomm() Lcd_sdata()
; ** 说明:
; ** 注意:
; ********************************************************************************************************/
; void Lcd_clrbmp(void)
; {
.dbline 205
; unsigned char i,j;
; // wr_lcd(Lcd_Clear,1);
; wr_lcd(Lcd_Set_Function_Basic+2,1);
ldi R18,1
ldi R16,50
xcall _wr_lcd
.dbline 206
; wr_lcd(Lcd_Set_Function_Extend,1);
ldi R18,1
ldi R16,52
xcall _wr_lcd
.dbline 207
; for(i=0;i<32;i++)
clr R20
xjmp L56
L53:
.dbline 208
; {
.dbline 209
; for(j=0;j<16;j++)
clr R22
xjmp L60
L57:
.dbline 210
.dbline 211
ldi R18,1
ldi R16,50
xcall _wr_lcd
.dbline 212
ldi R18,1
ldi R16,54
xcall _wr_lcd
.dbline 214
ldi R18,1
mov R16,R20
subi R16,128 ; addi 128
xcall _wr_lcd
.dbline 215
ldi R18,1
mov R16,R22
subi R16,128 ; addi 128
xcall _wr_lcd
.dbline 217
ldi R18,1
ldi R16,50
xcall _wr_lcd
.dbline 218
clr R18
clr R16
xcall _wr_lcd
.dbline 219
clr R18
clr R16
xcall _wr_lcd
.dbline 220
L58:
.dbline 209
inc R22
L60:
.dbline 209
cpi R22,16
brlo L57
.dbline 221
L54:
.dbline 207
inc R20
L56:
.dbline 207
cpi R20,32
brlo L53
.dbline 222
; {
; wr_lcd(Lcd_Set_Function_Basic+2,1);
; wr_lcd(Lcd_Set_Function_Extend+2,1);
;
; wr_lcd(0x80+i,1);
; wr_lcd(0x80+j,1);
;
; wr_lcd(Lcd_Set_Function_Basic+2,1);
; wr_lcd(0x00,0);
; wr_lcd(0x00,0);
; }
; }
; wr_lcd(0x36,1);
ldi R18,1
ldi R16,54
xcall _wr_lcd
.dbline 223
; wr_lcd(Lcd_Set_Function_Basic,1); //30H--基本指令操作
ldi R18,1
ldi R16,48
xcall _wr_lcd
.dbline -2
L52:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 22 c
.dbend
.dbfunc e Lcd_lineclr _Lcd_lineclr fV
; i -> R20
; row -> R20
.even
_Lcd_lineclr::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 238
; }
;
;
; /*********************************************************************************************************
; ** 函数名称: Lcd_lineclr()
; ** 功能描述: 清除一行的显示
; ** 输 入: unsigned char row 要清除显示的行
; ** 输 出:
; ** 全局变量: 无
; ** 调用模块: 无
; ** 说明:
; ** 注意:
; *******************************************************************************************************/
; void Lcd_lineclr(unsigned char row)
; {
.dbline 240
; unsigned char i;
; switch(row)
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L65
cpi R20,2
ldi R30,0
cpc R21,R30
breq L70
cpi R20,3
ldi R30,0
cpc R21,R30
breq L75
cpi R20,4
ldi R30,0
cpc R21,R30
breq L80
xjmp L63
X3:
.dbline 241
; {
L65:
.dbline 243
; case 1:
; {
.dbline 244
; wr_lcd(Lcd_Set_Ddram,1);
ldi R18,1
ldi R16,128
xcall _wr_lcd
.dbline 245
clr R20
xjmp L69
L66:
.dbline 245
clr R18
ldi R16,32
xcall _wr_lcd
L67:
.dbline 245
inc R20
L69:
.dbline 245
; for(i=0;i<16;i++) wr_lcd(' ',0);
cpi R20,16
brlo L66
.dbline 246
; break;
xjmp L63
L70:
.dbline 249
; }
; case 2:
; {
.dbline 250
; wr_lcd(Lcd_Set_Ddram+0x10,1);
ldi R18,1
ldi R16,144
xcall _wr_lcd
.dbline 251
clr R20
xjmp L74
L71:
.dbline 251
clr R18
ldi R16,32
xcall _wr_lcd
L72:
.dbline 251
inc R20
L74:
.dbline 251
; for(i=0;i<16;i++) wr_lcd(' ',0);
cpi R20,16
brlo L71
.dbline 252
; break;
xjmp L63
L75:
.dbline 255
; }
; case 3:
; {
.dbline 256
; wr_lcd(Lcd_Set_Ddram+0x08,1);
ldi R18,1
ldi R16,136
xcall _wr_lcd
.dbline 257
clr R20
xjmp L79
L76:
.dbline 257
clr R18
ldi R16,32
xcall _wr_lcd
L77:
.dbline 257
inc R20
L79:
.dbline 257
; for(i=0;i<16;i++) wr_lcd(' ',0);
cpi R20,16
brlo L76
.dbline 258
; break;
xjmp L63
L80:
.dbline 261
; }
; case 4:
; {
.dbline 262
; wr_lcd(Lcd_Set_Ddram+0x18,1);
ldi R18,1
ldi R16,152
xcall _wr_lcd
.dbline 263
clr R20
xjmp L84
L81:
.dbline 263
clr R18
ldi R16,32
xcall _wr_lcd
L82:
.dbline 263
inc R20
L84:
.dbline 263
cpi R20,16
brlo L81
.dbline 264
.dbline 267
L63:
.dbline -2
L61:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r row 20 c
.dbend
.dbfunc e Lcd_linedisp _Lcd_linedisp fV
; i -> R22
; row -> R22
; p -> R20,R21
.even
_Lcd_linedisp::
xcall push_gset2
mov R22,R18
movw R20,R16
.dbline -1
.dbline 284
; for(i=0;i<16;i++) wr_lcd(' ',0);
; break;
; }
;
; default: break;
; }
; }
;
;
; /*********************************************************************************************************
; ** 函数名称: void Lcd_linedisp(unsigned char *p,unsigned char row)
; ** 功能描述: 在一行中显示
; ** 输 入: unsigned char row 要清除显示的行
; ** 输 出:
; ** 全局变量: 无
; ** 调用模块: 无
; ** 说明:
; ** 注意:
; *******************************************************************************************************/
;
; void Lcd_linedisp(unsigned char *p,unsigned char row)
; {
.dbline 286
; unsigned char i;
; switch(row)
clr R23
cpi R22,1
ldi R30,0
cpc R23,R30
breq L89
cpi R22,2
ldi R30,0
cpc R23,R30
breq L94
cpi R22,3
ldi R30,0
cpc R23,R30
breq L99
cpi R22,4
ldi R30,0
cpc R23,R30
brne X5
xjmp L104
X5:
xjmp L86
X4:
.dbline 287
; {
L89:
.dbline 289
; case 1:
; {
.dbline 290
; Lcd_lineclr(1);
ldi R16,1
xcall _Lcd_lineclr
.dbline 291
; wr_lcd(Lcd_Set_Ddram,1);
ldi R18,1
ldi R16,128
xcall _wr_lcd
.dbline 292
clr R22
xjmp L93
L90:
.dbline 292
clr R18
mov R30,R22
clr R31
add R30,R20
adc R31,R21
ldd R16,z+0
xcall _wr_lcd
L91:
.dbline 292
inc R22
L93:
.dbline 292
; for(i=0;i<16;i++) wr_lcd(p[i],0);
cpi R22,16
brlo L90
.dbline 293
; break;
xjmp L87
L94:
.dbline 296
; }
; case 2:
; {
.dbline 297
; Lcd_lineclr(2);
ldi R16,2
xcall _Lcd_lineclr
.dbline 298
; wr_lcd(Lcd_Set_Ddram+0x10,1);
ldi R18,1
ldi R16,144
xcall _wr_lcd
.dbline 299
clr R22
xjmp L98
L95:
.dbline 299
clr R18
mov R30,R22
clr R31
add R30,R20
adc R31,R21
ldd R16,z+0
xcall _wr_lcd
L96:
.dbline 299
inc R22
L98:
.dbline 299
; for(i=0;i<16;i++) wr_lcd(p[i],0);
cpi R22,16
brlo L95
.dbline 300
; break;
xjmp L87
L99:
.dbline 303
; }
; case 3:
; {
.dbline 304
; Lcd_lineclr(3);
ldi R16,3
xcall _Lcd_lineclr
.dbline 305
; wr_lcd(Lcd_Set_Ddram+0x08,1);
ldi R18,1
ldi R16,136
xcall _wr_lcd
.dbline 306
clr R22
xjmp L103
L100:
.dbline 306
clr R18
mov R30,R22
clr R31
add R30,R20
adc R31,R21
ldd R16,z+0
xcall _wr_lcd
L101:
.dbline 306
inc R22
L103:
.dbline 306
; for(i=0;i<16;i++) wr_lcd(p[i],0);
cpi R22,16
brlo L100
.dbline 307
; break;
xjmp L87
L104:
.dbline 310
; }
; case 4:
; {
.dbline 311
; Lcd_lineclr(4);
ldi R16,4
xcall _Lcd_lineclr
.dbline 312
; wr_lcd(Lcd_Set_Ddram+0x18,1);
ldi R18,1
ldi R16,152
xcall _wr_lcd
.dbline 313
clr R22
xjmp L108
L105:
.dbline 313
clr R18
mov R30,R22
clr R31
add R30,R20
adc R31,R21
ldd R16,z+0
xcall _wr_lcd
L106:
.dbline 313
inc R22
L108:
.dbline 313
; for(i=0;i<16;i++) wr_lcd(p[i],0);
cpi R22,16
brlo L105
.dbline 314
; break;
L86:
L87:
.dbline -2
L85:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 22 c
.dbsym r row 22 c
.dbsym r p 20 pc
.dbend
.dbfunc e Lcd_backwhite _Lcd_backwhite fV
; line -> R20
.even
_Lcd_backwhite::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 331
; }
; }
; }
;
;
; /*********************************************************************************************************
; ** 函数名称: void Lcd_backwhite(unsigned char line)
; ** 功能描述: 反白显示
; ** 输 入: unsigned char row 要反白显示的行 row=0,1行3行反白显示 row=1,二行四行反白显示
; ** 输 出:
; ** 全局变量: 无
; ** 调用模块: 无
; ** 说明:
; ** 注意:
; *******************************************************************************************************/
; void Lcd_backwhite(unsigned char line)
; {
.dbline 332
; wr_lcd(Lcd_Set_Function_Extend,1);
ldi R18,1
ldi R16,52
xcall _wr_lcd
.dbline 333
; wr_lcd(Lcd_Back_White+line,1);
ldi R18,1
mov R16,R20
subi R16,252 ; addi 4
xcall _wr_lcd
.dbline 334
; wr_lcd(Lcd_Set_Function_Basic,1);
ldi R18,1
ldi R16,48
xcall _wr_lcd
.dbline -2
L109:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r line 20 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -